GDB - 如何找出程序退出的位置

时间:2011-06-16 18:37:39

标签: gdb

在GDB中调试程序时,我得到一个意外退出的“程序正常”。所以我想知道是否有办法找出程序退出的地方(哪一行)。

程序是多线程的,如果重要的话。

3 个答案:

答案 0 :(得分:11)

您可以尝试使用GDB命令break exit在exit(2)库调用上设置断点。如果这不能满足您的需求,可能会break _exit。在获得后一个断点之前,您可能需要使用'sta'启动程序。在任何一种情况下,您都应该能够使用where命令来获取堆栈跟踪,以显示程序何时决定退出的位置。

答案 1 :(得分:7)

通常在应用程序执行完毕后使用以下命令:

(gdb) thread apply all bt

当然,如果您想知道确切的行,您必须使用调试符号编译您的应用程序,即-g

答案 2 :(得分:3)

在_exit上设置断点,然后检查堆栈。