2016-08-13 46 views
0

我已經重寫了新的(unsigned int)和delete(void *)操作符來手動跟蹤和關於堆的信息作爲學習過程。儘管我無法追蹤新的操作員功能。GDB ::呼叫堆棧不完整,覆蓋操作員的新功能?

我在GDB中使用CodeBlocks。無論我是進入運算符函數還是我斷點進入它,如果我步入返回指令,它將無法跟蹤到調用者函數。 「呼叫堆棧」窗口也不顯示呼叫者功能地址。

任何線索?提前致謝!

回答

1

儘管問題中沒有足夠的信息來回答問題,但我會猜測。

我的猜測是你正試圖調試一個優化的版本,甚至可能沒有調試符號。

如果你建立一個沒有優化(-O0)生成的代碼會更緊密地源匹配,因爲優化器將不會內聯函數,移動代碼周圍等。而如果你啓用調試符號(-g)編譯器將把更多信息輸入到二進制文件中,調試器可以使用它來爲您提供更準確的符號和值信息。