![](/img/trans.png)
[英]Debugging .dmp file with Visual Studio 2010 to specific line of source
[英]Warning given when debugging source code in visual studio 2010
我在源代碼中設置了斷點,但它會告訴我源代碼與原始代碼不同。 它不會命中breakpoint.Hit位置允許更改源代碼。 任何人都可以解釋我的問題嗎?
源代碼文件的校驗和與校驗和不匹配到PDB文件中。
解決那個重建解決方案。
解決方法:在斷點的“位置”屬性中選中“ Allow source code to be different
編譯和運行發布版本時可能會發生這種情況。 在Release版本中,編譯器進行可能更改或刪除部分代碼的優化,請參考以下示例:
static void Main()
{
int x = 10 + 5; // <---- BREAKPOINT HERE
Console.WriteLine("Foo");
}
如果在調試版本中編譯並運行該代碼,則會像往常一樣觸發斷點。 在發布版本中,編譯器將看到“x”從未使用過,並且將“優化掉”整行,這意味着斷點永遠不會被擊中!
做一個Build - > Clean Solution,然后Build - > Build Solution。 然后再次嘗試調試,確保活動配置是調試。
您的源代碼與編譯時不同。 您可以停止,清理和重建項目。
當我在一個解決方案中有一個類庫而在另一個解決方案中有一個Web項目時,我遇到了這個問題。 在逐步執行websolution中的代碼時,它進入了我的類庫。 這導致在我的Web解決方案中打開類庫文件。
當我在類庫中更改了一些代碼時出現了問題。 像往常一樣,我按照正確的順序對兩個項目進行了構建。 但是,我會得到消息說源代碼不同。 這是因為我已經在我的網絡解決方案中打開了類文件的舊“視圖”,這是因為以下選項已被關閉 。
選項>環境>檢測何時在環境外更改文件
關閉我的Web項目中的類文件解決了我的問題。 我正在改變這個選擇。
希望這有助於某人。
上面的建議在運行單元測試時對我沒有用 - 我正在為整個解決方案執行一個干凈的重建,但是在〜\\ UnitTests \\ bin \\ Debug目錄中沒有刪除DLL和PDB文件,所以我有手動刪除這些文件,然后右鍵單擊UnitTests目錄並選擇“Build”。
請注意,在我的情況下,我使用Visual Studio 2013和更新3。
更新:
結束創建批處理文件以清理和構建我的解決方案,以便Visual Studio不會錯誤地離開某個項目而不重建它們:
msbuild.exe "MyClassLibrary\MyClassLibrary.csproj" /t:Rebuild /p:Configuration=Debug
msbuild.exe "UnitTests\UnitTests.csproj" /t:Rebuild /p:Configuration=Debug
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.