版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq78442761/article/details/82156224
gdb调试的补充说明
程序运行截图如下:
源码如下:
#include <stdio.h>
void test(int i){
if(i==0){
return;
}
printf("The value is %d\n",i);
test(--i);
}
int main(){
test(25);
return 0;
}
当程序编译时带‐g选项时,程序才可以被调试实际上,当以‐g选项编译时,编译器将"调试信息"加在了目标程序里,因此,目标程序的体积将显著变大
比较输出的目标程序的体积:
g++ ‐g main.cpp ‐o helloworld
g++ main.cpp ‐o helloworld
体积如下所属:
判断一个程序是否带有“调试信息”
一:objdump ‐h helloworld
有debug信息就可以调试
第二种方法:
gdb helloworld
如果调试信息,会提示:
Reading symbols from helloworld...(no debugging
symbols found)...done.
如下:
gdb的使用场合
适用的场合:
‐ 单元测试(较短的代码,功能单纯的函数)
‐ 段错误的定位
不太适用的场合:
‐ 大型程序,尤其是程序中使用了多线程
‐ 单步调试的时候问题无法复现,只能在正常运行的时候复现
(使用打印调试)