VC++中調試Release版本

自:http://www.china-askpro.com/msg36/qa35.shtml
VC++中調試Release版本時怎樣設置斷點


編號:QA003535
建立日期: 2000年11月13日 最後修改日期:2001年12月11日
所屬類別:

C/C++ - 其他方面

打聽:
    操作系統: win9x
    編程工具: VC6.0
    問題: VC++中調試Release版本時怎樣設置斷點?我的程序Debug 版本工作正常,Realse 版本一運行就出錯!Message Box顯示:Unhandle Exception:... Aceess Violation
    該如何調試,按F9設斷點也不行!顯示break point 無效。(我的程序是多線程的)請介紹一些調試Release版本的方法或文章。

回答:

    VC++中Release版本是無法進行源代碼調試的。一般可以在你懷疑有錯誤的地方執行前插入MessageBox函數,在函數中顯示可能導致錯誤的變量的值。或者插入寫文件的語句,輸出可能導致錯誤的變量的值到一個記錄文件。
    
    安寧的意見:
    在需要加斷點的地方加上:
    __asm int 3
    不過調試的時候無法顯示C程序,只有asm代碼。
    
    xiarifeng的意見:
    步驟如下:
    1、在Project Settings裏選Settings For爲All Configurations。
    2、在C/C++標籤中,Debug info 選 Program Database。
    3、在Link 標籤中,Category選 Debug,選中Debug info 複選框和Microsoft format。
    現在就可以像在調試版本中那樣設置斷點進行測試了,由於代碼優化,有些變量觀察不到,行的運行順序可能也會不同。
    說明:ASSERT宏在發行版本中不起作用,而應該用VERIFY來進行發行版的調試。如果發行版本運行有問題,可以先禁止所有代碼優化再進行調試。
    
    roy
    請問,int3是設斷點用的中斷嗎?因爲好像softice也是這樣做的。如果是,是cpu提供的支持還是windows提供的?
    答:int 3是專門用來設置斷點的,是CPU定義的,Windows和DOS下的大多數調試器都採用這種方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章