为什么 valgrind 的 callgrind 功能在报告中只显示地址而不是 std 函数

问题描述 投票:0回答:0

我正在运行一个示例程序来从

f1
调用函数
main
f1
调用
printf()
。但我在 valgrind 中看不到
printf()
。它只显示一个内存地址。它似乎不理解地址。但为什么?我用
-g 
选项构建了我的C代码。

//test.c
#include<stdio.h>
#include<stdlib.h>

void f1()
{     
      printf("a");
}

int main()
{
        f1();
}

构建方法

cc -g   test.c
valgrind --tool=callgrind  -v  a.out
callgrind_annotate --inclusive=yes --tree=both  callgrind.out.672924  | grep -v build

callgrind 输出(我过滤掉了输出中不需要的行)

75,320  *  /home/ravi/test.c:main

 75,320  *  test.c:main [/home/ravi/a.out]
 75,312  >   test.c:f1 (1x) [/home/ravi/a.out]

 75,312  < test.c:main (1x) [/home/ravi/a.out]
 75,312  *  test.c:f1 [/home/ravi/a.out]          ---> fun f1 is calling printf()
 75,304  >   ???:0x0000000000109050 (1x) [???]    ---> instead of printf() it is just a mem address why?

 75,304  < test.c:f1 (1x) [/home/ravi/a.out]
 75,304  *  ???:0x0000000000109050 [???]

 75,302  < ???:0x0000000000109050 (1x) [???]
memory-leaks valgrind callgrind
© www.soinside.com 2019 - 2024. All rights reserved.