VC斷點不可用的問題


文章一

今天我筆記本的VC編譯器莫名其妙的就進入不了斷點了,而台式機確是好的,問題是一進入調試,斷點就自動被取消了,郁悶了一下午,無法進入斷點的原因很多,都有想重裝VC編譯器的打算了,晚上回來查查資料,發現原來是我的VC配置出了問題,解決方法:

Project -> Setting -> Link

genreal
selectd“ Generate debug info”

現在把與此問題相關的一些設置和問題的解決方法奉獻給大家:

1、

Project -> Setting -> c/c++ table->genreal

“debug info” set to “program database for edit and continue”

2、

Project -> Setting -> Link->genreal
selectd“ Generate debug info”

文章二

//************************************************************************//

1.解決方案配置是 Debug ,但沒有在工程屬性頁中“Alt+F7”->“配置屬性”->“C/C++”->“常規”->“調試信息格式”,選擇“用於“編輯並繼續”的程序數據庫(/ZI)”。另外,在“配置屬性”->“鏈接器”->“調試”->“生成調試信息”中,選擇“是”。

2.解決方案配置是 release ,直接F5調試就可以,VS會提示你“沒有找到調試信息,要繼續調試嗎?”,選擇“是”即可。

3.檢查工程所在路徑是不是有中文,有VS不支持中文路徑的可能

4.刪掉.ncb和.opt,rebuild all。

 5.看是否有:“warning C4819: 該文件包含不能在當前代碼頁(936)中表示的字符。請將該文件保存為 Unicode 格式以防止數據丟失”警告,把那個cpp文件用記事本打開,另存為unicode格式,再重新編譯。

6.工具->選項->調試->常規,將”要求源文件與原始版本完全匹配”的勾取消就可以了!

//************************************************************************//

文章三

最近一工程中,在調試的時候,有些cpp文件都可以設置斷點並且跟進去,但是有一個cpp文件總是不能設置斷點,提示“當前不會命中斷點。源代碼與原始版本不同。” 重新更換過n次文件都不起作用,然后在goole搜索此類類似問題,找到下篇文章,然后我把那個cpp文件用記事本打開,另存為unicode格式,再重新編譯,最后問題解決!也可以更改vs2005的設置,選項->常規,將要求源文件與原始版本完全匹配的勾取消就可以了!

清理整個解決方案,重新編譯,無效。刪除整個目錄,從SubVersion服務器上Down下來重新來過,一樣無效。上網搜索,未果。郁悶地放手了。

修一個Bug,提交,然后更新了一下,編譯,運行,發現我也染上這個症狀了——只有那個文件無法插入斷點。倒有些安心了,看來不是VC的Bug,而是源代碼的問題。把這個文件回滾到更新前的版本,果然就沒問題了。更新到下一個版本,問題就出來了。查看改動,沒瞧出來什么。忽然發現有一個不常見的警告:“warning C4819: 該文件包含不能在當前代碼頁(936)中表示的字符。請將該文件保存為 Unicode 格式以防止數據丟失”。呵呵,應該就是它了。

警告有兩個,一個是文件的,不帶行號,另一個帶行號。那一行是一個case語句,最后加了一句中文注釋。把注釋刪掉,問題解決。把代碼拷貝到UltraEdit中看十六進制代碼,逐個字節濾過去,沒發現什么奇怪的。然后開始逐步逼近問題,把注釋前后漢字逐個拿掉,直到問題消失,最后剩下來的核心詞是“即時消息”,搜索這個詞,果然在整個項目里只有一個。在這個詞前面增、刪一個空格,問題就消失。郁悶的是把同一行代碼拷貝到其他文件、位置都不會有這個問題。

恢復所有改動,更新到最新版本,問題又變了:警告只剩下一個,沒了行號!用插入空格的方法定位問題,發現錯誤向前移動了幾行。而且這次就算把警告消掉,還是無法添加斷點。嘗試了好一會兒沒有效果,干脆用VC直接把整個文件格式化了一次,斷點又可以用了。而且,這次再怎么插入空格都不會有C4819了。對比了一下修改前后的文件,依然沒有什么發現。

搜索了一下,其他人也遇到過C4819,有的是因為Unix換行格式,甚至boost庫中一個非ASCII作者名都會引發這個錯誤,但是這里應該是中文雙字節字符錯位的問題吧。因為警告等級開到了4,所以各種警告有些泛濫,他們又沒有及時處理,這個警告就被淹沒在警告堆里了……

另也有:

我也遇到過相同的問題,也是斷點無法跟進。解決方法是在斷點之前加上MessageBox就可以了,原理未知


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM