我有这样的程序
int main()
{
char *ptr = malloc(2);
free(ptr);
}
所以我只想跟踪程序内部发生的所有函数调用,直到系统调用
喜欢
malloc
|____ libc( sme_fn)
|
|__sme_system_call
你能告诉我一些方法吗?
最佳答案
如您所知,“系统调用”有两种形式:
直接调用操作系统(“open”、“close”、“fork”、“exec”、“exit”等)
平台的标准 C 运行时函数(“printf()”、“malloc()”、“free() 等)
前者可以用“strace”查看。
您可以使用 gdb 查看(至少调用)后者.
您可以直接从源代码查看完整的实现和所有内部结构:
最后,如果您在使用“malloc()”时遇到问题,“valgrind”是(几个)非常非常有用的工具之一。
关于C Linux 跟踪所有函数调用,包括库中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10634820/