2010-12-20 61 views
1

我希望在調試發佈應用程序時能夠看到變量值。 我已經將編譯器選項設置爲Z7,並給定了/ DEBUG和/ PDB:鏈接器選項。現在我有一個應用程序的pdb。如何查看發佈版本中的變量值

使用此設置,我可以在代碼中放置一個斷點(Windbg)並正確點擊。但我無法看到變量值。

本地窗口只顯示指針值,但我不能看到相同的內容。例如,如果我有一個指向內部具有int的結構的指針,它只顯示指針的值。如果通過單擊樹中的+來展開相同的結果,我會看到變量名稱的值爲<Memory access error>

我應該如何讓發佈版本顯示變量值?

回答

1

很多時候,你不能看到它們,因爲它們不存在。如果你看看優化後的彙編代碼,你會發現許多中間變量被完全刪除而偏向於性能。這很可能是你所看到的,唯一的解決方法是遵循反彙編並觀察正確的內存位置/寄存器。

+0

我不認爲這裏的優化是這種情況。我甚至無法持久對象。 – Canopus 2010-12-20 14:27:13

+0

看看反彙編 - 你會發現,在斷點處,變量和寄存器的狀態不像調試模式那樣乾淨清晰。事情按不同的順序完成,你關心的指針可能不可訪問。 – tenfour 2010-12-20 14:30:14

+0

我在類函數中,仍然無法看到這個指針的內容。 – Canopus 2010-12-22 04:54:00