[英]What are efficient ways to debug an optimized C/C++ program?
很多時候我使用優化代碼(有時甚至涉及矢量化循環),其中包含錯誤等。 如何調試這樣的代碼? 我正在尋找任何類型的工具或技術。 我使用以下(可能是過時的)工具,所以我想升級。
我使用以下內容:
謝謝
調試優化程序總是比較困難,但總有辦法。 一些額外的提示:
調試發布版本時,你可以放入__asm nops; 作為斷點的占位符(int 3)。 這很好,因為您可以保證斷點位置而不會弄亂編譯器優化或編寫printf / cout語句。
當然,調試非優化版本總是更容易。 如果做不到這一點,反匯編代碼會很有幫助。 我使用的其他技術包括通過強制打印或記錄中間結果,或者將關鍵變量更改為“volatile”來部分去優化代碼,這樣我至少可以在調試器中查看該值。
機會就是你所謂的優化代碼被削減到剃須周期(這使調試變得困難),但實際上並沒有非常優化。 這是我的意思的一個例子。
我會關閉編譯器優化,自己調試和調整,然后如果代碼中有熱點實際上是編譯器看到的代碼(不在外部庫中),則重新啟用編譯器優化。 (我將熱點定義為經常找到PC的代碼的一部分。這會自動豁免包含函數調用的循環,因為它們會偷走PC。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.