青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天下

記錄修行的印記

Linux下利用backtrace追蹤函數調用堆棧以及定位段錯誤

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



//連接必須使用 LDFLAGS=-rdynamic
//$(CC) $(LDFLAGS) -o $@ $^
/*

Linux下利用backtrace追蹤函數調用堆棧以及定位段錯誤

有些時候為了分析程序的BUG,(主要針對長時間運行程序的分析),在程序出錯時打印出函數的調用堆棧是非常有用的。

在glibc頭文件"execinfo.h"中聲明了三個函數用于獲取當前線程的函數調用堆棧。

int backtrace(void **buffer,int size) 

該函數用于獲取當前線程的調用堆棧,獲取的信息將會被存放在buffer中,它是一個指針列表。參數 size 用來指定buffer中可以保存多少個void* 元素。函數返回值是實際獲取的指針個數,最大不超過size大小

在buffer中的指針實際是從堆棧中獲取的返回地址,每一個堆??蚣苡幸粋€返回地址

注意:某些編譯器的優化選項對獲取正確的調用堆棧有干擾,另外內聯函數沒有堆??蚣?刪除框架指針也會導致無法正確解析堆棧內容

char ** backtrace_symbols (void *const *buffer, int size) 

backtrace_symbols將從backtrace函數獲取的信息轉化為一個字符串數組. 參數buffer應該是從backtrace函數獲取的指針數組,size是該數組中的元素個數(backtrace的返回值)

函數返回值是一個指向字符串數組的指針,它的大小同buffer相同.每個字符串包含了一個相對于buffer中對應元素的可打印信息.它包括函數名,函數的偏移地址,和實際的返回地址

現在,只有使用ELF二進制格式的程序才能獲取函數名稱和偏移地址.在其他系統,只有16進制的返回地址能被獲取.另外,你可能需要傳遞相應的符號給鏈接器,以能支持函數名功能(比如,在使用GNU ld鏈接器的系統中,你需要傳遞(-rdynamic), -rdynamic可用來通知鏈接器將所有符號添加到動態符號表中,如果你的鏈接器支持-rdynamic的話,建議將其加上!)

該函數的返回值是通過malloc函數申請的空間,因此調用者必須使用free函數來釋放指針.

注意:如果不能為字符串獲取足夠的空間函數的返回值將會為NULL

void backtrace_symbols_fd (void *const *buffer, int size, int fd) 

backtrace_symbols_fd與backtrace_symbols 函數具有相同的功能,不同的是它不會給調用者返回字符串數組,而是將結果寫入文件描述符為fd的文件中,每個函數對應一行.它不需要調用malloc函數,因此適用于有可能調用該函數會失敗的情況
*/


void C(int c)
{
    char* p = (char*)c;
    *p = 'A';
    printf("function C run after,*p='%c'\r\n",*p);
}

void B(int b)
{
    printf("%d: B call C \r\n",b);
    C(b+1);
}

void A(int a)
{
    printf("%d: A call B \r\n",a);
    B(2);
}

void debug_backtrace(int dunno)
{

#define SIZE 256
    void* array[SIZE];
    int size,i;
    char** strings;

    if (dunno==SIGSEGV)
    {
        fprintf(stderr,"\r\nSegmentation faul \r\n");
        size = backtrace(array,SIZE);
        fprintf(stderr,"\r\nBacktrace (%d deep):\r\n",size);
        strings = backtrace_symbols(array,size);
        for (i=0;i<size;i++)
        {
            fprintf(stderr,"%d:%s\n",i,strings[i]);
        }
        free(strings);
        exit(-1);
    }
}

int main(int argc,char **argv)
{
    char a = 'T';
    signal(SIGSEGV,debug_backtrace);

    C((int)&a);
    A(1);
    return 0;
}

posted on 2013-04-17 15:40 天下 閱讀(1361) 評論(0)  編輯 收藏 引用 所屬分類: Linux編程

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導航

統計

常用鏈接

留言簿(4)

隨筆分類(378)

隨筆檔案(329)

鏈接

