Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 5902|Yanıt: 1

[.NET Core] [Gerçek dövüş]. NET/C# uygulama çökmeleri ve istisnaları otomatik olarak DMP dump dosyaları üretir

[Bağlantıyı kopyala]
2022-11-6 tarihinde yayınlandı 22:41:42 | | | |
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_DbgEnableMiniDump1 olarak ayarlanmışsa, çekirdek dump üretimini etkinleştirin.0
COMPlus_DbgMiniDumpType ya da DOTNET_DbgMiniDumpTypeToplanacak çöplük türü. Detaylar için aşağıdaki tabloya bakınız2 (MiniDumpWithPrivateReadWriteMemory)
COMPlus_DbgMiniDumpName ya da DOTNET_DbgMiniDumpNameDosya 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_CreateDumpDiagnostics1 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.




Önceki:Discuz ek görselleri, avatar resimleri ve albüm görüntüleri için depolama kurallarının ayrıntılı açıklaması
Önümüzdeki:Pratik Operasyon: System.Web.Optimizasyonu yerine BundleTransformer kullanın
 Ev sahibi| 2022-11-6 tarihinde 22:44:06 tarihinde yayınlandı |
Dump dosyalarını gönderin:

Program başladıktan sonra, dizinin oluşturulmuş bir dump dosyası olup olmadığını belirleyin, varsa dosyayı belirtilen arayüze gönderin ve ardından dosyayı silin.
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com