簡體   English   中英

如何知道Linux中的程序崩潰的地址?

[英]How to know what address a program in Linux crashes at?

我有一個在Linux上運行的程序,它崩潰了。 我已經知道了解崩潰的一種方法是使用GDB。 但是我不想每次重新啟動時都附加到它上(因為我正在測試它,所以要做很多事情)。 有替代方法嗎?

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

程序崩潰后,您將找到一個名為corecore.<pid>的核心轉儲文件(如果您的程序是多線程的)。

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

首先執行ulimit -c unlimited ,這樣程序將離開核心轉儲。 然后,當它崩潰時,請使用核心轉儲調用gdb以在崩潰時讀取程序的狀態。

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

->在啟用gdb標志的情況下編譯代碼。

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

->使用gdb運行可執行文件。 gdb <二進制名稱>

之后,有幾種方法可以找到崩潰位置:1.逐步執行。 2.運行代碼,它崩潰(按預期方式),在gdb中鍵入“ where”(不帶引號),它給出回溯。 由此,您可以找到地址。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM