2012-01-04 51 views
1

我有一個在Linux中運行的程序,它一直在神祕地崩潰。我已經知道了一種方法來知道它在哪裏崩潰是使用GDB。但我不想每次重新啓動時都附加到它上面(因爲我正在測試它,所以要做很多)。有沒有其他方法可以做到這一點?如何知道Linux中程序崩潰的地址?

回答

5

首先使用ulimit -c unlimited允許崩潰的程序寫入核心轉儲。

程序崩潰後,如果程序是多線程的,您會發現核心轉儲文件corecore.<pid>

您可以將其加載到GDB中以檢查崩潰時的狀態,其中gdb program core

3

您可以配置您的操作系統以在程序崩潰時轉儲核心文件。然後,您可以檢查覈心以確定崩潰位置。

4

首先做一個ulimit -c unlimited,所以程序會留下核心轉儲。 然後,當它崩潰時,調用gdb以及核心轉儲,以便在崩潰時讀取程序的 狀態。

+0

是的。我的一個錯字。我會解決它。 – 2012-01-05 08:11:44

2

- >編譯啓用了gdb標誌的代碼。

的gcc -o <二進制名稱> -g < file.c>(假設它是一個C/C++程序)

- >運行可執行withing GDB。 gdb <二進制名稱>

此後有辦法找到崩潰位置: 1.逐步執行。 2.運行代碼,它崩潰(按預期),在gdb中輸入「where」(不帶引號)它會給出回溯。從那裏,你可以找到地址。

這是gdb的快速指南:http://www.cs.cmu.edu/~gilpin/tutorial/