嵌入式開發(fā) - GDB調(diào)試Coredump問題

這里介紹如何用Coredump文件查找崩潰的位置,使用的工具是gdb。另外一種調(diào)試Coredump問題的方便的辦法,是使用backtrace()等相關函數(shù)。

1. 生成Debug版本軟件包

使用選項CMAKE_BUILD_TYPE編譯工程生成程序和庫。

$ cmake -DCMAKE_BUILD_TYPE=Debug .

用cpack工具生成軟件包mypkg.tar.gz。

$ cpack -c CPackConfig.cmake

2. 設置Linux生成Core

core文件的名稱格式是core - <程序名> - <pid>。

$ ulimit -c unlimited
$ echo core-%e-%p > /proc/sys/kernel/core_pattern

3. 生成Core文件

  • 在目標板上解開mypkg發(fā)布包:
/opt/mypkg/bin
/opt/mypkg/lib
  • 運行軟件包,得到core文件,并復制回宿主機。如:
/home/ronzheng/core.myapp.1234

5. 調(diào)試

  • 在宿主機中解開mypkg.tar.gz,解開的位置應該包含目標板上位置的全路徑,這里是/opt/mypkg。
/home/ronzheng/opt/mypkg
  • 加載app和core。
$ arm-linux-gnueabi-gdb /home/ronzheng/opt/mypkg/bin/myapp /home/ronzheng/core.myapp.1234
  • 加載動態(tài)庫的符號

設置sysroot:

(gdb) set sysroot /home/ronzheng

查看動態(tài)庫是否加載成功。

(gdb) info sharedlibrary
  • 查看coredump的位置
(gdb) bt

相關鏈接

GDB 常用法
GDB 調(diào)試Coredump問題
嵌入式開發(fā)中GDB調(diào)試Coredump問題
嵌入式開發(fā)中GDB串口遠程調(diào)試
用backtrace()調(diào)試coredump問題
Valgrind memcheck 用法
Address Sanitizer 用法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容