2012-12-11 24 views
1

我開發了一個GCC C可執行項目與Atmel Studio 6。目標設備是ATtiny2313A。有一個C文件和其他頭文件。avr-gcc:沒有符號位於任何調用堆棧幀

當我設置優化大小時,我無法調試解決方案,因爲當我進入包含在頭文件中的函數時,調試器顯示錯誤No source available. No symbols are located for any call stack frame. The source code cannot be displayed

調試器與所有其他優化類型一起工作正常(-O1,-O2,-O3)。

此外,該軟件在真正的芯片上工作。

我需要知道我的代碼的時間,但我也需要保存閃存空間,因此我不能避免調試優化大小的代碼。

看來問題在於鏈接器無法鏈接代碼的不同部分,因爲某些符號被遺漏。 我怎樣才能讓它使用所有必要的符號?

+1

不確定'-Os'是否會覆蓋它,但是您可以嘗試在編譯標誌中添加'-fno-omit-frame-pointer'。 – Michael

回答

0

確保您使用的是gdwarf2目標文件格式。我有一個類似的問題,編譯後的代碼沒有正確鏈接回源代碼。