我目前正在嘗試使用valgrind得到一些內存錯誤,但我在輸出信息時遇到了一些問題,源文件/行號不會出現。所以我有這樣的輸出:Linux-運行valgrind時不會出現源文件/行
==11656== by 0xA5A095: Class::method(T1, T2) (in /usr/local/bin/MyBinary)
我編譯我的程序與調試信息(-g
標誌)和GCC 4.8.2(也試圖與鐺3.4)在我的Ubuntu。我使用cmake構建系統,因爲我想製作幾個庫,然後製作一些二進制文件。我檢查了-g
標誌是否在與make VERBOSE=1
編譯時出現,它是。
我想要調試的二進制文件與多個庫鏈接,這個庫很重要,需要調試信息的是libA,它也與libB和libC鏈接。 libA,libB和libC是我製作的庫。它們也都是用調試信息編譯的,並且每次都進行靜態鏈接。
所以依賴方案是:MyBinary < - libA < - libB,libC。
奇怪的是,valgrind給我的函數名稱和命名空間,所以我假設我的二進制文件和庫沒有被剝離。此外,我檢查從二進制文件中的符號中檢索源文件和行號(給出nm
和addr2line
),信息在這裏。
用於編譯的標誌是:-g -std=c++11
, 和valgrind:--leak-check=full --track-origins=yes
。
我錯過了編譯,鏈接或valgrind的一些標誌/選項嗎?它會讓我感到驚訝的問題來自valgrind ...
感謝您的時間閱讀我。
你確定'MyBinary'也是用'-g'編譯的嗎?從你的問題來看,你是否檢查過「MyBinary」或「lib *'是否包含調試信息並不完全清楚。 – Petr
是的,完全不好意思,不好意思。 – VinL