我正在运行一个示例程序来从
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) [???]