使用gdb查看exit和_exit调用

简介: 通篇假设未曾使用过gdb,一般的发行版都会携带这个工具,要是没有,只能自己找找,如何安装了。 本文并未详细说明exit(_exit)里边详细过程,只是表述如何进入。 测试代码如下: #include <stdio.h> #include <stdlib.h> void func() {      printf("atexit ");
通篇假设未曾使用过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,可以参考下边的博客,前面几章用于入门还是不错的,后面可以慢慢看,慢慢提高。



相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
IDE 开发工具 C++
VS2015+Qt5.9.8编译报错:error MSB6006: “cmd.exe”已退出,代码为 2
VS2015+Qt5.9.8编译报错:error MSB6006: “cmd.exe”已退出,代码为 2
2735 0
|
3月前
|
C语言 Python
exit、quit、sys.exit、os._exit,这么多退出方式,它们之间有什么区别呢?
exit、quit、sys.exit、os._exit,这么多退出方式,它们之间有什么区别呢?
69 0
|
7月前
|
C语言
exit与return的区别 exit(1)、exit(-1)和exit(0)区别
exit与return的区别 exit(1)、exit(-1)和exit(0)区别
|
IDE 开发工具 Python
python exit() sys.exit() os._exit()区别
python exit() sys.exit() os._exit()区别
52 0
End Sub 和 Exit Sub 的区别
End Sub 和 Exit Sub 的区别
149 0
End Sub 和 Exit Sub 的区别
|
Shell
Shell 中断与退出(continue、break、exit)
Shell 中断与退出(continue、break、exit)
243 0
|
Python
pychram中提示:Process finished with exit code 0
"Process finished with exit code 0" 是PyCharm中的提示信息,表示程序已经成功地执行完毕并且没有发生任何错误。在PyCharm中,当程序正常终止并返回退出代码0时,这个消息会在控制台中显示。 在PyCharm中运行程序时,它会在一个单独的进程中执行,当程序完成执行后,它会向操作系统返回一个退出代码。退出代码0表示程序成功执行完毕,而非零的退出代码通常表示错误或异常终止。 当出现"Process finished with exit code 0"的提示时,意味着你的程序已经成功地执行完毕,没有发生任何错误或异常情况。你可以通过检查程序输出或任何其他预
1986 0
|
Perl
Command PhaseScriptExecution failed with a nonzero exit code问题解决
在某次pod install后,run项目出现以下错误
709 0
|
缓存 Linux
exit() 函数和 _exit() 函数
exit() 函数和 _exit() 函数
183 0
exit() 函数和 _exit() 函数
|
C++
ERROR: Command errored out with exit status 1:
ERROR: Command errored out with exit status 1:
324 0
ERROR: Command errored out with exit status 1: