[英]PDB file and error handling?
我們有一個運行在不同客戶的Windows窗體應用程序,當他們遇到錯誤我們登錄到數據庫並使用記錄的堆棧信息時,我們更正了問題。
但是,存在僅在生產中出現的問題,例如,堆棧顯示
CalculateTotals(方法名稱):NullReferenceException:未將對象引用設置為對象的實例。
CalculateTotals是一個方法名稱,它有很多子方法調用和更多行,我無法獲得失敗的代碼的確切行#。
我的應用程序的PDB文件不會發送給客戶(當他們安裝時),
我如何保留該.PDB文件的副本(可能位於遠程位置而不是使其成為安裝的一部分)並使用它來調試錯誤並獲取確切的行?
如果需要,可以在發行版中包含pdb文件,但也可以使用IntelliTrace在Visual Studio中調試生產中的數據。
簡而言之,IntelliTrace:
IntelliTrace扮演的角色類似於平面中的黑盒子。 它會跟蹤程序執行中的重要點,並允許您在以后回放這些點上發生的事情。
看看這些博文:
當然,您可以在網上搜索並找到有關IntelliTrace的更多信息。
當CLR可以在運行時找到PDB文件時,您將只在異常的堆棧跟蹤中獲取行號信息。 想要從遠程位置做到這一點,你正在變得困難,但這並非不可能。 CLR使用的底層API是DIA(調試接口訪問),后者又使用調試API。
您必須以與設置調試會話相同的方式設置機器,以使調試器使用符號服務器。 要求是您首先設置可以通過Internet訪問的符號服務器,類似於Microsoft Symbol Server。 然后設置_NT_SYMBOL_PATH環境以引用該服務器。 描述此內容的核心MSDN Library頁面位於此處 。 當心,這是不容易解決,如果它不能正常工作。
一種完全不同的方法是從崩潰的進程中創建一個minidump。 你需要pinvoke MiniDumpWriteDump()。 請注意,.NET進程的一個好的minidump不是很小,你需要管道才能有足夠的存儲空間並以某種方式將它運送到你的機器上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.