CrashReporter in VB.NET

  • VB.NET
  • .NET 4.5

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    CrashReporter in VB.NET

    Hallo habe im Internet einen CrashReporter gefunden. github.com/ravibpatel/CrashReporter.NET/tree/master

    Leider habe ich das Problem beim einbauen dieses Packets.

    Ich hab das Ding mithilfe von Nuget runtergeladen, einen Modul dazu erstellt und den Code aus Beispiel in VB.net umgesetz.

    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports System.Threading
    3. Imports System.Windows.Forms
    4. Imports CrashReporterDotNET
    5. Namespace Reporter.CrashReporter
    6. Friend Module CrashReport
    7. Private _reportCrash As ReportCrash
    8. <STAThread>
    9. Private Sub Main()
    10. 'Application.ThreadException += Function(sender, args) SendReport(args.Exception)
    11. 'AppDomain.CurrentDomain.UnhandledException += Function(sender, args)
    12. ' SendReport(CType(args.ExceptionObject, Exception))
    13. ' End Function
    14. AddHandler Application.ThreadException, Function(sender, args)
    15. SendReport(args.Exception)
    16. End Function
    17. AddHandler AppDomain.CurrentDomain.UnhandledException, Function(sender, args)
    18. SendReport(CType(args.ExceptionObject, Exception))
    19. End Function
    20. Application.EnableVisualStyles()
    21. Application.SetCompatibleTextRenderingDefault(False)
    22. _reportCrash = New ReportCrash("myEmail") With {
    23. .Silent = True,
    24. .ShowScreenshotTab = True,
    25. .IncludeScreenshot = False,
    26. .WebProxy = New WebProxy("Web proxy address, if needed"),
    27. .AnalyzeWithDoctorDump = True,
    28. .DoctorDumpSettings = New DoctorDumpSettings With {
    29. .ApplicationID = New Guid("Application ID you received from DrDump.com"),
    30. .OpenReportInBrowser = True
    31. }
    32. }
    33. _reportCrash.RetryFailedReports()
    34. Application.Run(New MainView())
    35. End Sub
    36. Sub SendReport(ByVal exception As Exception, ByVal Optional developerMessage As String = "")
    37. _reportCrash.DeveloperMessage = developerMessage
    38. _reportCrash.Silent = False
    39. _reportCrash.Send(exception)
    40. End Sub
    41. Sub SendReportSilently(ByVal exception As Exception, ByVal Optional developerMessage As String = "")
    42. _reportCrash.DeveloperMessage = developerMessage
    43. _reportCrash.Silent = True
    44. _reportCrash.Send(exception)
    45. End Sub
    46. End Module
    47. End Namespace


    Laut dem example, muss ich ja nix mehr weiterhin machen, doch das Fenster mit dem Report, wird bei crash nicht angezeigt.
    Hoffe auf eure hilfe!
    Gruß.
    @igrebel Willkommen im Forum. :thumbup:
    Der Code ist der einer WinForm-Applikation ohne Anwendungsframework.
    Ich nehme mal an, Du hast eine "normale" WinForm-Applikation mit Anwendungsframework.
    Damit das ganze funktioniert, muss der Code zumindest durchlaufen werden.
    Nimm mal in Deinen Projekteigenschaften das Anwendungsframework raus und setze das Startobjekt auf Sub Main:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    @igrebel Willkommen im Forum. :thumbup:
    Der Code ist der einer WinForm-Applikation ohne Anwendungsframework.
    Ich nehme mal an, Du hast eine "normale" WinForm-Applikation mit Anwendungsframework.
    Damit das ganze funktioniert, muss der Code zumindest durchlaufen werden.
    Nimm mal in Deinen Projekteigenschaften das Anwendungsframework raus und setze das Startobjekt auf Sub Main:
    vb-paradise.de/index.php/Attac…c49d6abf279e4ffc00c481874


    Hallo und danke!
    Das hat geklappt.. frage mich jetzt nur, wie kann ich wieder die Einstellungen von Anwendungsframework anschalten? Z.b. "Einzelinstanzanwendung"?

    igrebel schrieb:

    "Einzelinstanzanwendung"
    müsstest Du dann "zu Fuß" in der Private Sub Main() implementieren.
    Da dieser Code äquivalent zu einem C#-Code ist, poste ich Dir mal ein Beispiel in C#, das kannst Du ganz easy nach VB.NET übersetzen:

    C#-Quellcode

    1. static void Main()
    2. {
    3. // ############ von hier
    4. bool ok;
    5. System.Threading.Mutex m = new System.Threading.Mutex(true, Application.ProductName, out ok);
    6. if (!ok)
    7. {
    8. MessageBox.Show(Application.ProductName + " läuft bereits!");
    9. return;
    10. }
    11. // ############ bis hier
    12. Application.EnableVisualStyles();
    13. Application.Run(new frmMain());
    14. }

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    *Vollzitat entfernt* ~NoFear23m

    Klappt leider nicht.

    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports System.Threading
    3. Imports System.Windows.Forms
    4. Imports CrashReporterDotNET
    5. Namespace Reporter.CrashReporter
    6. Friend Module CrashReport
    7. Public _reportCrash As ReportCrash
    8. <STAThread>
    9. Public Sub Main()
    10. 'Application.ThreadException += Function(sender, args) SendReport(args.Exception)
    11. 'AppDomain.CurrentDomain.UnhandledException += Function(sender, args)
    12. ' SendReport(CType(args.ExceptionObject, Exception))
    13. ' End Function
    14. Dim ok As Boolean
    15. Dim m As System.Threading.Mutex = New System.Threading.Mutex(True, Application.ProductName, ok)
    16. If Not ok Then
    17. MessageBox.Show(Application.ProductName & " läuft bereits!")
    18. Return
    19. End If
    20. AddHandler Application.ThreadException, Function(sender, args)
    21. SendReport(args.Exception)
    22. End Function
    23. AddHandler AppDomain.CurrentDomain.UnhandledException, Function(sender, args)
    24. SendReport(CType(args.ExceptionObject, Exception))
    25. End Function
    26. Application.EnableVisualStyles()
    27. Application.SetCompatibleTextRenderingDefault(False)
    28. _reportCrash = New ReportCrash("") With {
    29. .Silent = True,
    30. .ShowScreenshotTab = True,
    31. .IncludeScreenshot = False
    32. }
    33. _reportCrash.RetryFailedReports()
    34. Application.Run(New MainView())
    35. End Sub
    36. Sub SendReport(ByVal exception As Exception, ByVal Optional developerMessage As String = "")
    37. _reportCrash.DeveloperMessage = developerMessage
    38. _reportCrash.Silent = False
    39. _reportCrash.Send(exception)
    40. End Sub
    41. Sub SendReportSilently(ByVal exception As Exception, ByVal Optional developerMessage As String = "")
    42. _reportCrash.DeveloperMessage = developerMessage
    43. _reportCrash.Silent = True
    44. _reportCrash.Send(exception)
    45. End Sub
    46. End Module
    47. End Namespace

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()

    igrebel schrieb:

    Klappt leider nicht.
    Was tut es, was nicht?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    *Vollzitat entfernt* ~NoFear23m

    Erstmal, kann ich die Anwendung trotz Ihren Code, zwei mal öffnen.
    Außerdem, fängt das ganze leider keine

    VB.NET-Quellcode

    1. Environment.FailFast("Failure!")
    und ähnlichen Sachen.
    D.h wenn das ganze wirklich crashed, kommt das Dialogfenster nicht.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()

    @igrebel Zitiere nicht komplette Posts über den Deinen!

    igrebel schrieb:

    kommt das Dialogfenster nicht.
    Welches?
    =======
    Füge mal vor dem ersten AddHandler folgende Zeile ein:

    VB.NET-Quellcode

    1. Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException)
    Und:
    SingleInstance funktioniert bei mir.

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()