最新隨筆

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美成人国产一区二区| 在线视频欧美一区| 99热这里只有成人精品国产| 久久这里有精品15一区二区三区| 国产美女诱惑一区二区| 久久视频精品在线| 久久久www成人免费无遮挡大片| 国产精品男人爽免费视频1| 欧美亚洲一区二区三区| 久久米奇亚洲| 一区二区欧美日韩视频| 在线视频亚洲欧美| 国产综合色精品一区二区三区| 久久久久久久久综合| 欧美激情视频一区二区三区在线播放| 亚洲美女黄网| 欧美一区激情| 亚洲图片欧洲图片日韩av| 亚洲主播在线| 一区二区三区国产| 久久久999精品免费| 亚洲图片在区色| 亚洲欧美www| 欧美在线观看一区| 亚洲婷婷在线| 欧美日本一道本| 玖玖玖免费嫩草在线影院一区| 欧美久久久久中文字幕| 久久综合九色九九| 国产日韩欧美a| 在线亚洲免费| 亚洲小说区图片区| 欧美日韩伦理在线免费| 欧美激情视频一区二区三区免费| 国产欧美精品| 亚洲字幕一区二区| 久久国产日本精品| 国产精品国产三级国产aⅴ浪潮| 亚洲电影观看| 亚洲第一二三四五区| 久久精品99国产精品日本 | 亚洲成色精品| 国产精品久久国产精品99gif| 亚洲国产精品久久精品怡红院 | 亚洲毛片一区| 欧美大胆a视频| 亚洲精品国产精品乱码不99| 99re6热只有精品免费观看| 毛片一区二区| 亚洲人成网站999久久久综合| 日韩一级在线| 国产区亚洲区欧美区| 久久久久久999| 亚洲精品黄色| 久久中文字幕一区| 日韩一区二区高清| 一区二区在线视频播放| 香蕉久久精品日日躁夜夜躁| 精品成人在线观看| 欧美日韩亚洲一区三区| 久久精品人人| 亚洲欧美精品伊人久久| 欧美激情中文不卡| 午夜一区二区三区在线观看| 亚洲国产精品成人va在线观看| 国产精品免费aⅴ片在线观看| 久久九九全国免费精品观看| 亚洲精品三级| 免费中文字幕日韩欧美| 亚洲欧美日韩在线一区| 99pao成人国产永久免费视频| 国产啪精品视频| 国产精品永久入口久久久| 欧美日韩mv| 欧美人与性动交α欧美精品济南到| 久久gogo国模啪啪人体图| 一本色道久久综合| 亚洲精品在线免费观看视频| 亚洲电影观看| 亚洲国产综合在线| 91久久极品少妇xxxxⅹ软件| 欧美激情1区2区| 欧美激情一区| 亚洲精选中文字幕| 中日韩美女免费视频网站在线观看| 亚洲欧洲精品一区二区三区 | 欧美激情视频在线免费观看 欧美视频免费一 | 国产情人节一区| 国产在线视频欧美一区二区三区| 国产一区二区三区视频在线观看| 国产欧美二区| 亚洲国产高潮在线观看| 一区二区三区高清视频在线观看 | 在线欧美视频| av成人福利| 久久久xxx| 亚洲精品永久免费| 欧美一区二区三区在线播放| 欧美激情精品久久久久久大尺度| 欧美成人激情视频| 国产美女精品一区二区三区| 亚洲肉体裸体xxxx137| 亚洲香蕉成视频在线观看| 久久五月天婷婷| 亚洲午夜久久久| 欧美激情91| 亚洲精品国产精品乱码不99按摩 | 亚洲高清三级视频| 亚洲与欧洲av电影| 欧美日产在线观看| 亚洲三级影片| 欧美国产日韩精品免费观看| 亚洲在线观看视频| 欧美日韩国产色综合一二三四 | 国产精品久久久久9999吃药| 亚洲人久久久| 欧美国产一区二区| 久久精品99久久香蕉国产色戒| 国产精品久久久久aaaa樱花| 亚洲视频一区二区| 日韩一级在线观看| 欧美日韩喷水| 欧美一区二区三区在线看| 亚洲欧美日韩一区二区三区在线观看| 欧美日韩免费在线观看| 一本色道婷婷久久欧美| 一区二区三欧美| 国产免费观看久久黄| 国产精品婷婷| 久久精品91久久久久久再现| 欧美一级播放| 亚洲国产欧美一区二区三区丁香婷| 欧美成人精品在线视频| 免费在线成人av| 亚洲一区二区三区四区视频| 欧美一区二区三区免费看 | 国产精品一区二区黑丝| 久久久91精品国产一区二区精品| 亚洲视频播放| 亚洲视频在线观看免费| 国内揄拍国内精品少妇国语| 欧美成人免费一级人片100| 欧美激情一区在线| 欧美一区二区三区在线| 欧美大片免费久久精品三p| 亚洲午夜激情网站| 久久在线播放| 午夜精品一区二区三区电影天堂 | 欧美激情国产日韩精品一区18| 亚洲自拍16p| 欧美freesex8一10精品| 久久av一区二区三区漫画| 欧美激情视频一区二区三区在线播放 | 国产精品99久久99久久久二8| 欧美一区二区性| 亚洲主播在线| 欧美日韩精品一区二区三区| 欧美1区2区| 亚洲二区在线视频| 久久久国产精品一区二区中文| 午夜精品久久久久影视| 国产精品国产三级国产aⅴ入口 | 亚洲国产精品黑人久久久| 国内精品久久久久久久影视蜜臀| 亚洲一二三区视频在线观看| 亚洲制服av| 亚洲精品视频免费| 亚洲精品精选| 欧美日韩喷水| 亚洲欧美日韩网| 麻豆91精品| 日韩网站在线观看| 国产精品福利在线观看网址| 亚洲专区一区| 欧美国产在线视频| 亚洲天堂网站在线观看视频| 国产精品视频免费一区| 久久精品一区四区| 亚洲精品综合精品自拍| 久久av老司机精品网站导航 | 亚洲丰满在线| 欧美顶级艳妇交换群宴| 亚洲精选91| 卡通动漫国产精品| 亚洲无线视频| 伊人激情综合| 国产精品视频免费在线观看| 暖暖成人免费视频| 欧美在线亚洲一区| 一本综合精品| 亚洲欧洲在线播放| 美女亚洲精品| 久久精品一二三| 欧美一区二区三区在| 亚洲综合日韩在线| 夜夜嗨av色综合久久久综合网| 狠狠色狠狠色综合日日tαg| 国产精品日韩欧美| 国产裸体写真av一区二区| 亚洲精品国产精品国产自|