2010-06-05 56 views
1

我想知道我們如何繼續調試目標上的STACKOVERFLOW問題。 我的意思是我們應該遵循什麼步驟才能得出結論。如何調試目標上的stackoverflow問題

+0

你是什麼意思「目標」?我們需要更多信息。 – 2010-06-05 18:12:32

+0

我把目標,使其通用...但我的問題是ARM 7,9處理器。 假設我有Lauterback和trace32可用 – dara 2010-06-05 18:15:06

回答

1

在堆棧空間末尾放置一個字的內存寫入觀察點。然後調試器將在該位置寫入時中斷,並且您可以看到有什麼問題。

+0

這看起來像一個不錯的選擇,會嘗試這個 – dara 2010-06-11 13:36:14

0

通過調試器(如gdb)運行它。在堆棧溢出時的回溯會準確地告訴你哪個或哪些函數無限期地重複。從那裏,找出那些函數的哪些輸入不會改變,並且不會將函數(如果是遞歸的)移動到將會結束遞歸的基本情況。

1

所有堆棧都可以在啓動時用某個十六進制值填充(例如0xAAAAAAAA)。然後使用特殊的例程,您可以通過計算堆棧末尾的已知值(0xAA ..)的數量,定期監視所有堆棧的最大使用情況,直到找到第一個差異。