qa003535
建立日期:2023年11月13日最後修改日期:2023年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**。
步驟如下:
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下的大多數偵錯程式都採用這種方法。
此問題由李海回答。
VC如何除錯release版本
project setting c c general頁 optimizations中選擇disable debug debug info中選擇program database or program database for edit and conitnue project setting lin...
vc中的release和debug版本的區別
debug通常稱為除錯版本,它包含除錯資訊,並且不作任何優化,便於程式設計師除錯程式。release稱為發布版本,它往往是進行了各種優化,使得程式在 大小和執行速度上都是最優的,以便使用者很好地使用。debug 和 release 的真正秘密,在於一組編譯選項。下面列出了分別針對二者的選項 當然除此...
VC6 0 Release 如何除錯
寫下來吧,當你在release版本下無能為力的時候 首先必須明確的是,什麼是release版程式,什麼是debug版程式 debug通常稱為除錯版本,它包含除錯資訊,並且不作任何優化,便於程式設計師除錯程式。release稱為發布版本,它往往是進行了各種優化,使得程式在 大小和執行速度上都是最優的,...