作者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