Segmentation fault(core dumped) 調試


ReadingList:

  • https://mytechrants.wordpress.com/2009/05/22/debugging-a-segmentation-fault-using-gdb/
  • https://wiki.archlinux.org/index.php/Step-by-step_debugging_guide
  • http://www.cprogramming.com/debugging/segfaults.html

簡述:

  1. 首先在編譯生成程序的時候要使用“-g”選項使得編譯文件帶有調試信息,若果沒有調試信息,gdb無法工作
    gcc -g -o hello hello.c
  2. 使得Linux可以在段錯誤時生成的core dump文件大小無限
    ulimit -c unlimited
  3. 運行可能出錯的程序,直到出現“Segmentation fault(core dumped)”信息,這是在程序工作目錄下會生成一個core文件
  4. 用gdb分析core文件
    gdb {executable} {dump file}
    
    eg. gdb hello core.1324
  5. 如果gdb調試符號正常加載,查看堆棧,找到出錯位置(哪個函數,哪個文件,哪一行出錯)
    (gdb) bt   //查看出錯時的堆棧
    (bt = backtrace .. prints stack strace)
  6. 還可以分析每個棧幀frame中的變量情況
    (gdb) frame {num}
    eg. (gdb) frame 2

    and use:
    (gdb) info locals //查看局部變量
    (gdb) info args //查看參數
  7. 通過以上步驟,可以定位到出錯位置,找出出錯原因。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM