簡體   English   中英

即使加載了PDB,Visual Studio 2012也拒絕顯示源代碼

[英]Visual Studio 2012 refuses to show source, even with PDB loaded

我正在嘗試調試發布Web服務的Azure應用程序,而Visual Studio 2012拒絕顯示源代碼,即使加載了PDB也是如此。 這是我的設置:

在DEBUG>選項和設置...>調試>常規:

  • []啟用我的代碼
  • []啟用.NET Framework源步進
  • [x]啟用源服務器支持
  • []要求源文件與原始版本完全匹配

在DEBUG>選項和設置...>調試>符號:

解決方案屬性>調試源文件:

  • C:\\路徑\\為\\我\\ CSfiles \\
  • c:\\ Program Files(x86)\\ Microsoft Visual Studio 11.0 \\ VC \\ crt \\ src \\
  • 等等

重現步驟:

  1. 將Azure應用程序部署到Development Fabric(計算仿真器)。
  2. 以管理員身份打開VS2012。
  3. 附加到WaWorkerHost.exe,等待符號加載並驗證MyModule.dll是否加載了符號。
  4. [可選]選擇“解決方案屬性...”>“調試源文件”,並將c:\\ path \\添加到\\ my \\ CSfiles \\作為第一個條目。
  5. 選擇DEBUG> New Breakpoint> Break At Function ...
  6. 功能:MyClass.MyMethod。 語言:C#。
  7. VS2012抱怨它無法找到,但它增加了斷點。
  8. 使斷點命中。
  9. 點擊后,雙擊“調用堆棧”的第一項。 它是MyClass.MyMethod,由System.ServiceModel.dll中的類調用。
  10. VS2012顯示“無源可用”,僅顯示“顯示反匯編”選項(如下圖所示):

在此輸入圖像描述

在Call Stack窗口,如果我右鍵單擊當前方法(被斷點命中),並選擇Symbol Load Information ...,最后一行顯示:

c:\path\to\my\PDBs\MyModule.pdb: Symbols loaded.

如果我打開DEBUG> Windows> Modules,我的模塊會正確顯示:

  • 路徑是正確的。
  • 優化=否。
  • 用戶代碼= N / A(與其他所有內容一樣)。
  • 符號狀態=已加載符號。
  • 符號文件= c:\\ path \\ to \\ my \\ PDBs \\ MyModule.pdb(這是正確的)。

是的,應用程序是使用完整的調試信息構建的。 我已經使用此工具轉儲了PDB,並在正確的位置顯示了我的源代碼。

有趣的是,我可以從.NET Framework中看到所有來源。 我只是看不到自己的來源,這真的令人沮喪。

我已經從user-dir \\ Documents \\ Visual Studio 2012 \\ Projects中刪除了任何.suo文件,但沒有幫助。 我想這無濟於事,因為我總是附加一個可執行文件,它會自動創建一個新的解決方案。

我以為微軟發布了.net的所有代碼。 但顯然ServiceModel程序集仍然關閉。

可能是ServiceModel先調用你的代碼使調試器混淆了。

但是對於你的問題,聽起來這個服務正在運行舊版本的dll。

嘗試取消選中“要求源文件與原始文件完全匹配”設置,並查看它是否在斷點處中斷。 如果它在那個階段遇到你的斷點那么這意味着在部署你的dll時會遇到一些問題。

您是否嘗試過像resharper這樣的反編譯器來查看它是否有效?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM