为什么ValGrind找不到我的符号?

时间:2014-01-20 13:27:01

标签: c++ debugging 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位操作系统?或者这不重要吗?

3 个答案:

答案 0 :(得分:4)

可执行文件是静态链接的;也许这会导致问题?

实际上, 你遇到的问题是什么?因为“对象没有动态符号表”消息只是Valgrind的调试输出,所以它应该没那么重要。

顺便说一下。根据{{​​3}} Valgrind无论如何都不适用于静态链接的应用程序。

答案 1 :(得分:0)

编译/链接时,您是否忘记添加-g-ggdb标记?

答案 2 :(得分:0)

将二进制文件从静态链接更改为动态链接。安装了32位库。立即行动。

(PS。对于任何其他拼命挣扎于OpenSUSE糟糕的软件包搜索的人来说,正确的软件包名称为libstdc++6-32bit。)