c - C中堆栈帧的函数参数名称和变量名称?

标签 c linux gcc gdb elf

<分区>

有没有办法从堆栈帧中获取函数参数和变量 例如

foo(int a){
    char z;
    // Can I know what is the name of my local variable and argument inside this function 
}

我在这个函数中想要的是参数和变量的名称。我也有兴趣了解他们的类型。 我还可以访问函数指针的堆栈帧。我可以从函数指针中获取有关参数、变量名及其数据类型的信息吗?

我很好地用 -g 或另一个标志编译它,以便符号在运行时出现在可执行文件中。

最佳答案

// Can i know what is the name of my local variable and arugment inside this function

如果您使用 GDB 在函数内部中断,并且如果您使用 -g 编译代码,那么 GDB info locals 可以告诉您局部变量的名称和论据,非常清楚,信息可用的。

坏消息:您需要实现 50% 的调试器才能获取该信息,这是一项非常重要的任务。

所以答案是:是的,你可以,但是这需要付出很多努力,你真的应该为你实际上想要实现的目标寻找不同的解决方案。

关于c - C中堆栈帧的函数参数名称和变量名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39537617/

相关文章:

c - 局部变量未在内联函数中对齐

c - duktape 对多个绑定(bind)的 js 函数使用通用的 c 函数

c - loader 和 C 运行时初始化的作用区别

c++ - 文件重定向运算符 ">"不适用于 CreateProcess() API

linux - Linux核心转储是否有线程CPU使用信息

linux - 如何修复linux下编译错误

c - 编译时出错 - 初始化程序中指定的未知字段

c - libcurl HTTPS POST 数据发送?

linux - 使用 awk 或 sed 重新排列具有空值的列

c - 指向非线程本地数据的线程本地指针