linux下C應(yīng)用程序打印調(diào)用棧

使用GCC編譯的C應(yīng)用程序损拢,如果想在某個(gè)接口中打印調(diào)用棧吼过,可以使用gcc的backtraces特性

Backtraces說(shuō)明中有一個(gè)例子侵续,代碼如下:

#include <execinfo.h>
#include <stdio.h>
#include <stdlib.h>

/* Obtain a backtrace and print it to stdout. */
void
print_trace (void)
{
  void *array[10];
  char **strings;
  int size, i;

  size = backtrace (array, 10);
  strings = backtrace_symbols (array, size);
  if (strings != NULL)
  {

    printf ("Obtained %d stack frames.\n", size);
    for (i = 0; i < size; i++)
      printf ("%s\n", strings[i]);
  }

  free (strings);
}

/* A dummy function to make the backtrace more interesting. */
void
dummy_function (void)
{
  print_trace ();
}

int
main (void)
{
  dummy_function ();
  return 0;
}

直接通過(guò)gcc來(lái)編譯運(yùn)行,結(jié)果如下:

itsenlin@itsenlin-virtual-machine:~/code/test$ gcc -o backtr backtr.c
itsenlin@itsenlin-virtual-machine:~/code/test$ ./backtr
Obtained 6 stack frames.
./backtr(+0x1215) [0x559a1a0b2215]
./backtr(+0x12b1) [0x559a1a0b22b1]
./backtr(+0x12c1) [0x559a1a0b22c1]
/lib/x86_64-linux-gnu/libc.so.6(+0x29d90) [0x7f779d629d90]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x80) [0x7f779d629e40]
./backtr(+0x1125) [0x559a1a0b2125]
itsenlin@itsenlin-virtual-machine:~/code/test$

如果想顯示函數(shù)名,還需要在編譯時(shí)添加-rdynamic選項(xiàng),如下

itsenlin@itsenlin-virtual-machine:~/code/test$ gcc -o backtr backtr.c -rdynamic
itsenlin@itsenlin-virtual-machine:~/code/test$ ./backtr
Obtained 6 stack frames.
./backtr(print_trace+0x2c) [0x560984d66215]
./backtr(dummy_function+0xd) [0x560984d662b1]
./backtr(main+0xd) [0x560984d662c1]
/lib/x86_64-linux-gnu/libc.so.6(+0x29d90) [0x7f860a029d90]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x80) [0x7f860a029e40]
./backtr(_start+0x25) [0x560984d66125]
itsenlin@itsenlin-virtual-machine:~/code/test$ vim backtr.c
itsenlin@itsenlin-virtual-machine:~/code/test$
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末墓塌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奥额,更是在濱河造成了極大的恐慌苫幢,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件垫挨,死亡現(xiàn)場(chǎng)離奇詭異态坦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)棒拂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人帚屉,你說(shuō)我怎么就攤上這事谜诫。” “怎么了攻旦?”我有些...
    開(kāi)封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵喻旷,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我牢屋,道長(zhǎng)且预,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任烙无,我火速辦了婚禮锋谐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘截酷。我一直安慰自己涮拗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布迂苛。 她就那樣靜靜地躺著三热,像睡著了一般。 火紅的嫁衣襯著肌膚如雪三幻。 梳的紋絲不亂的頭發(fā)上就漾,一...
    開(kāi)封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音念搬,去河邊找鬼抑堡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛锁蠕,可吹牛的內(nèi)容都是我干的夷野。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼荣倾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼悯搔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起舌仍,我...
    開(kāi)封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤妒貌,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后铸豁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灌曙,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年节芥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了在刺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逆害。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蚣驼,靈堂內(nèi)的尸體忽然破棺而出魄幕,到底是詐尸還是另有隱情,我是刑警寧澤颖杏,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布纯陨,位于F島的核電站,受9級(jí)特大地震影響留储,放射性物質(zhì)發(fā)生泄漏翼抠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一获讳、第九天 我趴在偏房一處隱蔽的房頂上張望阴颖。 院中可真熱鬧,春花似錦赔嚎、人聲如沸膘盖。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)侠畔。三九已至,卻和暖如春损晤,著一層夾襖步出監(jiān)牢的瞬間软棺,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工尤勋, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喘落,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓最冰,卻偏偏與公主長(zhǎng)得像瘦棋,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子暖哨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

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