2014-01-20 34 views
2

我不知道我做錯了什麼,但我似乎無法解決這個問題。爲什麼ValGrind無法找到我的符號?

file

test: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.16, BuildID[sha1]=0x436d17ab04dc54f35f1a8e6a16d4f87aaf79a0e9, not stripped 

上面清清楚楚地寫着 「不剝奪」。然而,當我跑Valgrind的,

--27709-- Reading syms from /root/ValGrind/test (0x8048000) 
--27709-- object doesn't have a dynamic symbol table 

我想不通爲什麼對象不具有符號表......我在做什麼錯?

編輯:是因爲二進制文件是32位的,而且我運行的是64位操作系統?或者應該不重要?

回答

4

可執行文件是靜態鏈接的;也許這會導致問題?

其實你以後遇到的問題?由於「對象沒有動態符號表」消息只是Valgrind的調試輸出,所以它應該沒什麼關係。

Btw。根據http://valgrind.org/docs/manual/faq.html#faq.hiddenbug Valgrind無論如何都不適用於靜態鏈接的應用程序。

+0

二進制_is_靜態鏈接。我想這是我的問題? – MathematicalOrchid

+0

當運行Valgrind時,靜態鏈接至少會給你提供不完整的結果,所以是的,這就是_a_問題。根據文檔,你可以使用選項「--soname-synonyms區= somalloc = NONE」作爲解決方法(雖然我沒有嘗試過,但實際工作)。 – oliver

0

編譯/鏈接時是否忘記添加-g-ggdb標誌?

+0

不,我一定這樣做。 (並且二進制變大。) – MathematicalOrchid

0

將二進制文件從靜態鏈接更改爲動態鏈接。安裝了32位庫。現在工作。

(PS。任何人有OpenSUSE系統的可怕包搜索其他人拼命的掙扎,正確的包名是libstdc++6-32bit。)

相關問題