我有一個在Linux中運行的程序,它一直在神祕地崩潰。我已經知道了一種方法來知道它在哪裏崩潰是使用GDB。但我不想每次重新啓動時都附加到它上面(因爲我正在測試它,所以要做很多)。有沒有其他方法可以做到這一點?如何知道Linux中程序崩潰的地址?
1
A
回答
5
首先使用ulimit -c unlimited
允許崩潰的程序寫入核心轉儲。
程序崩潰後,如果程序是多線程的,您會發現核心轉儲文件core
或core.<pid>
。
您可以將其加載到GDB中以檢查崩潰時的狀態,其中gdb program core
。
3
您可以配置您的操作系統以在程序崩潰時轉儲核心文件。然後,您可以檢查覈心以確定崩潰位置。
4
首先做一個ulimit -c unlimited
,所以程序會留下核心轉儲。 然後,當它崩潰時,調用gdb
以及核心轉儲,以便在崩潰時讀取程序的 狀態。
2
- >編譯啓用了gdb標誌的代碼。
的gcc -o <二進制名稱> -g < file.c>(假設它是一個C/C++程序)
- >運行可執行withing GDB。 gdb <二進制名稱>
此後有辦法找到崩潰位置: 1.逐步執行。 2.運行代碼,它崩潰(按預期),在gdb中輸入「where」(不帶引號)它會給出回溯。從那裏,你可以找到地址。
這是gdb的快速指南:http://www.cs.cmu.edu/~gilpin/tutorial/
相關問題
- 1. 不知道爲什麼程序崩潰
- 2. 如何知道進程是否已在Linux中啓動但崩潰
- 3. Vista - 程序崩潰通知
- 4. Bash - 如何知道我的Linux服務器IP地址?
- 5. 本地Java崩潰Linux
- 6. 智能指針如何知道何時釋放程序崩潰時的資源?
- 7. 複選框,崩潰的應用程序不知道爲什麼
- 8. 如何知道堆結束的地址?
- 9. 如何知道我的程序上次運行時是否崩潰?
- 10. 我的應用程序保持崩潰,我不知道如何修復它?
- 11. 應用程序崩潰,不知道爲什麼
- 12. C程序崩潰,不知道爲什麼?
- 13. 應用程序崩潰,不知道爲什麼?
- 14. 如何知道爲什麼應用程序在模擬器崩潰
- 15. 通知崩潰應用程序
- 16. Android程序崩潰信號11和故障地址
- 17. 獲取地址簿權限崩潰應用程序iOS
- 18. 程序崩潰時,我試圖找到MAC地址
- 19. 如何知道我的媒體爲何在Chromecast上崩潰?
- 20. 程序崩潰
- 21. 本地通知應用程序崩潰,模擬器
- 22. iPhone應用程序崩潰本地通知
- 23. iOS10上的地址簿崩潰
- 24. 線程如何知道共享變量的地址
- 25. 我如何知道Git存儲庫的遠程地址?
- 26. Android類崩潰,不知道爲什麼
- 27. 使用管道分岔過程中的程序崩潰
- 28. Vista上的SBCL崩潰。你知道如何使它工作嗎?
- 29. 只知道MAC地址
- 30. 如何知道使用C,Linux,Socket的服務器的各種IP地址?
是的。我的一個錯字。我會解決它。 – 2012-01-05 08:11:44