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