addr2line

    10熱度

    2回答

    我想知道是否有一個glibc函數,我可以使用gcc/g ++將檢索當前的可執行文件。 這樣做的目的是提供-e參數addr2line如圖this answer

    0熱度

    1回答

    我有一個在Ubuntu中運行的C++應用程序。我想要做的是去掉其符號的應用程序二進制文件,以使它們不是二進制文件的一部分,但是使用addr2line實用程序通過引用符號文件而不是二進制文件的一部分符號來獲取回溯信息。這可能嗎? 我已經得到了迄今使用生成符號文件最接近: strip MyBinary -o thesymbols.sym 然後我嘗試使用該文件與addr2line程序,如下所示: a

    1熱度

    3回答

    我使用addr2line來分析引發異常後的堆棧跟蹤(使用backtrace和backtrace_symbols)。目前,這需要大約2秒來分析磁盤上的120Mb二進制文件(調試版本)。 是否有一個庫(LGPL),它通過分析內存中的代碼段來完成相同的工作?當然,這限制了我只分析自己的應用程序 - 但在我的使用情況下,這已經足夠了。

    0熱度

    1回答

    給定一個目標文件和地址addr2line工具可以將它與源代碼中的文件和行號關聯起來。 我想要相反。給定一個行號和一個目標文件,我想獲得與源代碼中給定行對應的指令地址列表。 我知道我可以使用objdump -DS並尋找一條線路,但這很不方便,並且需要手動工作來過濾地址。你知道有什麼工具可以做我想做的嗎?如果我給它一個行列表? UPD。 我舉了一個我想要的例子。 我有一組文件行: src/a.c:14

    16熱度

    1回答

    當在某些程序運行addr2line,我得到在該行的最後一個「鑑別N」評論: main at /tmp/nsievebits.c:56 (discriminator 3) 手冊頁沒有提到它,一個快速谷歌搜索似乎表明主要是源代碼文件,沒有明確的解釋。它是否有一些故意沒有記錄的功能?更重要的是,我應該擔心它嗎?

    1熱度

    1回答

    addr2line將地址轉換爲文件名和行號。我仍然是初學者在調試,並有一些關於addr2line的問題。 如果我調試了一定的.so(二進制)文件,該工具可以如何定位(從哪裏可以得到它!) 它的源代碼文件,如果源不存在呢? 二進制文件中的地址與源碼中的行號碼 之間的關係是什麼,所以addr2line可以做這種映射嗎?

    0熱度

    1回答

    我在Linux中放置了一個性能分析器,我無法將收集的堆棧跟蹤信息映射到函數名稱。 我現在打電話addr2line從我的後處理代碼 FILE* pipe = popen("addr2line -f -i -s -C -e <libname> <address>", "r"); if (!pipe) return; const size_t BUFFER_SIZE = 8192;

    1熱度

    1回答

    我從執行命令dumpheap -n <PID> <file>獲得回溯。我必須將這些地址轉換爲函數名稱和行號才能使這些回溯有意義。我使用addr2line將這些地址轉換爲函數名稱。這是我使用的命令addr2line -C -f -e <libname>.so <address>。有些地方addr2line給了我$ t代替函數名稱,但給出了正確的文件名:linenumber。我應該如何解決這個'$ t

    0熱度

    1回答

    我正在用C編寫一個記錄庫庫,並且正在嘗試使用addr2line來獲得更好的回溯輸出。爲了做到這一點,我需要能夠獲得當前可執行文件的路徑。目前我只關心linux,但也會爲Mac OS支持拍攝。 對Linux的支持,我試圖用readlink()和/proc/self/exe解決目前可執行文件的路徑: static char** getPrettyBacktrace(void* addresses[],

    13熱度

    2回答

    我需要從C++程序中獲取addr2line(從追溯函數調用的文件和行)提供的信息。是否有類似於addr2line的庫調用? 編輯:我正在Linux環境中工作。 我知道我可以直接調用addr2line,我知道我可以在我的程序中使用addr2line的source code(這也是GPL許可的)。但我想調用一個庫函數,如果它存在的話,更清潔。 編輯:我將使用binutils的bfd,就像addr2li