gdb 檢視函式呼叫堆疊(frame概念)

2022-05-17 23:52:20 字數 657 閱讀 4413

1,使用bt(backtrace )命令檢視當前堆疊

(gdb) bt

#0 muduo::poller::poll (this=0x62e010, timeoutms=10000,

activechannels=0x7fffffffe3c0) at poller.cc:31

#1 0x0000000000403f60 in muduo::eventloop::loop (this=0x7fffffffe390)

at eventloop.cc:80

#2 0x0000000000402876 in main () at test8.cc:41

#0:是當前執行的函式(棧幀)(fram)

2,使用f(frame)命令:檢視當前frame(函式,棧幀)裡的變數值等資訊

3,使用f(frame) n:檢視某乙個frame(函式,棧幀)裡的變數值等資訊

n是bt命令返回的數字,標識出是哪乙個frame

4,使用up/down命令,向上或向下移動棧幀

5,info命令

c/c++ 學習互助qq群:877684253

函式呼叫堆疊

一 函式呼叫堆疊 認真體會每一行指令位址!include intsum int a,int b mov ebp,esp 讓esp回退到ebp的位置,回退棧幀的過程中,沒有對棧幀中的值進行清0的操作 pop ebp 出棧並把出棧的值賦給ebp int main 下圖為上面示例函式,程式在sum函式中,...

函式呼叫堆疊

一 棧 1 傳統的棧 被定義為乙個特殊的容器,使用者可以將資料壓入棧中,也可以將壓入 棧中的資料彈出,但必須遵守一條規則 先進後出。2 計算機系統中的棧 是乙個有以上屬性的動態記憶體區域,壓棧操作使得棧增大,彈出操作使棧減小。棧通常是向下增長的。3 最重要的是棧儲存了乙個函式呼叫所需的維護資訊,這通...

函式呼叫堆疊

乙個函式的執行在棧上開闢記憶體。在函式呼叫時,第乙個進棧的是主函式呼叫語句的下一條可執行語句的位址,然後是函式的各個引數。在大多編譯器中,引數是由右往左入棧的,然後再是函式中的區域性變數。下面給乙個例項 int sum int a,int b int main 其中,main函式的反彙編指令 其中,...