首页 > 代码库 > 使用gdb查看exit和_exit调用

使用gdb查看exit和_exit调用

通篇假设未曾使用过gdb,一般的发行版都会携带这个工具,要是没有,只能自己找找,如何安装了。

本文并未详细说明exit(_exit)里边详细过程,只是表述如何进入。

测试代码如下:

#include <stdio.h>
#include <stdlib.h>

void func()
{
     printf("atexit ");
}

int main(int argc, char* argv[])
{
     atexit(func);
     printf("stdio ");
     printf("exit ");

     exit(0);
}

将其输入test.cc当中

编译 
>> g++ -g -o test test.cc

启动gdb调试
>> gdb test

显示下代码输入list或者首字母l
>> l

显示如图:




在第19行处打上断点,输入break或者b
>> break 19

运行
>> run

运行之后,运行到断点处暂停,等待输入新的命令(如果不是显示如图,可以查看本文最后部分)




有两个命令,一个是next,一个是step。next会跳到下一步,step会进入到这个函数中(相当于VS上的F10和F11)
>> s

输入s手就可以跟踪了,接下来可以按照需求选择next或者step。

有一个便利的地方是,当输入一个命令后,直接按回车键,默认输入上一个命令。

退出调试
>> quit


如果是第一次调试,往往都会缺一些环境:




解决方案:

切换成root用户,将use后的部分复制,即 debuginfo-install ...
然后在终端上粘贴运行,就如同yum install。

如果准备详细学习gdb,可以参考下边的博客,前面几章用于入门还是不错的,后面可以慢慢看,慢慢提高。

http://blog.csdn.net/haoel/article/details/2879


使用gdb查看exit和_exit调用