2017-12-18 155 views
0

我在Linux中放置了一個性能分析器,我無法將收集的堆棧跟蹤信息映射到函數名稱。如何從配置文件地址獲取函數名稱?

我現在打電話addr2line從我的後處理代碼

FILE* pipe = popen("addr2line -f -i -s -C -e <libname> <address>", "r"); 
    if (!pipe) return; 

    const size_t BUFFER_SIZE = 8192; 
    char buffer[BUFFER_SIZE]; 
    string result; 
    while (!feof(pipe)) 
    { 
    if (fgets(buffer, BUFFER_SIZE, pipe) != NULL) 
    result += buffer; 
    } 

    pclose(pipe); 

但是如下,這是非常緩慢,因爲我的個人資料有很多樣品。有沒有像addr2line這樣的其他工具更快,或者我可以以比我更高效的方式調用addr2line?

回答

0

我通過修改addr2line工具的源代碼並將其轉換爲庫來解決了這個問題。所以我現在將這個庫加載到我的配置文件分析器中,並調用'addr2line',就好像它是一個函數!

相關問題