addr2line

addr2line工具是一個(gè)可以將指令的地址和可執(zhí)行映像轉(zhuǎn)換為文件名、函數(shù)名和源代碼行數(shù)的工具丁屎。這在內(nèi)核執(zhí)行過(guò)程中出現(xiàn)崩潰時(shí)荠锭,可用于快速定位出出錯(cuò)的位置,進(jìn)而找出代碼的bug晨川。

用法

addr2line [-a| --addresses ] [-b bfdname | --target=bfdname] [-C | --demangle[=style]] [-e filename | --exe=filename] [-f | --function] [-s | --basename] [-i | --inlines] [-p | --pretty-print] [-j | --section=name] [-H | --help] [-V | --version] [addr addr ...]

參數(shù)

-a --addresses:在函數(shù)名证九、文件和行號(hào)信息之前,顯示地址共虑,以十六進(jìn)制形式愧怜。
-b --target=<bfdname>:指定目標(biāo)文件的格式為bfdname。
-e --exe=<executable>:指定需要轉(zhuǎn)換地址的可執(zhí)行文件名妈拌。
-i --inlines : 如果需要轉(zhuǎn)換的地址是一個(gè)內(nèi)聯(lián)函數(shù)拥坛,則輸出的信息包括其最近范圍內(nèi)的一個(gè)非內(nèi)聯(lián)函數(shù)的信息。
-j --section=<name>:給出的地址代表指定section的偏移尘分,而非絕對(duì)地址猜惋。
-p --pretty-print:使得該函數(shù)的輸出信息更加人性化:每一個(gè)地址的信息占一行。
-s --basenames:僅僅顯示每個(gè)文件名的基址(即不顯示文件的具體路徑培愁,只顯示文件名)惨奕。
-f --functions:在顯示文件名、行號(hào)輸出信息的同時(shí)顯示函數(shù)名信息竭钝。
-C --demangle[=style]:將低級(jí)別的符號(hào)名解碼為用戶級(jí)別的名字梨撞。
-h --help:輸出幫助信息。
-v --version:輸出版本號(hào)香罐。

使用

1.自己查找一個(gè)地址卧波,然后來(lái)定位


#include<stdio.h>
int divide(int x, int y)
{
    return x/y;
}

int main()
{
    printf("hello world\n");
    int x = 3;
    int y = 0;
    int div = divide(x, y); 
    printf("%d / %d = %d\n", x, y, div);
    return 0;
}
編譯:

g++ -Wl,-Map=test.map -g test.cpp -o test

查找divide函數(shù)的地址

grep divide test.map

0x00000000004005e7                divide(int, int)
使用addr2line定位

addr2line 0x00000000004005e7 -e test -f -C -s

divide(int, int)
test.cpp:3

如果不加-C選項(xiàng),輸出如下(是未經(jīng)過(guò)demangle的)

_Z6divideii
test.cpp:3

2.查找系統(tǒng)信息庇茫,然后定位代碼

dmesg

[150100.451504] traps: test[7593] trap divide error ip:4005f5 sp:7ffeebd4ba70 error:0 in test[400000+1000]

這條信息里港粱,ip(指令指針寄存器)字段后面的數(shù)字就是test程序出錯(cuò)時(shí)程序執(zhí)行的位置。使用addr2line就可以將4005f5定位到代碼的位置:
addr2line 4005f5 -e test -f -s -C

divide(int, int)
test.cpp:4

第4行也就是除以0的位置:return x/y。

原理

