本文并未详细说明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,可以参考下边的博客,前面几章用于入门还是不错的,后面可以慢慢看,慢慢提高。