Linux学习笔记-gdb调试的补充说明

版权声明:本文为博主原创文章,未经博主允许不得转载。 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的使用场合

适用的场合:
‐ 单元测试(较短的代码,功能单纯的函数)
‐ 段错误的定位
不太适用的场合:
‐ 大型程序,尤其是程序中使用了多线程
‐ 单步调试的时候问题无法复现,只能在正常运行的时候复现
(使用打印调试)

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/82156224