VS 断点无法调试学习总结
生活随笔
收集整理的這篇文章主要介紹了
VS 断点无法调试学习总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Visual Studio 2010 斷點無法調試
?一.斷點無法調試
1.觀察是否編譯Release版本。
2.再看“工具—>調試—>常規”下,將“要求源文件與原始版本完全匹配”這一項打鉤,重新編譯。
3.還是不行, 在不能調試代碼文件上全選,然后點擊“編輯—>高級—>設置選定內容的格式”,然后保存,再一次重新編譯。
這時候差不多都可以解決斷點不可調試的問題。?
========
當前不會命中斷點 還沒有為該文檔加載任何符號
?相信很多人在網頁編程時都遇到過這個問題,就是設置斷點時給出提示,之后不能選中。我今天也碰到這個問題了,足足折磨了我一天。設置是debug沒錯,我也沒有找到“C/C++->常規->調試信息格式”這個東東,估計是C++里的設置,我用的是C#?!睂ⅰ币笤次募c原始版本完全匹配”的勾取消“我也試了還是不行,webconfig里的debug設置也是true。折騰了一天才發現,我要調試的文本所處的文件夾里還有一個webconfig,這里的debug是false。我上網找了一下,才知道原來最外邊的webconfig是總的。文件夾內部也可以設webconfig,這個webconfig繼承了總webconfig的信息的基礎上還擁有子文件夾自己的屬性。所以導致我的總webconfig雖然debug是true。但因為文件夾內的程序要參照內部webconfig。所以還是不能正常設置斷點進行調試。真是粗心惹的禍。
萬惡的調試不到斷點。把vs的各種選項翻來復去的勾來勾去。想盡了辦法,已用過的辦法有:
? ? ? ? 一、刪除引用項目的debug
? ? ? ? 二、配置管理器中把所有項目的“生成”打勾、“配置”全部選成“debug“,切忌release
? ? ? ? 三、配置管理器中“活動解決方案配置”、新建一個方案
? ? ? ? 四、將引用目錄統一設到某個目錄,防止沒有引用到最新的(源碼與dll版本不匹配)
? ? ? ? 五、工具、選項、調試、常規中的“要求源文件和原始版本完全匹配”的勾去掉
? ? ? ? 五種辦法都用過了。還是沒有用。
? ? ? ? 最后偶然想到,出現這個問題的原因基本上有兩個:
? ? ? ? 一、要調試的dll不在調試進程的進程空間,調不到
? ? ? ? 二、源代碼使用的dll與調試的源代碼的版本不對,自然調試不到
? ? ? ? ?第一條out了??隙ㄊ堑诙l。終于想起來了。我引用了三四個項目文件,有的項目文件沒有引用“工程”上的現有項目,而是直接引用了一個一直在用的dll。把那個引用刪除,然后改成引用到現有項目。
http://johnsmithblog.blogbus.com/logs/15017286.html
VS2005中設置的斷點無效:“當前不會命中斷點,還沒有為該文檔加載任何符號”。折騰了一陣,其實問題主要出在沒有生成調試信息。解決方法如下:
(1)項目-〉屬性-〉配置屬性-〉C/C++-〉常規-〉調試信息格式,這里不能為“禁用”。
(2)項目-〉屬性-〉配置屬性-〉鏈接器-〉調試-〉生成調試信息,這里設為“是”。
(3)2005默認的MFC程序是使用動態MFC庫(Use ? MFC ? in ? a ? Shared ? DLL)來鏈接的 ??
而動態MFC庫使用的是Multi-threaded ? DLL ? (/MD) ??
由于XP對于PE文件格式監測更加嚴格. ??
就會導致部分使用多線程DLL的可執行文件在調用的時候出錯 ??
修改項目屬性的編譯開關 ??
Project->Property->configuration ? Properties->C/C++->Code ? Generation->Runtime ? Library ??
修改成Multi-threaded ? (/MT)
希望這篇文章能幫到和我遇到同樣問題的人:)
========
當前不會命中斷點,沒有與此行關聯的可執行代碼
情況描述:
VS2010,寫的C++,代碼沒有任何問題。
debug的時候斷點全都變成空心,提示:
當前不會命中斷點。沒有與此行關聯的可執行代碼。
可能的原因包括:預處理器指令或編譯器/連接器優化。
在網上找各種方法都不行。后來自己解決了。
解決方法:
我是64位機器,解決方案平臺本來是win32的。我給新建了一個,x64的,配置都復制win32的。
修改完以后,就可以debug了。。
沒有去深究原因,希望能給你幫助。
========
“當前不會命中斷點。源代碼與原始版本不同”的問題的有效解決辦法
? ? 開發時有一個工程的一個文件的斷點無效,VS 2005提示說當前不會命中斷點。源代碼與原始版本不同,請在斷點選項里設置允許源代碼與原始版本不同。這個是針對單個斷點進行設置。如果要對所有的斷點進行設置,則要在“工具”——〉“選項”——〉“調試”——〉“要求源文件與原始版本完成匹配”去掉勾。
? ? 實際上有比這個辦法更好的辦法,就是將出問題的文件用notepad打開,然后另存為Unicode編碼,覆蓋原來的文件。
? ? ?網上另外有一種辦法是:
通過重新格式化出問題的源文件亦可以解決,即在VS2005中選擇 “編輯”——〉“高級”——〉“設置選定內容的格式”。
========
當前不會命中斷點,源代碼與原始版本不同
提示:當前不會命中斷點。源代碼與原始版本不同.為什么會出現呢?
原因當前大家都清楚,就是因為編譯器生成的符號文件與源代碼不同.
那我的代碼明明已經改變并存檔,并且編譯了,為什么還是不同呢?
1.我想也許是沒有被真正的重新生成吧,
? ?這好辦,清理解決方案,清理工程,為了更徹底,再關閉解決方案,把debug刪掉,ncb文件刪掉,再打開重新生成.有時候這樣問題就解決了,但是我發現問題依舊,還得再想辦法..
2.我又想,我的解決方案中有是不是有幾個工程呢?
? 如果有幾個工程,在其它工程中代碼改變了卻沒有重新生成,如果這個時候下斷,當前調用的模塊(dll,exe)等就會出現與代碼不一致了.但是我一看才知道記錯了,我這個解決方案里只有一個工程的,也沒有調用其它模塊,就只有一個對話框而以.....再想.
3.即然VS不認為這個文件改變了,那我直接給他換個新的行嗎?
? 我果斷改掉了這個不能下斷的.cpp的文件名和對應.h的文件名,并且再改掉所有調用到.h的地方(.h文件名變了當然得改).編譯,調試運行,下斷,終于是好了,可以下斷,沒有提示了.....但是.....這種方法也太不方便了吧,一個大點的工程,如果不能下斷的剛好是一個常用的類,那不得累死啊...再想.
4.也想不出什么了,網上看看吧.好多方法啊...(代碼文本格式問題)
? ?前兩種方法都有說,
? ?還有就是去掉 ?代碼一致性檢查 ?...我想這種方法不是我想要的,只是掩飾問題罷了,不是解決問題之道.
? ?還有說 "編輯"-->"高級"-->"格式化選定內容"(也就是選中文本,然后按ctrl+K,ctrl+F),不過試了不管用,不過即然別人說了,肯定某種情況下是能解決問題的.
? ?還有說可能是代碼行過長,或者加了什么特殊字符的原因.
? ?還有說用記事本重打開不能下斷的文件,再另存為UNICODE編碼的文件.
? ?感覺估計是還有此道理,MS也不一定能考慮的萬無一失,有可能編譯器處理文本時會有點問題,并且我的代碼里確實有幾行代碼較長,卻沒的換行.
? 先改吧,為了一次搞定這個可能的格式問題,單行過長問題改完后,再用記事本另存成unicode編碼的.保存編譯.......過了不長的時間,F5調試運行,再去下斷,我的那個神啊.........終于能下正常斷點了,不再提示了.....
========
總結
以上是生活随笔為你收集整理的VS 断点无法调试学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#垃圾回收学习总结
- 下一篇: Win32 鼠标绘图代码研究