是否可以配置GDB以便在正常的程序终止时自动退出?

时间:2012-03-13 16:14:00

标签: gdb

我在OSX上调试一个shell脚本,中间有一个神秘的段错误。如果在脚本之外执行,则该命令不会出现段错误。

所以我需要以某种方式运行所有附加GDB的脚本程序,这样我就可以调试这个段错误了。是否可以配置GDB以便它运行程序并在程序正确终止时退出?我尝试了以下代码:

echo file ifconfig > gdbcfg
echo run >> gdbcfg
echo quit >> gdbcfg
gdb -x gdbcfg

但是这不起作用,因为GDB在应用程序正常终止之前尝试执行quit命令:(。是否有可能以某种方式指示GDB等待应用程序正常终止并在此之后退出?

也许我的方法过于复杂而且它只是一些GDB标志,例如“加载并运行此应用程序,如果一切正常则退出”?

2 个答案:

答案 0 :(得分:1)

为什么不让进程转储核心文件并稍后使用gdb进行分析?我的意思是ulimit -c unlimited,然后(在核心被转储之后)gdb ./process core?

答案 1 :(得分:1)

  

但是这不起作用,因为GDB在应用程序终止之前尝试执行quit命令

否:它不起作用,因为(假设你粘贴了实际的代码)gdbcfg在执行命令后包含一个quit(并且没有{{1} })。你想要的是:

run

更为UNIX的拼写方法是:

echo file ifconfig > gdbcfg
echo run >> gdbcfg
echo quit >> gdbcfg
gdb -x gdbcfg

更新

如果echo >gdbcfg <<EOF file ifconfig run quit EOF gdb -x gdbcfg 的文件内容包含所有三个命令,那么您对问题的理解是不正确:GDB将等待每个命令完成后再执行下一个命令。