2010-02-02 55 views
1

有沒有人有任何關於擴展我們的SVN的建議&巡航控制CI process填充Symbol Server從CI流程生成符號服務器調試符號以幫助遠程調試

我們正在嘗試遠程調試我們的ASP.NET 2.0 C#網站的測試環境,並且遇到問題時需要始終加載正確的符號。

我們的構建過程是在發佈模式而不是調試模式下完成的,因此這如何影響PDB文件的創建?

使用VS2008,我們已經解決了連接到遠程調試的幾個問題,因爲測試環境不在同一個域中。現在我們正在努力觀察變量時,這條消息:

無法獲取的本地或參數「爲XXXXX」,因爲它目前還無法提供該指令指針,可能是因爲它已被優化掉

這是因爲我們的構建和後續部署過程處於發佈模式?

回答

1

此錯誤消息是因爲CLR本身優化了變量。 PDB仍然包含所有關於當地人在釋放模式下的信息,調試器只是無法訪問它們。

雖然可以在發佈模式下構建,並且通常可以避免此問題,但這是可能的。關於CLR是否將以當地人不可見的方式進行優化的因素之一是DebuggableAttribute類。

此屬性通常由編譯器發出,它根據項目模式更改標誌:Release或Debug。如果該屬性已經存在於您的項目中,編譯器將不會覆蓋它。

如果你有一個Web應用程序(VS網站),你只需添加以下行的AssemblyInfo.cs,它應該解決這個問題

[assembly: Debuggable(DebuggingModes.DisableOptimizations)] 

注意這不會禁用性能優化,所以你可能不要不想實際以這種方式發佈,但對調試很有幫助。

+0

謝謝,只是我需要的指針,實際上已經調整了我們的配置項進程,爲所有程序集使用msbuild.exe正確的開關禁用優化。 –