日期:2014-05-16  浏览次数:20664 次

gdb调试问题
1、在不同文件中设置断点
Test
  -prj
  -source
  -include


 编译出的可执行文件tst在prj中,.h在include中 .cpp文件在source中

 gdb tst
 directory ../source
 break snmp.cpp:381

 (gdb) break snmp.cpp:381
 No source file named snmp.cpp.



b CSnmp::Send(int i); 是可以成功的 其实snmp.cpp:378就是这个函数,但是我需要断在这个函数里的某行所以还是需要break snmp.cpp:381 但是就是不行


2、进入一个函数的命令是s 那么出这个函数的命令是???
3、我有可执行程序tst和tst所需要的N个库文件的源代码,请问调试库需要怎么设置(比如 像VC中的依赖关系)
4、gdb如何保存我之前设置的调试规则比如之前说的依赖关系,设置过断点的保存等等





------解决方案--------------------
楼主去找些GDB的资料看看吧!
------解决方案--------------------
1、
我测试程序时,直接 break 文件名:行数 
即使是这些源码文件被编译成动态库,也能成功设定断点。
当然,编译时,加上了选项: -g


在381行之前,加个sleep(2),调试时,当你的程序停顿了,按ctrl+c,中断程序,之后,输入l,回车,看源码,这时,显示的源码应该有CSnmp::Send(int i)这行,直接break + 行数。

2、进入一个函数的命令是s 那么出这个函数的命令是???
step ,用finish直接跳出当前所在函数。

3、调试库的话,就直接调试可执行程序tst,如果出错的地方是库中的,那就是库中的代码运行出错,出错后,用back命令看出错前都调用了哪些函数。

4、这个,没经验,之前考虑到这问题。