這個問題一般有兩個版本
1.當前不會命中斷點,還沒有為該文檔加載任何符號。
2.當前不會命中斷點,源代碼與原始版本不同。
要解決第一個問題,就要了解一種文件格式“PDB(Program DataBase)”,我們在給一個.Net程序集設置斷點的時候,所有的調試信息都存放在這個文件,這里不打算深入探討它,只需要知道它描述了我們程序集的斷點,要調試程序就得加載它就夠了.
那么第一個問題的描述我們可以看成是沒有加載到PDB文件或者加載失敗了,解決方法是
在程序調試時,使用Visual Studio的 調試》窗口》模塊 查看當前程序加載的所有模塊,找到你要調試的模塊,右鍵菜單中就有一個加載符號的選項,選擇對應的PDB文件即可。
關於PDB文件更詳細的介紹 PDB文件概說
現在來討論第二個問題
其實這個問題應該是很容易解決的,我在網上搜索的時候發現很多人沒描述到重點,甚至是重新建立了一個項目來解決.我們知道每次F5開始調試程序都算是生成了一個新版本,那么這個問題的極有可能就是PDB文件記錄的源碼版本與你現在調試的版本不一致.
再讓我們想想什么時候會出現這種情況呢,常見的會影響到程序版本的操作就是當你編譯失敗時,Visual Studio詢問你是否繼續並運行上次的成功生成
這個時候應該就影響到了程序的版本,但我有個不明白的地方就是為何PDB文件不會每次編譯都重新生成呢?還是以上推斷另有隱情?
那么這個時候解決方案就只能是同一PDB文件與源碼的版本一致啦,我一般圖省事,都是清理整個解決方案再重新生成,解決.
以上就是我對這個問題的一些經驗,我覺得只能解決問題(反正我每次都可以( ̄y▽ ̄)╭),卻感覺還沒有摸到這個問題的更深本質,希望園子里遇到過的都來探討一下。


