是否可以配置GDB,使其在正常程序终止时自动退出? 我在OSX上调试了一个shell脚本,中间有神秘的Sebug。如果在脚本之外执行,则有问题的命令不会出错

是否可以配置GDB,使其在正常程序终止时自动退出? 我在OSX上调试了一个shell脚本,中间有神秘的Sebug。如果在脚本之外执行,则有问题的命令不会出错,gdb,Gdb,所以我需要以某种方式运行脚本中连接了GDB的所有程序,以便调试这个错误。是否可以配置GDB,以便在程序正确终止时运行程序并退出?我尝试了以下代码: echo file ifconfig > gdbcfg echo run >> gdbcfg echo quit >> gdbcfg gdb -x gdbcfg 但这不起作用,因为GDB尝试在应用程序正常终止之前执行quit命令:(。是否可以指示GDB等待应用程序正常终止,然后退出 也许我的方法太复杂了,只是一些GDB

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

echo file ifconfig > gdbcfg
echo run >> gdbcfg
echo quit >> gdbcfg
gdb -x gdbcfg
但这不起作用,因为GDB尝试在应用程序正常终止之前执行
quit
命令:(。是否可以指示GDB等待应用程序正常终止,然后退出


也许我的方法太复杂了,只是一些GDB标志,比如“加载并运行这个应用程序,如果一切正常就退出”

为什么不让进程转储一个核心文件,然后用GDB分析它呢?我的意思是ulimit-c unlimited,然后(在转储核心后)GDB./process core

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

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

echo file ifconfig > gdbcfg
echo run >> gdbcfg
echo quit >> gdbcfg
gdb -x gdbcfg
一种更单一的拼写方式是:

echo >gdbcfg <<EOF
file ifconfig
run
quit
EOF

gdb -x gdbcfg

echo>gdbcfg我不太擅长使用nix工具链,所以这种方法在技术上对我来说很难,问题太多了。我不知道如何让shell脚本在第一个segfault之后停止(以及第一个segfault之后的后续segfault在哪里)。我不知道如何正确地转储core并将其加载回GDB。因此,我认为在每个应用程序启动之前使用shell脚本并侵入GDB将是最简单的解决方案:)。ulimit-c unlimited将强制崩溃进程转储名为“core”的core文件。您可以让脚本在每个命令后检查“core”文件,如果存在则退出(如果[-f core];然后退出;fi)。然后,只需使用第一个参数(崩溃的进程)和第二个参数(核心文件名(“core”)运行gdb。仅此而已。抱歉,这是发布在这里的代码示例中的一个输入错误。实际的文件是用vi编辑的,并且有所有3个命令:(P.S.аааааааааааааааааа,азааааааа1072