日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

在.NET程序崩潰時自動創建Dump的思路詳解

瀏覽:293日期:2022-06-09 10:49:39
目錄
  • Windows平臺
  • .NET Core全平臺
    • 試一試
  • 總結
    • 參考文獻

      今天在瀏覽張隊轉載文章的留言時,遇到一個讀者問了這樣的問題,如下圖所示:

      首先能明確的一點是"程序崩潰退出了是不能用常規的方式dump的",因為整個進程樹都已經退出。現場已經無法使用常規的方式讀取到。

      一般來說常規的方法是沒辦法讀取到的,也有一些特殊的方式,比如有關部門在調查取證時,就可以通過一些工具讀取到內存中的信息。當然這是一些hack手段,不在本文討論中。

      不過好消息是,雖然您無法在程序崩潰退出以后創建Dump,但是您可以在程序崩潰時自動創建Dump,這樣下次遇到程序崩潰,那么就可以有分析的現場了。

      Windows平臺

      在 Windows 中,可以將 Windows 錯誤報告 (WER) 配置為在應用程序崩潰時生成轉儲。

      這個方式對所有程序都有效果,不僅僅是.NET程序,如C++、Go等等都可以;而且和.NET、.NET Core版本無關

      • 打開regedit.exe
      • 打開目錄HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
      • 創建KEY DumpFolder 類型為REG_EXPAND_SZ用于配置存放Dump文件的目錄
      • 另外可以創建KEY DumpCount 類型為REG_DWORD配置Dump的總數量

      當然也可以使用PowerShell命令來配置這些:

      New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting" -Name "LocalDumps"New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" -Name "DumpFolder" -Value "%LOCALAPPDATA%\CrashDumps" -PropertyType ExpandStringNew-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" -Name "DumpCount" -Value 10 -PropertyType DWord

      按照上面的配置,如果程序發生了異常退出,那么就會在%LOCALAPPDATA%\CrashDumps目錄創建程序的Dump。如下圖所示:

      .NET Core全平臺

      那么如果您是.NET Core跨平臺應用,那么在Linux、MacOS等操作系統上,有更簡單和更豐富的方式,下方有一些環境變量的參數:

      • COMPlus_DbgEnableMiniDumpDOTNET_DbgEnableMiniDump: 如果設置為 1,則發生故障時啟用CoreDump生成。默認值為:0
      • COMPlus_DbgMiniDumpTypeDOTNET_DbgMiniDumpType: 要收集的轉儲類型。 有關詳細信息,請看下文的說明。默認值為:2
      • COMPlus_DbgMiniDumpNameDOTNET_DbgMiniDumpName: 寫入轉儲的文件路徑。 確保運行 dotnet 進程的用戶具有指定目錄的寫入權限。默認值為:/tmp/coredump.<pid>
      • COMPlus_CreateDumpDiagnosticsDOTNET_CreateDumpDiagnostics: 如果設置為 1,則啟用轉儲進程的診斷日志記錄。默認值為:0
      • COMPlus_EnableCrashReportDOTNET_EnableCrashReport:(需要.NET 6 或更高版本,目前僅Linux和MacOS可用)如果設為 1,運行時會生成 JSON 格式的故障報表,其中包括有關故障應用程序的線程和堆棧幀的信息。 故障報表名稱是追加了 .crashreport.json 的轉儲路徑/名稱。
      • COMPlus_CreateDumpVerboseDiagnosticsDOTNET_CreateDumpVerboseDiagnostics:(需要 .NET 7 或更高版本)如果設為 1,則啟用轉儲進程的詳細診斷日志記錄。
      • COMPlus_CreateDumpLogToFileDOTNET_CreateDumpLogToFile:(需要 .NET 7 或更高版本)應寫入診斷消息的文件路徑。 如果未設置,則將診斷消息寫入故障應用程序的控制臺。

      對于這些環境變量,.NET 7 標準化前綴DOTNET_,而不是COMPlus_。 但是,COMPlus_前綴仍將繼續正常工作。 如果使用的是早期版本的 .NET 運行時,則環境變量仍應該使用COMPlus_前綴。

      關于DOTNET_DbgMiniDumpType的說明如下所示:

      • 1: Mini 小型Dump,其中包含模塊列表、線程列表、異常信息和所有堆棧。
      • 2: Heap 大型且相對全面的Dump,其中包含模塊列表、線程列表、所有堆棧、異常信息、句柄信息和除映射圖像以外的所有內存。
      • 3: TriageMini 相同,但會刪除個人用戶信息,如路徑和密碼。
      • 4: Full 最大的轉儲,包含所有內存(包括模塊映像)。

      一般情況下,我們會配置下面的環境變量:

      DOTNET_DbgEnableMiniDump = 1DOTNET_DbgMiniDumpName = [有權限的Path目錄]DOTNET_CreateDumpDiagnostics = 1DOTNET_EnableCrashReport = 1

      試一試

      我們寫一段代碼來試一把,如下有一段代碼首先輸出了當前DTONET_前綴對的環境變量,然后拋出一個異常。

      using System.Collections;foreach (DictionaryEntry environmentVariable in Environment.GetEnvironmentVariables()){    if(environmentVariable.Key.ToString()?.StartsWith("DOTNET_") == false) continue;    Console.WriteLine($"{environmentVariable.Key}={environmentVariable.Value}");}throw new Exception("Crash");

      然后編寫一個run.bat腳本,用于設置環境變量順便啟動我們的程序。

      @SET DOTNET_DbgEnableMiniDump=1@SET DOTNET_DbgMiniDumpName="G:\Temp\CrashDump\CrashDump\bin\Debug\net6.0\dump.dmp"@SET DOTNET_CreateDumpDiagnostics=1@SET DOTNET_EnableCrashReport=1@CrashDump.exe

      運行run.bat可以看到環境變量正確的讀到了,另外也成功的生成了Dump。

      最后在對應的目錄下,也生成了Dump文件。

      如果是在容器環境中的話,直接修改Dockerfile即可,如下所示的那樣:

      如果在容器環境中,DOTNET_DbgMiniDumpName需要配置映射到Host的目錄,不然容器退出,Dump文件也會隨之消失。

      總結

      本文主要是介紹了如何在dotNet程序崩潰時自動創建Dump,Windows上的方法對于.NET Freamwork和.NET Core版本都適用。.NET Core全平臺版本的話需要注意環境變量支持的.NET版本。

      參考文獻

      • https://learn.microsoft.com/en-us/troubleshoot/developer/webapps/aspnetcore/practice-troubleshoot-linux/lab-1-3-capture-core-crash-dumps
      • https://www.meziantou.net/tip-automatically-create-a-crash-dump-file-on-error.htm
      • https://github.com/dotnet/runtime/blob/main/docs/design/coreclr/botr/xplat-minidump-generation.md

      到此這篇關于如何在.NET程序崩潰時自動創建Dump的文章就介紹到這了,更多相關.net程序崩潰自動創建Dump內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

      標簽: ASP.NET
      日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
      日本一区二区免费高清| 亚洲日本欧美| 亚洲丝袜美腿一区| 欧美欧美黄在线二区| 欧美午夜不卡| 高清不卡一区| 国产精品一区二区三区四区在线观看 | 精品视频黄色| 石原莉奈一区二区三区在线观看| 热久久久久久| 国产精品久久久久毛片大屁完整版| 欧美精品自拍| 激情欧美亚洲| 日韩精品欧美激情一区二区| 久久久久国产精品一区三寸| 麻豆极品一区二区三区| 天堂精品久久久久| 综合国产精品| 蜜桃视频一区二区| 免费成人在线观看| 色综合视频一区二区三区日韩| 在线精品视频一区| 日韩欧美久久| 美女久久精品| 国产精品黄网站| 国产精品国产一区| 激情91久久| 久久精品伊人| 国产在线看片免费视频在线观看| 国内在线观看一区二区三区 | 欧美国产三级| 精品五月天堂| 桃色一区二区| 亚洲综合丁香| 91精品国产自产在线丝袜啪| 久久国内精品| 免费亚洲婷婷| 国产精品美女午夜爽爽| 久久电影tv| 先锋亚洲精品| 日韩av自拍| 久久婷婷亚洲| 丝袜美腿亚洲色图| 国产精品久久久免费| 亚州精品视频| av综合电影网站| 伊人久久一区| 久久亚洲在线| 岛国精品一区| 亚洲一区国产一区| 国产videos久久| 亚洲一区二区三区四区五区午夜| 久久精品国产久精国产爱| 欧美高清不卡| 国内精品麻豆美女在线播放视频| 亚洲精品国模| 一区二区三区四区精品视频| 麻豆精品在线播放| 蜜桃av一区二区在线观看| 国产一区二区三区不卡视频网站| 国产美女精品视频免费播放软件| 欧美影院三区| 久久精品人人| 国产精品久久久久久久久久妞妞 | 久久99伊人| 欧美一级精品| 成人在线超碰| 国产精品扒开腿做爽爽爽软件| 欧美日韩国产亚洲一区| 欧美日韩中文字幕一区二区三区| 欧美激情久久久久久久久久久| 欧美在线黄色| 欧美日韩1区| 精品久久在线| 美女精品久久| 精品高清久久| 超碰超碰人人人人精品| 精品国产亚洲一区二区三区| 亚洲一区二区av| 蜜臀av国产精品久久久久| 爽好久久久欧美精品| 欧美偷窥清纯综合图区| 欧美伊人久久| 欧美在线看片| 精品中文字幕一区二区三区 | 国产精品一站二站| 91精品国产自产在线丝袜啪| 国产精品a级| 国产aa精品| 国产精品一区二区三区美女| 欧美日韩中文| 久久狠狠亚洲综合| 久久99久久久精品欧美| 免费一级欧美在线观看视频 | 日韩有吗在线观看| 国产精品久久久一区二区| 久久精品理论片| 999久久久91| 蜜桃av一区二区| 日韩在线二区| 国产模特精品视频久久久久| 视频一区二区三区在线| 国精品产品一区| 日韩三级视频| 中文精品在线| 精品少妇av| 国产精品日本欧美一区二区三区| 亚洲综合色婷婷在线观看| 天堂成人国产精品一区| 国产精品视频3p| 99国产一区| 日韩视频久久| 蜜桃一区二区三区在线观看| 欧美偷窥清纯综合图区| 99精品小视频| 国产黄色一区| 日韩免费精品| 九色精品91| 精品久久久网| 麻豆国产欧美一区二区三区| 亚洲午夜国产成人| 国产一二在线播放| 欧美日韩视频免费看| 五月天久久久| 久久久久国产一区二区| 欧美日韩夜夜| 综合色一区二区| 99国产成+人+综合+亚洲欧美| 美腿丝袜亚洲一区| 国产调教一区二区三区| 亚洲欧美日本日韩| 久久婷婷av| 国内亚洲精品| 国产91欧美| 亚洲精品少妇| 国产精品日本一区二区不卡视频 | 国产福利电影在线播放| 欧美日韩一区二区三区四区在线观看 | 欧美在线看片| 亚洲婷婷丁香| 久久一级电影| 中文日韩欧美| 一级欧美视频| 国产欧美日韩影院| 91欧美极品| 国产精品片aa在线观看| 欧美激情aⅴ一区二区三区 | 国产日本亚洲| 亚洲午夜免费| 亚洲精品一级二级| 国产偷自视频区视频一区二区| 午夜欧美巨大性欧美巨大| 国产精品成久久久久| 精品日韩一区| 久久一区国产| 亚洲精品免费观看| 亚洲激情黄色| 国产精品试看| 午夜电影一区| 国产精品网址| 日本在线一区二区三区| 国产精东传媒成人av电影| 亚洲精品黄色| 国产精品久久久久9999高清| 国产亚洲精品精品国产亚洲综合| 欧美专区一区| 日韩av中文字幕一区二区| 国产精品三上| 老司机精品视频在线播放| 国产一区二区三区久久久久久久久| zzzwww在线看片免费| 国产精品欧美大片| 久久人人精品| 视频在线在亚洲| 日韩黄色av| 日韩电影免费在线观看| 久久精品国产亚洲aⅴ| 精品一区二区三区的国产在线观看| 欧美日韩精品在线一区| 国产亚洲第一伦理第一区| 色综合狠狠操| 欧美日韩夜夜| 免费不卡在线观看| 国产精品www.| 亚洲精华国产欧美| 91福利精品在线观看| 在线看片日韩| 麻豆国产一区| 久久aⅴ国产紧身牛仔裤| 日韩1区在线| 国产欧美日韩精品高清二区综合区| 在线一区欧美| 久久亚洲资源中文字| 热久久免费视频| 九色porny丨国产首页在线| 亚洲精华国产欧美| 蜜桃视频在线网站| 欧美日韩一视频区二区| 亚洲一区黄色| 日韩1区2区|