2013-07-14 51 views

回答

3

有什么办法从C程序中的函数名/地址访问堆栈帧指针?

你的问题没有意义:C程序中函数的名称和地址在链接时固定并且(通常)不会改变。另一方面,堆栈指针是一个运行时属性,并且可能在每次调用该函数时都会更改。当你在功能内停下来时,你可以找到堆栈指针,例如,如果你在函数内停止,你可以找到堆栈指针info frame GDB命令。

+0

谢谢,我知道信息帧命令。实际上,我试图探索一些使用某些指针操作来访问FP的方法。 –

+0

为了访问FP,你需要启动*某处*,并且你的问题完全不清楚你想从哪里开始。这听起来像你想从函数地址开始,但是我希望解释函数地址与FP完全无关,所以你不能从这里开始。如果你从其他地方开始,请澄清你的问题,这样我们可以给你一个更好的答案。 –

+0

谢谢,我会在进行更多分析后再回来。 –

1

在函数的顶部声明一个变量并取其地址?

void foo() 
{ 
int dbg;void* sfp = &dbg; 

}