2015-06-16 60 views
1

我目前正在嘗試使用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給我的函數名稱和命名空間,所以我假設我的二進制文件和庫沒有被剝離。此外,我檢查從二進制文件中的符號中檢索源文件和行號(給出nmaddr2line),信息在這裏。

用於編譯的標誌是:-g -std=c++11, 和valgrind:--leak-check=full --track-origins=yes

我錯過了編譯,鏈接或valgrind的一些標誌/選項嗎?它會讓我感到驚訝的問題來自valgrind ...

感謝您的時間閱讀我。

+0

你確定'MyBinary'也是用'-g'編譯的嗎?從你的問題來看,你是否檢查過「MyBinary」或「lib *'是否包含調試信息並不完全清楚。 – Petr

+0

是的,完全不好意思,不好意思。 – VinL

回答

0

我發現它爲什麼不起作用。我沒有檢查...在我的磁盤上還有另一個同名的二進制文件...所以,這個問題不再相關。