Gereksinimler: .NET/C# kullanılarak uygulama geliştirilirken, herhangi bir geliştiricinin programın kararlı ve sağlam yürütülmesini sağlaması imkansızdır; bu durum geliştiricinin kod mantığı veya kullanıcının çalışma ortamıyla ilgili olabilirGeliştirdiğiniz uygulamanın sorunsuz olacağına %100 garanti yokBir sorunun olması korkunç değildir, ama korkunç olan bir sorunun nedenini bulup çözememesidir.
Uygulama beklendiği gibi çalıştırılmazsa ve anormal bir çıkış gerçekleşirse, sorunu çözmek için otomatik olarak bir DMP dump dosyası nasıl oluşturulabilir?
Dump, oluşturulduğu zamanın anlık görüntüsünü içeren ve uygulamanın durumunu kontrol etmek için kullanılabilen bir dosyadır. Üretim veya CI ortamı gibi .NET uygulamalarına hata ayıklayıcı bağlamak zor olduğunda, uygulamayı ayıklamak için dökümler kullanabilirsiniz. Dökümler kullanmak, problemli süreçlerin durumunu yakalar ve durum uygulamayı durdurmadan doğrudan kontrol edilebilir.
Dökümleri topla
Bir arıza durumunda uygulamanızı dökümleri toplamak üzere yapılandırmak için ortam değişkenlerini kullanabilirsiniz. Bu, arızanın nedenini öğrenmek istiyorsanız faydalıdır. Örneğin, bir istisna atıldığında dump yakalamak, başarısız olursa uygulama durumunu kontrol ederek sorunları tespit etmeye yardımcı olur.
Aşağıdaki tablo, bir arıza durumunda uygulamanızı dökümleri toplamak için yapılandırmak için kullanabileceğiniz ortam değişkenlerini göstermektedir.
Ortam değişkeni | Göstermek | Temerrüt | | COMPlus_DbgEnableMiniDump ya da DOTNET_DbgEnableMiniDump | 1 olarak ayarlanmışsa, çekirdek dump üretimini etkinleştirin. | 0 | | COMPlus_DbgMiniDumpType ya da DOTNET_DbgMiniDumpType | Toplanacak çöplük türü. Detaylar için aşağıdaki tabloya bakınız | 2 (MiniDumpWithPrivateReadWriteMemory) | | COMPlus_DbgMiniDumpName ya da DOTNET_DbgMiniDumpName | Dosya yolunu dump'a yaz. Dotnet sürecini çalıştıran kullanıcının belirtilen dizine yazma erişimine sahip olduğundan emin olun. | /tmp/coredump.<pid> | | COMPlus_CreateDumpDiagnostics ya da DOTNET_CreateDumpDiagnostics | 1 olarak ayarlandıysa, döküm işlemi için tanı kaydını etkinleştirin. | 0 | | COMPlus_EnableCrashReport ya da DOTNET_EnableCrashReport | (.NET 6 veya daha yeni gerektirir) 1 olarak ayarlandığında, çalışma zamanı başarısız uygulamanın iş parçacıkları ve yığın çerçeveleri hakkında bilgi içeren JSON formatlı bir arıza raporu oluşturur. Çökme raporu adı, .crashreport.json'ye eklenmiş dump yolu/adıdır. | | | COMPlus_CreateDumpVerboseDiagnostics ya da DOTNET_CreateDumpVerboseDiagnostics | (.NET 7 veya daha yeni gerektirir) 1 olarak ayarlandıysa, döküm süreci için ayrıntılı tanı kaydını etkinleştirin. | 0 | | COMPlus_CreateDumpLogToFile ya da DOTNET_CreateDumpLogToFile | (.NET 7 veya daha yeni gereklidir) Tanı mesajına giden dosya yolu yazılmalıdır. Ayarlanmadıysa, başarısız uygulamanın konsoluna bir tanı mesajı yazılır. | |
Bu ortam değişkenleri için .NET 7, COMPlus_ yerine DOTNET_ önekini standartlaştırır. Ancak COMPlus_ öneki düzgün çalışmaya devam edecek. Eğer öyleyseniz.NET çalışma zamanının önceki sürümlerinde, ortam değişkenleri hâlâ COMPlus_ önekini kullanmalıydı。
Yeni bir .NET Core 6 uygulama testi oluştur
VS 2022'yi kullanarak aşağıdaki kodla yeni bir .NET Core 6 uygulama testini test edin:
Programı aşağıdaki görselde gösterildiği gibi cmd komutuyla başlatın:
COMPlus_EnableCrashReport=1 COMPlus_DbgEnableMiniDump=1 COMPlus_DbgMiniDumpName="C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp" COMPlus_CreateDumpDiagnostics=1 Çözülemeyen istisna. Sistem.İstisna: itsvse.com Programda. <Main>$(String[] args) C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:line 9 içinde [createdump] Dosyaya heap ile minidump yazmak C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp [createdump] Dump başarılı şekilde yazıldı
Program anormal şekilde çöktükten sonra, belirttiğimiz dizinin altında başarıyla olduğunu görebilirsinizDump .dmp dosyası oluşturulurNasıl analiz edileceği ise başka bir konu.
Windows Platform Evrensel Ayarları
Windows'ta, Windows Hata Raporlama (WER), bir uygulama çöktüğünde dökümler oluşturacak şekilde yapılandırılabilir.
Bu yöntem tüm programlar için işe yarar, sadece . .NET programları, örneğin C++, Go vb.; Ve ve. NET. NET Core versiyonu
- Açık regedit.exe
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps dizini açın
- Dump dosyalarının saklandığı dizini yapılandırmak için REG_EXPAND_SZ tipinde bir KEY DumpFolder oluşturun
- Ayrıca REG_DWORD tür bir KEY DumpCount oluşturabilir ve toplam döküm sayısını yapılandırabilirsiniz
Tabii ki, bunları PowerShell komutlarıyla da yapılandırabilirsiniz:
Yukarıdaki yapılandırmaya göre, program anormal şekilde çıkarsa, %LOCALAPPDATA%\CrashDumps dizininde bir program dökümü oluşturur.
Kaynaklar:
Bağlantı girişi görünür.
Bağlantı girişi görünür.
Bağlantı girişi görünür.
|