我一直在 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/