gdb调试通过core文件找出程序在哪里挂了

开发中有时会遇到程序本身编译没有错,但是就是不能运行的情况,让人纠结,下面通过一个例子说说如何通过core文件查看函数调用栈从而找出问题所在。

代码如下:

gdb调试通过core文件找出程序在哪里挂了

错误提示:

gdb调试通过core文件找出程序在哪里挂了

程序逻辑上并没有错误,下面看调试过程:

gdb调试通过core文件找出程序在哪里挂了

终端执行时发现有错误 core dump,查看是否产生core文件,通过gdb调试core文件

gdb调试通过core文件找出程序在哪里挂了

bt命令查看函数调用栈,找到自己写的地方,就可以看到哪条语句让程序挂了,这个例子中是#5的malloc有

问题,于是查看这条语句

gdb调试通过core文件找出程序在哪里挂了

由此可知malloc分配的内存为0,找出问题所在,在回到代码中找错误即可。