2011-07-18 37 views
0

我在21 C#項目(ANY CPU)解決方案中的單個C#項目存在問題。Visual Studio 2010 SP1 - C#PDB文件損壞 - 顯示錯誤的行號

斷點沒有命中 - 當我強制調試器附加(Debugger.Launch())時,我可以看到調用堆棧顯示正確的功能,但是行號非常錯誤。

在一個具體的例子中,我在1020行的第346行有一個斷點 - 但是調試器導航到第10745行,這導致調試器顯示完全不同的文件的結果。從日誌文件中我可以看到正在執行的方法正確。

經過很多頭痛之後,我選擇在安裝了VS 2010 SP1的2臺不同的機器上嘗試 - 並且這些機器顯示出完全相同的行爲。

我已經嘗試完全清理解決方案,手動刪除所有PDB文件,重新啓動VS,重新啓動機器,清空VS Symbol緩存(工具>選項>調試>符號),刪除所有「符號文件(.pdb)位置「並刪除解決方案的」.SDF「數據庫。

我在調試模式下編譯項目,並驗證項目上未啓用「優化代碼」。

解決方案中不同項目的斷點確實起作用 - 所以看起來只有這一個項目出於某種原因生成了損壞的PDB文件。但是,我不明白爲什麼這個單一的項目應該與其他項目不同。唯一真正的區別是我在這個特定的項目中有2個Web引用 - 並且足夠有趣的是,在這些存根類中,PDB文件總是指示調試器最終結束。

特定的解決方案正在一個完全修補的Windows 2003 x86機器上編譯和調試。

如果有人能給我一個提示如何解決這個問題,我將不勝感激。

+0

只是一個想法,重命名Web引用,然後再試一次。 –

+0

試過這個 - 沒有運氣 - 同樣的問題 – user849496

回答

1

嘗試右鍵單擊項目,轉到生成選項卡 ​​- >單擊高級按鈕 - >檢查輸出區域 - >選擇調試信息爲僅限pbd。有時它會改變。

+0

謝謝你的建議,非常感謝。然而,沒有運氣 - 同樣的行爲。它處於「完全」狀態,將其更改爲「僅限pdb」,但沒有解決問題,爲什麼我又將其重新更改爲「完整」。 – user849496

+0

您是否認爲環境運行?或者一些緩存的東西。也嘗試刪除bin和obj文件夾並重新編譯。 – Howard

+0

我試圖清除所有我能想到的 - 包括刪除bin和obj文件夾。我認爲這可能是VS中的一個錯誤,由於某種原因生成無效的PDB文件。不知道爲什麼突然發生 - 一年半以來一直沒有出現問題。沒有做任何不尋常的事情,只是通過添加6行代碼來修改單個方法。是的,在絕望中,我試圖刪除這個修改,但結果相同。 – user849496