作者fu3mo6 (ㄚ龐)
看板EE_DSnP
標題[問題] 如何用gdb除錯
時間Tue Oct 26 16:26:36 2010
作業二一直卡關
想知道各個變數的變化情況
ddd一直當,所以想用gdb除錯看看
但是,這次的作業main裡面沒有太多東西
大部分都在cmdReader.cpp裡面
試著用"display cmd::..."沒用,都說找不到cmd這個東西
也不知道要怎麼在cmdReader裡面設breakpoint或interrupt
總是只能按ctrl-c然後整個程式就結束了看不到甚麼
請問老師像這種情況該用甚麼指令?怎麼使用debugger?
(其實這些問題在ddd裡面也是一樣啦...
現在還是只會使用cout大法除錯
但在這個程式裡會出很多問題...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.227.89.147
2F:推 dryman:記得要先隨便設個breakpoint(ex main),run之後才會載入 10/26 16:52
3F:→ dryman:一些symbol...這時才能設display xxx 10/26 16:52
4F:推 scuendless:可以設 break CmdParser::函式名稱 之後再用continue 10/26 17:27
5F:→ scuendless:或step 下去看 10/26 17:27
6F:推 MrOrz:list CmdReader::readCmd 之類的 可以讓 gdb 顯示該函式 10/26 21:03
7F:→ MrOrz:這個時候用「b cmdReader.cpp的行號」就可以設中斷點了。 10/26 21:04
8F:→ MrOrz:例如說我要設中斷點在 cmdReader.cpp 的第201行 10/26 21:05
9F:→ MrOrz:然後那行在 CmdParser::deleteLine 函式的裡面 10/26 21:06
10F:→ MrOrz:就在gdb裡 list CmdReader::deleteLine (還可以用tab補齊) 10/26 21:07
11F:→ MrOrz:然後 b 201 10/26 21:07
12F:→ MrOrz:run 的時候就會停在 201 行。 10/26 21:07
13F:推 ric2k1:嗯,有兩種方法設 break point: 10/26 21:10
14F:→ ric2k1:(1) b <lineNumber> --> 會停在 <lineNumer> 那行 10/26 21:10
15F:→ ric2k1:(2) b className::memFunc --> 會停在 member function 10/26 21:11
16F:→ fu3mo6:謝謝大家的回覆!!我找到問題所在了 10/26 22:21
17F:推 johnjohnlin:印象中 b <file name>:<line number> 也行? 10/26 23:03