吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何用addr2line去debug

麥辣雞腿堡 ? 來源:嵌入式Linux系統開發 ? 作者:嵌入式Linux系統開 ? 2023-07-30 10:20 ? 次閱讀

Linux 下寫 C/C++ 程序的程序員,時常與 Core Dump 相見。在內存越界訪問,收到不能處理的信號,除零等錯誤出現時,我們精心或不精心寫就的程序就直接一命嗚呼了,Core Dump 是 Linux 仁慈地留下的程序的尸體,幫助程序員們解決了一個又一個問題。

有時配置不給力,Linux 直接毀尸滅跡,沒有了 Core 文件;又有時,剛好磁盤空間不足,Core文件寫不下了。沒有 Core 文件的時候,如何知道程序在什么地方出錯了呢?addr2line 就在這時派上用場。

這是一個示例程序,func 函數返回參數 a 除以參數 b 的結果。這里使用 0 作為除數,結果就是程序因為除以 0 導致錯誤,直接中斷了。

test.c

#include < stdio.h >
 
int func(int a, int b)
{
  return a / b;
}
 
int main()
{
  int x = 10;
  int y = 0;
  printf("%d / %d = %dn", x, y, func(x, y));
  return 0;
}

編譯:-o 指定輸出文件名,-g 會有調試信息。

gcc -o test -g test.c

執行

./test

提示執行錯誤

圖片

輸入 dmesg 命令,查看 log,提示如下:

traps: test[2184] trap divide error ip:400534 sp:7ffee5779a90 error:0 in test[400000+1000]

ip 字段后面的數字就是 test 程序出錯時所程序執行的位置。使用 addr2line 就可以 將 400534 地址轉換出對應的文件及行數

圖片

可知,程序在執行到 test.c 文件第五行的時候,執行出錯,我們檢查第五行代碼。

return a / b;

這里除 0 肯定是不行的,addr2line 幫助我們找到了錯誤位置。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5093

    文章

    19178

    瀏覽量

    307717
  • 內存
    +關注

    關注

    8

    文章

    3055

    瀏覽量

    74337
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62399
  • DEBUG
    +關注

    關注

    3

    文章

    94

    瀏覽量

    19976