addr2line如何找到的這一行呢查坪。在可執(zhí)行程序中都包含有調(diào)試信息(所以編譯的時(shí)候需要加-g選項(xiàng))寸宏,其中很重要的一份數(shù)據(jù)就是程序源程序的行號(hào)和編譯后的機(jī)器代碼之間的對(duì)應(yīng)關(guān)系Line Number Table。Line Number Table存儲(chǔ)在可執(zhí)行程序的.debug_line域偿曙。
使用如下命令
readelf -w test | grep "advance Address"

  [0x000000ca]  Special opcode 7: advance Address by 0 to 0x4005e7 and Line by 2 to 3
  [0x000000cb]  Special opcode 146: advance Address by 10 to 0x4005f1 and Line by 1 to 4
  [0x000000cc]  Special opcode 104: advance Address by 7 to 0x4005f8 and Line by 1 to 5
  [0x000000cd]  Special opcode 36: advance Address by 2 to 0x4005fa and Line by 3 to 8
  [0x000000ce]  Special opcode 118: advance Address by 8 to 0x400602 and Line by 1 to 9
  [0x000000cf]  Special opcode 146: advance Address by 10 to 0x40060c and Line by 1 to 10
  [0x000000d0]  Special opcode 104: advance Address by 7 to 0x400613 and Line by 1 to 11
  [0x000000d1]  Special opcode 104: advance Address by 7 to 0x40061a and Line by 1 to 12
  [0x000000d3]  Special opcode 20: advance Address by 1 to 0x40062c and Line by 1 to 13
  [0x000000d5]  Special opcode 132: advance Address by 9 to 0x400646 and Line by 1 to 14
  [0x000000d6]  Special opcode 76: advance Address by 5 to 0x40064b and Line by 1 to 15

觀察第二行和第三行氮凝,源代碼的第4行的指令起始地址是0x4005f1, 第5行的起始地址是0x4005f8望忆,可以知道0x4005f5位置的指令是屬于第4行代碼的罩阵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市启摄,隨后出現(xiàn)的幾起案子稿壁,更是在濱河造成了極大的恐慌,老刑警劉巖歉备,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件傅是,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蕾羊,警方通過(guò)查閱死者的電腦和手機(jī)落午,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)肚豺,“玉大人,你說(shuō)我怎么就攤上這事界拦∥辏” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵享甸,是天一觀的道長(zhǎng)截碴。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蛉威,這世上最難降的妖魔是什么日丹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮蚯嫌,結(jié)果婚禮上哲虾,老公的妹妹穿的比我還像新娘。我一直安慰自己择示,他們只是感情好束凑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著栅盲,像睡著了一般汪诉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谈秫,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天扒寄,我揣著相機(jī)與錄音鱼鼓,去河邊找鬼。 笑死该编,一個(gè)胖子當(dāng)著我的面吹牛迄本,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播上渴,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼岸梨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了稠氮?” 一聲冷哼從身側(cè)響起曹阔,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎隔披,沒(méi)想到半個(gè)月后赃份,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奢米,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年抓韩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鬓长。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谒拴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出涉波,到底是詐尸還是另有隱情英上,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布啤覆,位于F島的核電站苍日,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏窗声。R本人自食惡果不足惜相恃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笨觅。 院中可真熱鬧拦耐,春花似錦、人聲如沸见剩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)炮温。三九已至火脉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背倦挂。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工畸颅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人方援。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓没炒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親犯戏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子送火,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,720評(píng)論 0 10
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,367評(píng)論 0 5
  • 一先匪、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡(jiǎn)單分配策略的問(wèn)題地址空間不隔離內(nèi)存使用效率低程序運(yùn)行的地址不確定 關(guān)于...
    SeanCST閱讀 7,776評(píng)論 0 27
  • 第 2 章 SHELL 基礎(chǔ)知識(shí)2.1 shell腳本我們?cè)谏厦婧?jiǎn)單介紹了一下什么是shell腳本种吸,現(xiàn)在我們來(lái)進(jìn)一...
    LiWei_9e4b閱讀 1,553評(píng)論 0 0
  • 山路彎彎迎遠(yuǎn)客, 野溪淺淺過(guò)村前呀非。 春桃艷艷送春意坚俗, 垂柳茵茵紫燕穿。 殘雪融融三月雨岸裙, 梨芳紛紛杏花妍猖败。 芙蓉冉...
    云逸1108閱讀 269評(píng)論 0 0