[英]How to know what address a program in Linux crashes at?
我有一個在Linux上運行的程序,它崩潰了。 我已經知道了解崩潰的一種方法是使用GDB。 但是我不想每次重新啟動時都附加到它上(因為我正在測試它,所以要做很多事情)。 有替代方法嗎?
首先使用ulimit -c unlimited
允許崩潰的程序編寫核心轉儲。
程序崩潰后,您將找到一個名為core
或core.<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.