天天看點

VS 設定調試異常觸發

說明

    預設情況下,VS2005,VS2010沒有設定啟動調試的異常觸發,可在菜單調試下,選擇異常,然後勾選上所有的異常中斷的情況:

C++ Exceptions

Common Language Runtime Exceptions

...

作用

    準确定位程式已有的問題,而不是程式崩潰直接退出

注意

     使用者設定的調試異常的資訊,儲存在.suo(Solution User Operation解決方案使用者操作)檔案,如果該檔案沒有上傳到svn伺服器,其他人下載下傳代碼的時候,必須重新設定調試異常的選項。如果沒有進行使用者的修改,預設可能不會生成.suo檔案,該檔案同時儲存了使用者的布局設定

實際應用場景中的效果

1)

    在子產品實作了動态加載的工程裡面,能夠在調用異常的時候,準确定位到異常出錯的情況,一般是空指針

2)

    在處理0xfeeefeee指針錯誤的時候,能夠準确定位到錯誤的代碼

3)

 char szTestString[3600*1058*3] = {0};

實際上預設的棧隻有2M的空間,上述代碼超出了棧的範圍導緻程式崩潰,開啟異常設定之後出現提示:0xC00000FD: Stack overflow

4)Run-Time Check Failure #2 - Stack around the variable 'szError' was corrupted

_TCHAR szError[32] = { 0 };

wsprintf(szError, _T("avcodec_send_packet:%d\n"), nRet);

OutputDebugString(szError);

原因:如果nRet是一個非常大的整型,會導緻數組越界,進而程式崩潰提示如上

影響

現象:在使用VS2005 c++調試程式時,無法使用檔案對話框打開檔案,隻要執行打開檔案對話框,就報0x7703c54f 處最可能的異常: 0x000006BA: RPC 伺服器不可用的錯誤。

解決方法

由于調試需要将調試菜單中的異常都打上勾,将勾都去掉,問題解決

    本文轉自fengyuzaitu 51CTO部落格,原文連結:http://blog.51cto.com/fengyuzaitu/1947071,如需轉載請自行聯系原作者

繼續閱讀