存档

文章标签 ‘gdb’

gdb无法查看变量的解决办法

2015年9月22日 没有评论

gdb是调试c/c++程序的重要手段,为了在调试中看到变量的值,我们需要:

  • 编译时打开调试开关:-g
  • 不要使用任何优化选项:去掉所有的-O

通常情况下这样做就行了,可有时候还是会出现“No symbol foobar in current context”这样的问题,可能是编译器将变量存放在寄存器内导致的。

解决办法为

  • 设置调试输出格式:-gstabs+
  • 在64位机器上更好的输出格式选项:-gdwarf-2

另,通过print查看字符串变量的值时,如果字符串太长,默认只显示部分字符串。可以通过set print elements 0来显示完整的字符串。

分类: C/C++, 资料 标签: ,

gdb调试子进程

2015年9月10日 没有评论

我们用gdb调试程序通常有两种途径:

1.使用gdb启动程序,直接在里面加断点调试

2.通过gdb attach pid附着到运行的程序中

对于多进程的情况,如果子进程启动的比较快,运行gdb时,你想要观察的断点处已经被运行过,那么就很难调试子进程了。

gdb有个选项set follow-fork-mode child,可以方便的调试子进程。方法:

1.gdb启动程序

2.set follow-fork-mode child

3.加断点,run

新技能,Get it!

分类: C/C++, 资料 标签: