原文:http://www.cppblog.com/qiujian5628/archive/2008/01/24/41806.html
最近一工程中,在除錯的時候,有些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,所以各種警告有些氾濫,他們又沒有及時處理,這個警告就被淹沒在警告堆裡了……
vs2005奇怪的斷點無效問題!
vs2005奇怪的斷點無效問題!最近一工程中,在除錯的時候,有些cpp檔案都可以設定斷點並且跟進去,但是有乙個cpp檔案總是不能設定斷點,提示 當前不會命中斷點。源 與原始版本不同。重新更換過n次檔案都不起作用,然後在goole搜尋此類類似問題,找到下篇文章,然後我把那個cpp檔案用記事本開啟,另存...
vs2005奇怪的斷點無效問題
最近一工程中,在除錯的時候,有些cpp檔案都可以設定斷點並且跟進去,但是有乙個cpp檔案總是不能設定斷點,提示 當前不會命中斷點。源 與原始版本不同。重新更換過n次檔案都不起作用,然後在goole搜尋此類類似問題,找到下篇文章,然後我把那個cpp檔案用記事本開啟,另存為unicode格式,再重新編譯...
VS2005斷點失效(無效)的問題
vs2005下使用vc,部分斷點無效,顯示 當前不會命中斷點。還沒有為該文件載入任何符號 1 無效斷點所在的專案和啟動專案的設定 專案 屬性 配置屬性 c c 常規 除錯資訊格式,這裡不能為 禁用 2 專案 屬性 配置屬性 鏈結器 除錯 生成除錯資訊,這裡設為 是 3 c c 優化 優化選擇 禁用 ...