Hallo Leute,
ich weiß das es jeder kennt: "Senden" oder "Nicht senden.". Leider bieten diese Dialoge kaum praktische Informationen was eigentlich tatsächlich schief geht zur Runtime.
Jetzt wollte ich doch fragen, ob es die Möglichkeit gibt einen eigenen Dialog einzuführen. Wenn ja, wie? Google liefert via error report dialog nur Müll. C++ und WinAPI versteht sich.
Vielen Dank vorraus!
Eigener error reporting dialog
-
- Beiträge: 92
- Registriert: 26.02.2009, 22:09
- Lord Delvin
- Establishment
- Beiträge: 596
- Registriert: 05.07.2003, 11:17
Re: Eigener error reporting dialog
Öhm falls ich das jetzt richtig verstehe, dass du das für deine eigenen Erzeugnisse besser machen willst, als der Standard Windows Absturzbericht, dann folgendes:
Es lohnt sich nur, wenn dein Programm überhaupt in der Lage ist dir sinnvolle Informationen zu senden.
Wenn du willst, dass user dir sowas schicken solltest du zwei Dinge tun:
1. Du musst ihnen zeigen, was genau du da verschicken willst, sonst wird kaum jemand was weiterschicken.
2. Du musst ihnen erlauben dir die Sachen auch ohne irgendwelche Accounts zu schicken(das ärgert mich immer bei OpenSource Leuten...will man denen n Bugreport schreiben, dann muss man sich meistens irgendwo anmelden und ich hab ehrlich gesagt keine lust bei jedem projekt n benutzer und passwort zu haben, das kann ich mir sowieso nicht merken) Wenn dich jemand zuspammen will, dann macht der das auch so. Captcha is imho in Ordnung.
Du solltest darauf achten, dass deine Errorlogs nicht zu groß sind. Die meisten Leute können einfach nicht ma schnell 1+MB error log verschicken.
Für die Implementierung musst du mal schaun obs was besseres gibt als ein try block um den Inhalt von main.
Ich denk aber, dass es in den meisten Fällen reicht errorlogs mit datum versehen in einem Ordner zu speichern und wenn sich jemand meldet, einfach den Inhalt des Ordners anzufordern. Das sollte eignetlich einfach sein. Ich hab bis jetzt immer alles nach log/ geschrieben. Das is übersichtlich, leicht zu implementieren und ich denke das Benutzerfreundlichste, vor allem wenn du selbst noch am Entwickeln bist.
Gruß
Es lohnt sich nur, wenn dein Programm überhaupt in der Lage ist dir sinnvolle Informationen zu senden.
Wenn du willst, dass user dir sowas schicken solltest du zwei Dinge tun:
1. Du musst ihnen zeigen, was genau du da verschicken willst, sonst wird kaum jemand was weiterschicken.
2. Du musst ihnen erlauben dir die Sachen auch ohne irgendwelche Accounts zu schicken(das ärgert mich immer bei OpenSource Leuten...will man denen n Bugreport schreiben, dann muss man sich meistens irgendwo anmelden und ich hab ehrlich gesagt keine lust bei jedem projekt n benutzer und passwort zu haben, das kann ich mir sowieso nicht merken) Wenn dich jemand zuspammen will, dann macht der das auch so. Captcha is imho in Ordnung.
Du solltest darauf achten, dass deine Errorlogs nicht zu groß sind. Die meisten Leute können einfach nicht ma schnell 1+MB error log verschicken.
Für die Implementierung musst du mal schaun obs was besseres gibt als ein try block um den Inhalt von main.
Ich denk aber, dass es in den meisten Fällen reicht errorlogs mit datum versehen in einem Ordner zu speichern und wenn sich jemand meldet, einfach den Inhalt des Ordners anzufordern. Das sollte eignetlich einfach sein. Ich hab bis jetzt immer alles nach log/ geschrieben. Das is übersichtlich, leicht zu implementieren und ich denke das Benutzerfreundlichste, vor allem wenn du selbst noch am Entwickeln bist.
Gruß
- dowhilefor
- Moderator
- Beiträge: 173
- Registriert: 27.02.2009, 15:44
- Alter Benutzername: 6SidedDice
- Echter Name: Nico Probst
- Wohnort: Bochum
- Kontaktdaten:
Re: Eigener error reporting dialog
Schau dir das mal an, dürfte genau das sein was du da machen möchtest.
Imo sollte sowas immer nur an eine Email per sendto geschickt werden, ist für den Benutzer imo das transparenteste, da er sich immernoch das Attachment ansehen kann.
Ein Callstack Dump ist nur leider nicht ohne weiteres lesbar, deswegen ist es schwierig dem Benutzer zu erklären das man nix böses verschickt. Imo sollte sowas eh nur in Testversionen eingebaut werden die an Leute geht, die Wissen worum es geht. Den Endkunden mit sowas zu belästigen fand ich schon immer Schwachsinn. Ich kenne _KEINEN_ Endkunden der eine anständige Fehlerbeschreibung abgeben könnte.
Imo sollte sowas immer nur an eine Email per sendto geschickt werden, ist für den Benutzer imo das transparenteste, da er sich immernoch das Attachment ansehen kann.
Ein Callstack Dump ist nur leider nicht ohne weiteres lesbar, deswegen ist es schwierig dem Benutzer zu erklären das man nix böses verschickt. Imo sollte sowas eh nur in Testversionen eingebaut werden die an Leute geht, die Wissen worum es geht. Den Endkunden mit sowas zu belästigen fand ich schon immer Schwachsinn. Ich kenne _KEINEN_ Endkunden der eine anständige Fehlerbeschreibung abgeben könnte.
Mein Gehirn besteht nur noch aus einem hash-index, ich weiss was ich kenn aber kenn nicht was ich weiss
- Aramis
- Moderator
- Beiträge: 1458
- Registriert: 25.02.2009, 19:50
- Echter Name: Alexander Gessler
- Wohnort: 2016
- Kontaktdaten:
Re: Eigener error reporting dialog
Für manche Fehler kannst du den Fehlerhandler der Laufzeitumgebung überschreiben, z.B. für Aufrufe nicht implementierter pure virtuals.
Um Callstacks zu generieren gibt es verschiedene Toolsets (z.B. Stackwalker). Die sind aber nur dann aussagekräftig wenn du Debugsymbole mitlieferst, was auußerhab von Betatests wohl eher nicht der Fall sein wird.
Um Callstacks zu generieren gibt es verschiedene Toolsets (z.B. Stackwalker). Die sind aber nur dann aussagekräftig wenn du Debugsymbole mitlieferst, was auußerhab von Betatests wohl eher nicht der Fall sein wird.
- kimmi
- Moderator
- Beiträge: 1405
- Registriert: 26.02.2009, 09:42
- Echter Name: Kim Kulling
- Wohnort: Luebeck
- Kontaktdaten:
Re: Eigener error reporting dialog
Na ja, man kann durchaus auch für Releases PDBs mitliefern. In meinen Job machen wir das beispielsweise immer. Das hängt halt von den Anforderungen ab.
Allerdings muß man bei der Erstellung eigener CrashHandler bzw. StackWalker Vorsicht walten lassen. Ich stecke Crashhandler prinzipiell in eine eigene Dll und rufe in diesem auch nur Funktionalitäten aus der CrachHandler-Dll, da man ansonsten sich schnell einen Deadlock einbaut ( Andere Dll crasht, ruft CrahHandler-Dll-Funktionalität, die ruft unbedachterweise Funktionalität aus der fehlerhaften Dll auf -> Deadlock -> nix mit Fehlerreport ).
Gruß Kimmi
Allerdings muß man bei der Erstellung eigener CrashHandler bzw. StackWalker Vorsicht walten lassen. Ich stecke Crashhandler prinzipiell in eine eigene Dll und rufe in diesem auch nur Funktionalitäten aus der CrachHandler-Dll, da man ansonsten sich schnell einen Deadlock einbaut ( Andere Dll crasht, ruft CrahHandler-Dll-Funktionalität, die ruft unbedachterweise Funktionalität aus der fehlerhaften Dll auf -> Deadlock -> nix mit Fehlerreport ).
Gruß Kimmi