我有像
这样的程序int main()
{
char *ptr = malloc(2);
free(ptr);
}
所以我只想跟踪程序内发生的所有函数调用,直到系统调用
喜欢
malloc
|____ libc( sme_fn)
|
|__sme_system_call
你能告诉我某种方法吗?
答案 0 :(得分:2)
如您所知,“系统调用”有两种形式:
直接调用操作系统(“打开”,“关闭”,“分叉”,“执行”,“退出”等)
平台的标准C运行时函数(“printf()”,“malloc()”,“free()等”
您可以使用“strace”查看前者。
您可以使用gdb查看(至少调用)后者。
您可以直接从源代码中查看完整的实现和所有内部结构:
最后,如果您遇到“malloc()”问题,“valgrind”是(非常有用的)非常非常有用的工具。
答案 1 :(得分:1)
如果您正在使用gcc,请使用-pg进行编译,然后使用gprof命令。
或者,如果您使用的是Linux,则可以使用oprofile执行类似操作而无需重新编译。
这两个工具都应该为您提供调用图表,这正是您所需要的。