簡體   English   中英

生產服務器上的.net調試

[英].net debugging on production server

我和我的團隊第一次在.net網絡應用程序項目上工作。 我們想知道在生產服務器上調試問題的最有效方法。 目前,我們將ftp上傳到客戶端的生產服務器。

由於我們的背景是在LAMP中,我們正在使用SSH連接到生產服務器,並使用die(),print_r()和注釋掉技術的組合來解決問題。

除非我誤解了.net的工作方式,否則我認為我不能使用相同的方法,因為對.net代碼的更改需要完全重新構建項目(在localhost上),然后上傳。 這太費時了......

有沒有更好的方法來解決生產服務器上的問題?

我所知道的最好的故障排除工具是Fiddler,Firebug和Glimpse

提琴手

螢火

一瞥

在處理生產問題時,最好有一個復制生產的環境。 在該環境中,您可以部署相同的應用程序,但啟用了調試。 這將允許您擁有一整套您不想在生產中使用的工具。

一旦掌握了這個環境,你所需要的就是找出異常發生的位置(通過記錄/跟蹤)以及如何重現問題。

問題是生產環境設計得很快(沒有調試,最小的日志記錄)和安全。 所以管理員討厭調試甚至遠程調試的概念。

精心設計的架構/生產軟件的目標是收集有關出錯的足夠信息,以便您可以在其他環境中重現錯誤/場景。

有多種不同的日志框架供您選擇,您可以在不需要重建的情況下更改設置。 您可以在配置文件中設置日志記錄級別,例如。 錯誤,警告,調試等......

您在應用程序中包含所有日志記錄級別的檢測代碼,並且只有在設置了日志級別時才會執行這些日志語句。

這是一個這樣的產品的例子。

http://msdn.microsoft.com/en-us/library/ff647183.aspx

實際上只有三種方法可以調試服務器端問題。

提前記錄計划並將日志記錄添加到您的應用程序。 大多數日志框架(如log4net和Enterprise庫)都具有根據配置設置記錄更多或更少信息的模式。 IIS也有自己的日志記錄,您可以查看。

檢測您可以向應用程序添加性能計數器,如果遇到性能問題,還可以使用現有的性能計數器。 此外,Sysinternals和WireShark提供的工具可以為您的代碼之外的問題提供方便。

內存轉儲您可以捕獲應用程序的內存轉儲,並使用WinDbg之類的工具查看系統中正在發生的事件的快照。

.NET中提供的堆棧跟蹤,一旦您學會理解它們,就能提供足夠的價值來真正追蹤錯誤。 你可以啟用遠程調試,但因為它是客戶端的機器而且它是一個真正的痛苦,我會避免這種情況。

大多數情況下,您確保自己擁有測試覆蓋率,了解如何閱讀異常,並花些時間考慮您看到的異常。 在10年的.NET工作中,我只想在生產服務器上進行一次調試,最后我發現了沒有它的bug。

此外,您可以使用ELMAH捕獲未處理的異常,這很有幫助。

調試應在開發階段進行,並啟用“debug”選項。 部署到生產時,請關閉“調試”選項以提高效率。 但是在生產中,您可以在日志文件中記錄錯誤/異常/堆棧跟蹤等,這將幫助您解決手頭的問題。

同樣,那些die(),print_r()是perl調試方式,因為perl沒有任何內置異常或錯誤跟蹤機制。 這樣它在.NET的情況下不起作用。

暫無
暫無

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

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