debugging - 帮助 gdb 调试崩溃日志记录

标签 debugging logging crash gdb

我一直在 GDB 中调试(C 代码)。问题是如果我运行我的应用程序并且它崩溃,控件将返回到 main()(应用程序重新启动)。因此将不知道它在哪里坠毁。所以我花了很多时间来逐步完成每个功能。

我想知道是否有一个日志可以启用,它会在崩溃前生成最后一行执行。这只是我的假设,如果有任何其他更简单的方法,请告诉我,这会为我节省大量时间!

此外,如果 gdb 生成日志,路径在哪里?

提前致谢。

最佳答案

这个问题对我来说有点不清楚,但我会试一试:

如果您在崩溃时将 GDB 附加到崩溃进程,崩溃应该会停止程序并将您返回到 (gdb) 提示符。如果您随后键入 bt,您应该会看到堆栈。

如果您没有附加 GDB, 然后 this answer to a related question可能有帮助。 (简而言之,也许您希望系统在程序崩溃时创建核心转储。核心转储只是一个文件,其中包含有关崩溃进程的大量信息。您可以使用带有核心转储的 GDB 来查看堆栈。 )

如果您不知道发生这种情况时发布您在屏幕上看到的内容,我们会猜测。

无论如何,程序绝对不应该从 main() 开始。似乎值得追查为什么会发生这种情况以及究竟发生了什么。控制是否真的跳转到 main 在同一进程中,而不是另一个进程以某种方式自动启动?

关于debugging - 帮助 gdb 调试崩溃日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4321184/

相关文章:

代码:: block 崩溃:进程返回(0xC0000005)

Perl:创建哈希时程序崩溃

multithreading - Visual Studio 2015+修改所有断点的条件

debugging - 当底层作业成功完成时,Oozie 工作流在 Hive 作业上出错

c++ - 为什么字符 ÌÌÌÌ 卡在我的字符串开头?

java - 我如何在Java中进行定时器登录并分析结果?

ios - 应用程序启动时令人费解的崩溃

reactjs - React Native 未调用触摸处理程序

java - 如何将 ExpressionFilter 迁移到 log4j2?

python - 更改外部包的记录器类