使用GDB調試程序時,我一直在調試模式下停止程序時遇到問題。當我進行回溯時,我發現它深藏在專有的第三方庫調用堆棧中,我正在尋找爲什麼程序已停止。我仍然只是GDB初學者,所以我仍然不確定如何做到這一點。回顧一下,我發現「__cxa_throw()來自/usr/lib64/libstdc++.so.6」,所以我假設拋出了某種異常,但我想知道如何獲得更多關於它的信息,如果可能。如何找出gdb停止的原因
2
A
回答
0
如何找出爲什麼GDB已經停止
GDB通常會告訴你馬上,例如
Program received signal SIGABRT, Aborted.
0x00007ffff7750425 in __GI_raise (sig=<optimized out>)
程序因爲接收到信號而停止。
我發現它在專有的第三方庫調用堆棧中很深,我正在尋找爲什麼程序停止了。
它已停止正好由於GDB告訴你的原因。
看着回溯,我注意到
__cxa_throw() from /usr/lib64/libstdc++.so.6
所以我假設拋出了某種異常,但我想知道如何獲得更多關於它的信息。
的__cxa_throw
存在確實表明,異常被拋出(和std::terminate()
存在表明它是未捕獲的異常)。
而無需爲第三方庫的調試信息,你找到了事業的選擇是有限的:
- 你可以閱讀這方面的文檔庫,並仔細檢查你有沒有違反任何先決條件,它要求
- 您可以反彙編調用
__cxa_throw
的例程,並確定該例程被調用的原因。
1
相關問題
- 1. Android:如何找出「可惜已停止」的原因?
- 2. SQL查詢停止工作,無法找出原因
- 3. Spring WebSocket停止工作,如何找到原因?
- 4. MongoDB停止不明原因
- 5. 如何找出AppCrash的原因?
- 6. 如何找出Android中SIGSEGV的原因
- 7. 如何找出GetObject失敗的原因?
- 8. 刪除[]失敗,如何找出原因?
- 9. Windows服務停止的原因
- 10. 訪問slurm停止工作的原因
- 11. 查找我的應用程序停止的原因,Android
- 12. GDB如何停止執行其他進程? GDB如何工作?
- 13. Eclipse停止運行原因=「斷點」
- 14. 如何讓GDB停止斷言失敗?
- 15. Akka DeathWatch - 找到終止的原因
- 16. 如何找出Python中出現警告的原因?
- 17. 如何找出我超出AWS EC2請求限制的原因?
- 18. Mod_security有時會阻止我的ajax腳本 - 我如何找出原因?
- 19. 如何獲取禁止(')的「原因」?
- 20. gdb不停止在斷點
- 21. GDB斷點不會停止
- 22. 找出引起什麼的原因java.security.AccessControlException
- 23. 找出緩慢Rails請求的原因
- 24. InnoSetup:找出重新啓動的原因
- 25. ob_get_contents因某些未知原因停止工作
- 26. 如何找到ActiveRecord的原因ROLLBACK
- 27. 如何找到com.sun.star.uno.RuntimeException的真正原因?
- 28. 如何找到延遲的原因?
- 29. 如何找到OutOfMemoryError的原因?
- 30. gdb附加過程原因mach_msg_trap()
gdb「向上」命令可讓您將焦點移到調用堆棧的更高一級。如果您在代碼存在的例外之前移動到某個點,您可以看到當時正在執行的操作(並希望確定您是否調用了具有錯誤數據的函數)。 – mah
我這樣做,我的代碼中的一切似乎都很好(至少根據他們的文檔)。 – Brian