2009-07-13 68 views
3

我們有一個用C#.NET編寫的應用程序,它目前在生產環境中使用。顯然使用發佈版本。如何在客戶環境中調試應用程序.NET

不幸的是,有時應用程序在某些條件下行爲不當,我們無法弄清楚原因。我們無法在內部重現此問題。是的,更多的跟蹤會有所幫助,但通常是在您意識到應該實施更多跟蹤之後。

什麼是使用常規的逐行Visual Studio Attach-to-Process類型調試來調試安裝的最佳方法。是否要在客戶機器上安裝VS的快速版本,並將調試版本替換爲dll?發送PDB和特定的源文件足夠了嗎?有沒有更好的辦法?最終目標是有一個像環境一樣的開發來調試問題。

回答

7

遠程調試是一個很好的功能,但它很少在生產環境中使用,因爲它需要很難實現的域(您自己和您的客戶)之間的雙向信任(兩家公司的管理員將強烈反對主意)

看到Remote Debugging Across Domains

但是發送您的應用程序將幫助PDB文件。您可以要求客戶使用Clr Debugger(DbgCLR.exe)與VS Debugger相比,它有一些限制,但它仍然是一個可以完成工作的調試器,它是.NET SDK的一部分。 如果問題不能用Clr Debugger調試,客戶可以嘗試在他們的生產環境中安裝VS的試用版,併爲您提供遠程桌面連接(如果管理員允許您這樣做)。我想90天的試用期足以解決問題

你也可以嘗試建立一個像客戶一樣的測試環境 - 限制(或增加)CPU數量,內存等,以便將物理條件與盡你所能。如果您認爲某些其他第三方軟件或不存在的註冊表記錄可能影響您的程序,請要求您的客戶創建其Windows的虛擬映像。但是,我的經驗是,由於多個用戶的併發訪問(死鎖,競態條件,First Wins/Last Wins場景中的邏輯不當行爲),.NET中50%的這種「不可重現」錯誤發生。在大多數情況下,即使您在客戶計算機上安裝VS(如果您在非高峯時段運行此服務器),也無法進行調試,因爲您需要同時在不同的計算機上運行至少2個客戶。

因此,當您正在尋找爲客戶提供調試的選項時,請繼續努力改進跟蹤和監控功能。跟蹤和性能計數器通常是生產環境中唯一的朋友。

2

首先,確保您已經部署了帶應用程序的PDB(發佈PDB足夠了)。然後,如果您在生產計算機上安裝並運行Visual Studio遠程調試器,則可以從本地計算機進行調試。部署機器上的應用程序的PDB文件應該與您的本地版本匹配,因爲我不認爲遠程調試器會進行任何類型的同步。

+1

要明確一點:您不需要安裝Visual Studio,只需要遠程調試器。 問候, Sebastiaan – 2009-07-13 14:59:51

+1

MSDN信息上設置遠程調試:http://msdn.microsoft.com/en-us/library/xf8k2h6a.aspx – Millhouse 2009-07-13 15:06:27

0

使用狀態消息和日誌文件來至少識別導致錯誤的代碼行。

相關問題