作者dryman (dryman)
看板EE_DSnP
标题[心得] 用gdb查看stl容器
时间Tue Nov 10 12:21:05 2009
gdb对stl支援不太好
不过上网找到了一个不错的教学:
http://0rz.tw/ABcvK
下载.gdbinit,存在~/.gdbinit就行了
要看一个map存放的东西时
语法为pmap <member name> <type first> <type second>
不过gdb对string的支援也不太好
所以要用char*来取代string
Ex:
(gdb) pmap _cmdMap char* CmdExec*
elem[0].left: $21 = 0xa01c124 "HIS"
elem[0].right: $22 = (HistoryCmd *) 0xa01c0d8
elem[1].left: $23 = 0xa01c0ac "Q"
elem[1].right: $24 = (QuitCmd *) 0xa01c048
Map size = 2
(gdb)
这样trace bug就比较容易啦~心
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.4.234
1F:推 ric2k1:嗯嗯, 应该是蛮有用的, 不过是不是无法 (1) 指定 print 某 11/10 21:42
2F:→ ric2k1:一个 element, (2) display to watch the changes? 11/10 21:43
3F:→ ric2k1:除非是像 "graph display $22" 之类的... 11/10 21:43
4F:推 timrau:根据所提供档案内容,(1)可以,(2)要看gdb有没有办法 11/10 23:21
5F:→ timrau:进行formatted "display" instead of "print" 11/10 23:21
6F:→ dryman:(2)不行 不过还好在这个case中stl member都会一直变化 11/10 23:29
7F:→ dryman:不用一直trace 11/10 23:30
8F:推 ric2k1:(1) 可以吗? 哪一个 command, 我怎麽没看到? 11/10 23:59
9F:推 timrau:pmap <map> <TypeLeft> <TypeRight> <valLeft> 11/11 07:30
10F:→ dryman:楼上的<map>=<map member name> 11/11 08:15