為什麼VC中DEBUG版本可以正常執行的程式有時無法在RELEASE版本下正常執行 (轉)
為什麼VC中DEBUG版本可以正常執行的程式有時無法在RELEASE版本下正常執行 (轉)[@more@]
在VC中當整個工程較大時,時常為出現在DE狀態下能執行而在RELEASE狀態下無法執行的情況。由於開發者通常在DEBUG狀態下開發軟體,所以這種情況時常是在我們辛苦工作一兩個月後,滿懷信心的準備將軟體發行時發生。為了避免無謂的損失,我們最好進行以下的檢查:
1、時常測試軟體的兩種版本。
2、不要輕易將問題歸結為DEBUG/RELEASE問題,除非你已經充分對兩種版本進行了測試。
3、預處理的不同,也有可能引起這樣的問題。
出現問題的一種可能性是在不同版本的編譯間定義了不同的預處理標記。請對你的DEBUG版本的軟體試一下以下改動:
- 在"Project Setting(ALT-F7)" 中的C/C++項中設定目錄(category)為"General",並且改動"_DEBUG"定義為"NDEBUG".
- 設定目錄為"Preprocessor"並且新增定義"_DEBUG到"Undefined Symbols"輸入框.
- 選擇Rebuild ALL,重新編譯.
- 將ASSERT() 改為 VERIFY()。因為ASSERT中的內容在Release版本中不被編譯。
- 找出定義在"#ifdef _DEBUG"中的程式碼,如果在RELEASE版本中需要這些程式碼請將他們移到定義外。
- 查詢TRACE(...)中程式碼,因為這些程式碼在RELEASE中也不被編譯。
4、變數的初始化所帶來的不同,在不同的,或是在DEBUG/RELEASE版本間都存在這樣的差異,所以請對變數進行初始化。
5、是否在編譯時已經有了警告?請將警告級別設定為3或4,然後保證在編譯時沒有警告出現.
6、是否改動了資源.
7、此外對RELEASE版本的軟體也可以進行,請做如下改動:
- 在"Project Settings" 中 "C++/C " 專案下設定 "category" 為 "General" 並且將"Debug Info"設定為 "Program Database".
- 在"Link"專案下選中"Generate Debug Info"檢查框。
- "Rebuild All"
- 無法獲得在MFC DLL中的變數的值。
- 必須對該軟體所使用的所有DLL工程都進行改動。
另:
MS BUG:MS的一份技術文件中表明,在VC5中對於DLL的"Maximize Speed"選項並未被完全支援,因此這將會引起錯誤並導致程式崩潰。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-996097/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- VC中debug和release版本的區別
- windows10系統下無法正常執行印表機怎麼辦Windows
- 正常執行時間監控
- quartz不正常執行.執行一段時間後無故停止quartz
- shell 命令在終端可以執行成功,為什麼放在 groovy 指令碼中不執行?指令碼
- SOS?求教執行CMP之create,能正常執行,但資料庫中無資料資料庫
- Server正常執行整1年。Server
- MySQL連線數過多導致服務無法正常執行MySql
- JMS pub/sub執行正常但訊息沒有
- Linux下可以替換執行中的程式麼?Linux
- EJB裡使用了file io,執行正常,但是沒有執行file io操作???
- laravel-MIX 非手冊環境下無法正常執行,解決方案記錄Laravel
- 可以在Windows的"執行"中直接執行的程式Windows
- VC++中實現程式互斥執行 (轉)C++
- 為什麼我下的jivejdon-2.5在jb中執行不了
- 全新安裝jivejdon不能正常執行
- USB裝置執行不正常怎麼回事?
- 在新克隆的VM上SQLPLUS不能正常執行SQL
- 谷歌CloudSQL全面投入 承諾99.95%正常執行時間谷歌CloudSQL
- 系統為什麼會在執行時當機
- Win10系統洛奇英雄傳無法正常執行的解決方法Win10
- 請問 有沒有遇到過 pyinstaller 打包成 exe 去掉 doc 視窗執行不成功,不去掉可以正常執行?
- 伺服器上的程式碼怎麼可以在本地測試執行Debug伺服器
- 在OSX和Windows版本Docker上執行GUI程式WindowsDockerGUI
- cmd執行java、javac命令正常,其他程式報無法啟動java虛擬機器Java虛擬機
- 驗證物理備庫是否執行正常
- Python的執行版本Python
- 在DOS視窗執行java命令中文顯示正常,執行javac命令中文亂碼Java
- vc++生成程式不需要.net執行環境的可以執行exe程式的方法C++
- 讓 Markdown 中的程式碼可以實時執行
- 單執行緒的 Javascript 為什麼可以非同步執行緒JavaScript非同步
- 如何在 Windows 中檢查計算機正常執行時間Windows計算機
- 確保租用的香港伺服器執行正常的措施有哪些伺服器
- 關於如何解決IDEA中同一個src下多個類中之一執行時自動報錯其他類中的問題導致想要執行的類無法正常執行的問題的解決思路Idea
- HouseMenu在DNN4.6中無法正常工作。DNN
- zSeriesLinux可以執行在這個版本的VM下(轉)Linux
- 分析為什麼有時在非UI執行緒更新UI會崩潰UI執行緒
- 其他資訊: 混合模式程式集是針對“v2.0.50727”版的執行時生成的,在沒有配置其他資訊的情況下,無法在 4.0 執行時中載入該程式集模式