C Linux 跟踪所有函数调用,包括库中的函数

标签 c linux

我有这样的程序

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/

相关文章:

c++ - 在C++应用程序中嵌入Lua脚本会把Lua部分编译成机器码吗?

C (std=c99) 指向结构内存分配的指针

python - 操纵列字段以获得清晰的表示

c++ - Linux 中的 __func__ 与 VS 中的 __FUNCTION__

c++ - 我可以使用 nullptr 作为 Linux 系统调用参数吗?

python - Cython cdef 没有速度增加

c - 十进制数的循环二进制

c - 指向数组的指针的表示是什么?

linux - 为什么NTP监听的是广播IP

linux - 在 AWS Code Commit 中使用用户名和密码进行 Git pull/克隆