απαιτήσεις: Κατά την ανάπτυξη εφαρμογών που χρησιμοποιούν .NET/C#, είναι αδύνατο για οποιονδήποτε προγραμματιστή να διασφαλίσει σταθερή και ισχυρή εκτέλεση του προγράμματος, η οποία μπορεί να σχετίζεται με τη λογική κώδικα του προγραμματιστή ή το περιβάλλον εκτέλεσης του χρήστηΔεν υπάρχει 100% εγγύηση ότι η εφαρμογή που αναπτύσσετε θα είναι χωρίς προβλήματαΔεν είναι τρομερό να έχεις πρόβλημα, αλλά το τρομερό είναι ότι υπάρχει ένα πρόβλημα που δεν μπορεί να ανακαλύψει την αιτία και να λύσει το πρόβλημα.
Εάν η εφαρμογή δεν εκτελεστεί όπως αναμένεται και παρουσιαστεί μη φυσιολογική έξοδος, πώς μπορεί να δημιουργηθεί αυτόματα ένα αρχείο ένδειξης σφαλμάτων DMP για την αντιμετώπιση του προβλήματος;
Το dump είναι ένα αρχείο που περιέχει ένα στιγμιότυπο της διαδικασίας όταν δημιουργήθηκε και μπορεί να χρησιμοποιηθεί για τον έλεγχο της κατάστασης της εφαρμογής. Όταν είναι δύσκολο να συνδέσετε ένα πρόγραμμα εντοπισμού σφαλμάτων σε μια εφαρμογή .NET, όπως ένα περιβάλλον παραγωγής ή CI, μπορείτε να χρησιμοποιήσετε ενδείξεις σφαλμάτων για τον εντοπισμό σφαλμάτων στην εφαρμογή. Η χρήση χωματερών καταγράφει την κατάσταση των προβληματικών διεργασιών και η κατάσταση μπορεί να ελεγχθεί απευθείας χωρίς διακοπή της εφαρμογής.
Συλλέξτε χωματερές
Μπορείτε να χρησιμοποιήσετε μεταβλητές περιβάλλοντος για να ρυθμίσετε τις παραμέτρους της εφαρμογής σας ώστε να συλλέγει ενδείξεις σφαλμάτων σε περίπτωση αποτυχίας. Αυτό είναι χρήσιμο εάν θέλετε να μάθετε την αιτία της αποτυχίας. Για παράδειγμα, η καταγραφή ενδείξεων όταν δημιουργείται μια εξαίρεση βοηθά στον εντοπισμό προβλημάτων ελέγχοντας την κατάσταση της εφαρμογής εάν αποτύχει.
Ο παρακάτω πίνακας εμφανίζει τις μεταβλητές περιβάλλοντος που μπορείτε να χρησιμοποιήσετε για να ρυθμίσετε τις παραμέτρους της εφαρμογής σας ώστε να συλλέγει ενδείξεις σφαλμάτων σε περίπτωση αποτυχίας.
μεταβλητή περιβάλλοντος | διευκρινίζω | Προεπιλογή | | COMPlus_DbgEnableMiniDump ή DOTNET_DbgEnableMiniDump | Εάν οριστεί σε 1, ενεργοποιήστε τη δημιουργία ένδειξης σφαλμάτων πυρήνα. | 0 | | COMPlus_DbgMiniDumpType ή DOTNET_DbgMiniDumpType | Ο τύπος της χωματερής που θα συλλεχθεί. Δείτε τον παρακάτω πίνακα για λεπτομέρειες | 2 (MiniDumpWithPrivateReadWriteMemory) | | COMPlus_DbgMiniDumpName ή DOTNET_DbgMiniDumpName | Γράψτε τη διαδρομή του αρχείου προς τη χωματερή. Βεβαιωθείτε ότι ο χρήστης που εκτελεί τη διαδικασία dotnet έχει πρόσβαση εγγραφής στον καθορισμένο κατάλογο. | /tmp/coredump.<pid> | | COMPlus_CreateDumpDiagnostics ή DOTNET_CreateDumpDiagnostics | Εάν οριστεί σε 1, ενεργοποιήστε την καταγραφή διαγνωστικών για τη διαδικασία ένδειξης σφαλμάτων. | 0 | | COMPlus_EnableCrashReport ή DOTNET_EnableCrashReport | (Απαιτείται .NET 6 ή νεότερη έκδοση) Εάν οριστεί σε 1, ο χρόνος εκτέλεσης δημιουργεί μια αναφορά αποτυχίας με μορφοποίηση JSON που περιλαμβάνει πληροφορίες σχετικά με τα νήματα και τα πλαίσια στοίβας της αποτυχημένης εφαρμογής. Το όνομα της αναφοράς σφαλμάτων είναι η διαδρομή/όνομα ένδειξης σφαλμάτων που προσαρτάται στο .crashreport.json. | | | COMPlus_CreateDumpVerboseDiagnostics ή DOTNET_CreateDumpVerboseDiagnostics | (Απαιτείται .NET 7 ή νεότερη έκδοση) Εάν οριστεί σε 1, ενεργοποιήστε τη λεπτομερή καταγραφή διαγνωστικών για τη διαδικασία ένδειξης σφαλμάτων. | 0 | | COMPlus_CreateDumpLogToFile ή DOTNET_CreateDumpLogToFile | (Απαιτείται .NET 7 ή νεότερη έκδοση) Θα πρέπει να γραφτεί η διαδρομή αρχείου προς το διαγνωστικό μήνυμα. Εάν δεν οριστεί, εγγράφεται ένα διαγνωστικό μήνυμα στην κονσόλα της αποτυχημένης εφαρμογής. | |
Για αυτές τις μεταβλητές περιβάλλοντος, το .NET 7 τυποποιεί το πρόθεμα DOTNET_ αντί για COMPlus_. Ωστόσο, το πρόθεμα COMPlus_ θα συνεχίσει να λειτουργεί σωστά. Εάν είστεΣε παλαιότερες εκδόσεις του χρόνου εκτέλεσης .NET, οι μεταβλητές περιβάλλοντος θα πρέπει να εξακολουθούν να χρησιμοποιούν το πρόθεμα COMPlus_。
Δημιουργία νέας δοκιμής εφαρμογής .NET Core 6
Χρησιμοποιήστε το VS 2022 για να δοκιμάσετε μια νέα δοκιμή εφαρμογής .NET Core 6 με τον ακόλουθο κώδικα:
Ξεκινήστε το πρόγραμμα χρησιμοποιώντας την εντολή cmd, όπως φαίνεται στην παρακάτω εικόνα:
COMPlus_EnableCrashReport=1 COMPlus_DbgEnableMiniDump=1 COMPlus_DbgMiniDumpName="C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp" COMPlus_CreateDumpDiagnostics=1 Ανεπίλυτη εξαίρεση. System.Exception: itsvse.com στο Πρόγραμμα. <Main>$(String[] args) στο C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\DumpDemo\Program.cs:line 9 [δημιουργίαχωμα] Εγγραφή minidump με σωρό στο αρχείο C:\Users\itsvse_pc\AppData\Local\Temp\NET\test.dmp [δημιουργίαχωμα] Το Dump γράφτηκε με επιτυχία
Μπορείτε να δείτε ότι μετά την ασυνήθιστα διακοπή λειτουργίας του προγράμματος, βρίσκεται με επιτυχία στον κατάλογο που καθορίζουμεΔημιουργείται το αρχείο .dmp ένδειξης σφαλμάτωνΌσο για το πώς να το αναλύσουμε, είναι διαφορετικό θέμα.
Καθολικές ρυθμίσεις πλατφόρμας των Windows
Στα Windows, η Αναφορά σφαλμάτων των Windows (WER) μπορεί να ρυθμιστεί ώστε να δημιουργεί ενδείξεις σφαλμάτων όταν διακόπτεται μια εφαρμογή.
Αυτή η μέθοδος λειτουργεί για όλα τα προγράμματα, όχι μόνο για το . Προγράμματα .NET, όπως C++, Go κ.λπ. Και και. ΔΊΧΤΥ. Έκδοση NET Core
- Ανοίξτε regedit.exe
- Ανοίξτε τον κατάλογο HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
- Δημιουργήστε ένα KEY DumpFolder τύπου REG_EXPAND_SZ για να διαμορφώσετε τον κατάλογο όπου αποθηκεύονται τα αρχεία ένδειξης σφαλμάτων
- Μπορείτε επίσης να δημιουργήσετε ένα KEY DumpCount τύπου REG_DWORD να διαμορφώσετε το συνολικό ποσό των ενδείξεων
Φυσικά, μπορείτε επίσης να τα διαμορφώσετε χρησιμοποιώντας εντολές PowerShell:
Σύμφωνα με την παραπάνω διαμόρφωση, εάν το πρόγραμμα εξέλθει ασυνήθιστα, θα δημιουργήσει μια ένδειξη προγράμματος στον κατάλογο %LOCALAPPDATA%\CrashDumps.
Πόροι:
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
|