c++ - 没有用户输入的gdb回溯?

标签 c++ linux bash gdb

我想知道是否可以通过 GDB 启动应用程序,在 SegFault 上将回溯写入文件(稍后查看),然后在没有任何用户输入的情况下退出 GDB。

在从非交互式 session 启动操作系统时,我正在无限循环中从 shell 脚本运行应用程序(因此,如果它崩溃,它会重新加载)。该应用程序以不可重现的方式崩溃,因此我需要从崩溃中回溯以调试问题。理想情况下,我只需修改 shell 脚本以包含 GDB 调试 + 回溯功能,并保留崩溃后应用程序的自动重启。

这可能吗?

最佳答案

感谢 Aditya Kumar;可接受的解决方案:

gdb -batch -ex "run" -ex "bt" ${my_program} 2>&1 | grep -v ^"No stack."$

如果程序需要参数:

gdb -batch -ex "run" -ex "bt" --args ${my_program} param1 param2 \
                              param3 ... 2>&1 | grep -v ^"No stack."$

关于c++ - 没有用户输入的gdb回溯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20179153/

相关文章:

c++ - 无法理解这个SEGFAULT

linux - 如何部署 Mono 应用程序?

c++ - 继承类中的构造函数调用

C++ 模板 : How to conditionally compile different code based on data type?

c++ - 将 int 插入 vector 时出错

bash - bash(配置文件)中类似数组的数据结构?

linux - 如何提示用户输入 sudo 密码?

c++ - 通用 Controller 的优雅方式(基于 GUI 的应用程序)

c - 在 Linux 中将 MATLAB 输出与 C/C++ 程序集成

bash - ubuntu 上 Ratpoison 的电池状态命令