收藏 人收藏

    評論

    相關推薦

    在wsl2中安裝的idf,在monitor時會報錯的原因?

    的 target 均配置正確 但是好像調用了 esp32 的addr2line工具,不想重新安裝idf了,求解,ballball大佬們
    發表于 06-17 07:30

    藍牙模塊HC-05中linelen=get_line(linebuff,redata+getlen+2*linenum,len);為什么linenum要*2

    linelen = get_line(linebuff,redata+getlen+2*linenum,len);這句語句linenum為什么要*2/*** @brief掃描周邊的藍牙設備,并存儲到
    發表于 04-24 06:35

    如何在開發板子上安裝addr2line工具?

    由于軟件在開發板上會有些難以復現的閃退類型bug需要借助addr2line 解析錯誤,打印函數堆棧,需要用到這個工具。目前的Ubuntu里邊有arm的交叉編譯工具,在linux下是可以的,但是在
    發表于 01-07 07:08

    C語言在ARM中函數調用時棧變化的過程

    為什么會寫篇棧變化的文章?做系統分析的話你肯定遇到過一些crash, oops等棘手問題,一般大家都會用 gdb, objdump 或者 addr2line等工具分析 pc 位置來定位出錯...
    發表于 02-14 07:02

    一步步介紹CmBacktrace的相關知識和使用方法

    繁雜的故障寄存器;輸出錯誤現場的函數調用棧 (需配合 addr2line 工具進行精確定位),還原發生錯誤時的現場信息,定位問題代碼位置、邏輯更加快捷、精準。也可以在正常狀態下使用該庫,獲取當前的函數
    發表于 10-26 15:44

    在wsl2中安裝的idf,在monitor報錯的原因?如何解決?

    均配置正確 但是好像調用了 esp32 的addr2line工具,不想重新安裝idf了,求解,ballball大佬們
    發表于 02-14 07:56

    當On Line Debug時,會無緣無故的離線是為什么?

    當我On Line Debug 時 ,會無緣無故的離線。 當時我的目標板有連接主電源。 例如 24BLDC 板。低速都OK 操過某一個速度,就直接離線。 有階主電源時也無法下載程式或Debug?
    發表于 09-06 08:02

    何用2SC2539替換2SC1971

    何用2SC2539替換2SC1971
    發表于 12-22 11:40 ?3189次閱讀

    NCV8402ADDR2G雙路MOS管的特性及應用

    提及“雙路場效應管NCV8402ADDR2G”,作為業內人士,定不覺得陌生。NCV8402ADDR2G這個物料,帶短路、過熱保護的雙路MOS管,出自國際品牌ON(安森美)。NCV8402ADDR2
    發表于 08-09 17:17 ?3073次閱讀

    何用示波器測量脈沖信號呢

    何用示波器測量脈沖信號以及測量脈沖信號對示波器有什么要求。
    的頭像 發表于 10-04 08:49 ?1.6w次閱讀

    C語言在ARM中函數調用時,棧是如何變化的?

    為什么會寫篇棧變化的文章?做系統分析的話你肯定遇到過一些crash, oops等棘手問題,一般大家都會用 gdb, objdump 或者 addr2line等工具分析 pc 位置來定位出錯...
    發表于 12-09 10:36 ?8次下載
    C語言在ARM中函數調用時,棧是如何變化的?

    NCV8402ADDR2G,原裝正品,價格美麗

    提及“雙路場效應管NCV8402ADDR2G”,作為業內人士,定不覺得陌生。NCV8402ADDR2G這個料號,帶短路、過熱保護的雙路MOS管,出自國際品牌ON(安森美)。NCV8402ADDR2
    的頭像 發表于 11-12 11:55 ?976次閱讀
    NCV8402<b class='flag-5'>ADDR2</b>G,原裝正品,價格美麗

    Linux中addr2line用法介紹

    addr2line 用法 -a --addresses:在函數名、文件和行號信息之前,顯示地址,以十六進制形式。 -b --target=:指定目標文件的格式為bfdname。 -e --exe
    的頭像 發表于 07-30 10:20 ?1262次閱讀

    linux下調試core dump的方法

    ,了解系統的啟動信息,可以獲得出錯堆棧地址。 addr2line ,可以將指令的地址和可執行映像轉換成文件名,函數名或源代碼的工具。這種功能將跟蹤地址轉換成更有意義的內容來說很有用。 在調用
    的頭像 發表于 10-08 16:13 ?677次閱讀

    RVBacktrace RISC-V極簡?;厮萁M件

    RVBacktrace組件簡介一個極簡的RISC-V?;厮萁M件。功能在需要的地方調用組件提供的唯一API,開始當前環境的?;厮葜С州敵?b class='flag-5'>addr2line需要的命令,使用addr2line進行?;厮葜С纸Y合反匯編,?;厮菪畔D表化TODOList:支持打印
    的頭像 發表于 09-15 08:12 ?460次閱讀
    RVBacktrace RISC-V極簡?;厮萁M件
    现场百家乐的玩法技巧和规则 | 百家乐具体怎么收费的| 百家乐闲拉长龙| 百家乐官网视频游戏盗号| 黄金城百家乐官网下载| 缅甸百家乐官网龙虎斗| 百家乐官网游戏运营| 毕节市| 泾川县| 双辽市| 乐九百家乐官网现金网| 屏南县| 友谊县| 白城市| 折式百家乐官网赌台| 百家乐官网教父方法| 怎样看百家乐官网牌| 百家乐官网娱乐城游戏| 百家乐官网视频金币| 利记百家乐官网现金网| 百家乐官网现场新全讯网| 澳门百家乐官网技巧经| 百家乐官网开户送8彩金| 百家乐官网强弱走势| 百家乐官网规律打法| 九龙坡区| 百家乐官网筛子游戏| 最好的棋牌游戏| 百家乐怎样赢| 百家乐官网牌数计算法| 澳门百家乐官网信誉| 百家乐官网金海岸娱乐| 澳门百家乐官网介绍| 好望角百家乐官网的玩法技巧和规则 | 如何看百家乐官网的路纸| 百家乐官网平注赢钱法| 百家乐官网大眼仔用法| 百家乐官网局部| 属狗人做生意店铺朝向| 基础百家乐的玩法技巧和规则 | 百家乐2号机器投注技巧|