自:http://www.china-askpro.com/msg36/qa35.shtml
VC++中調試Release版本時怎樣設置斷點
編號:QA003535
建立日期: 2000年11月13日 最後修改日期:2001年12月11日
所屬類別:
打聽:
操作系統: 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下的大多數調試器都採用這種方法。