2013-07-14 90 views

回答

3

有什麼辦法從C程序中的函數名/地址訪問堆棧幀指針?

你的問題沒有意義:C程序中函數的名稱和地址在鏈接時固定並且(通常)不會改變。另一方面,堆棧指針是一個運行時屬性,並且可能在每次調用該函數時都會更改。當你在功能內停下來時,你可以找到堆棧指針,例如,如果你在函數內停止,你可以找到堆棧指針info frame GDB命令。

+0

謝謝,我知道信息幀命令。實際上,我試圖探索一些使用某些指針操作來訪問FP的方法。 –

+0

爲了訪問FP,你需要啓動*某處*,並且你的問題完全不清楚你想從哪裏開始。這聽起來像你想從函數地址開始,但是我希望解釋函數地址與FP完全無關,所以你不能從這裏開始。如果你從其他地方開始,請澄清你的問題,這樣我們可以給你一個更好的答案。 –

+0

謝謝,我會在進行更多分析後再回來。 –

1

在函數的頂部聲明一個變量並取其地址?

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

}