首页 文章

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

提问于
浏览
0

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

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

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

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

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

2 回答

  • 1

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

  • 1

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

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

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

    一种更为UNIX的拼写方法是:

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

    更新:

    如果 gdbcfg 的文件内容包含所有三个命令,那么您对问题的理解是不正确的:GDB将在执行下一个命令之前等待每个命令完成 .

相关问题