Valgrind的输出缺少必要值

时间:2012-11-01 18:41:24

标签: c debugging valgrind ubuntu-10.04

我开始从here学习C语言。我在第5章练习-4中学习使用valgrind。 this页面上的源代码窗口17中解释了该问题。

根据Valgrind的文件(ex4.c),我的输出缺少来自this页面上显示的Valgrind输出,以下列方式;

  1. ???代替_itoa_word (_itoa.c:195)

  2. 未识别C库文件中行号的位置。而是给出了共享库文件(.so)的路径。

  3. 给出两个输出的比较示例如下所示。

    我期待什么

    == 3082 ==使用大小为8的未初始化值

    == 3082 ==在0x4E730EB:_itoa_word(_itoa.c:195)

    == 3082 == by 0x4E743D8:vfprintf(vfprintf.c:1613)

    == 3082 == by 0x4E7E6F9:printf(printf.c:35)

    == 3082 == by 0x40052B:main(ex4.c:11)


    我得到什么

    == 14647 ==在0x407D256:??? (在/lib/tls/i686/cmov/libc-2.11.1.so中)

    == 14647 == by 0x4080B89:vfprintf(在/lib/tls/i686/cmov/libc-2.11.1.so中)

    == 14647 == by 0x40882BF:printf(在/lib/tls/i686/cmov/libc-2.11.1.so中)

    == 14647 == by 0x8048401:main(ex4.c:9)

    请告诉我如何更正我的valgrind输出。我使用的是Ubuntu-10.10,32位版本。我使用source安装了Valgrind-3.8.1。我的gcc版本是4.3.3和glibc版本2.11.1

1 个答案:

答案 0 :(得分:1)

某些Linux发行版附带了已剥离符号的库。结果库要小得多,但缺少在gdb或valgrind中调试它们所需的函数名。

您通常可以找到一个包含每个库的调试符号的包。例如,在Ubuntu上,它是库的包名,后缀为“-dbg”。对于C库libc6,它是libc6-dbg。安装时使用:

sudo aptitude install libc6-dbg