C Fehlerbericht senden

Hallo Community :)
Ich habe ein Programm geschrieben das auch bisher ganz gut funktioniert...
Leider treten doch noch einige Probleme auf...
Nun hab ich mir überlegt, es gibt ja in Windows diese Meldung:
"Fehlerbericht senden"...
Ich dachte ein Bericht wird als .txt abgespeichert und dann bei Bestätigung an meine E-Mail gesendet wird...
Ich programmiere mit Dev-Cpp in C...

Wär nett wenn ihr mir dabei helfen könntet...
MCStreetguy
 
Hallo,
was genau ist denn jetzt deine Frage bzw. wo ist dein Problem? Weißt du nicht wie du die Fehler abfängst, wie du ein neues Fenster erzeugtst, wie du eine .txt Datei erzeugt oder nicht wie du was per E-Mail senden kannst? Ohne das es böse gemeint ist, aber so mein erster Gedanke war bei dem Thread: "Ja, dann mach doch!".
 
Ja stimmt dei Anfrage war schlecht gestellt...

Also mein Problem liegt darin das man den vorher erstellten log per Klick an eine festgelegte E-Mail sendet... Also eine MessageBox die den Nutzer fragt ob er einverstanden ist das der Log gesendet wird und dann halt bei zustimmung eine E-Mail mit der Datei im Anhang gesendet wird...
 
E-Mail ist kagga, weil du dafür ein offenes SMTP-Relay brauchst, was nicht geblacklistet wurde. Diese Ressource ist jedoch nicht verfügbar, also müsstest du ein SMTP-Relay mit Authentifizierung verwenden was ultimativ dazu führt, dass du die Zugangsdaten (d)eines SMTP-Servers an den Nutzer deines Programms preisgibst.

Bessere Lösung: RESTful API auf nem Webspace nutzen, kann man sicher irgendwie schnell in PHP zusammenkoten.
 
Von PHP hab ich keine Ahnung...
Wenn die Variante E-Mail so auffällig ist, wie macht das dann z.B. Windows mit den Fehlerberichten?
Kann man das nicht einfach in mein Programm einbauen?
 
Windows verschiebt die Fehlerberichte größtenteils nach /dev/null.

Okay, nicht direkt, erst werden die auf nen Stapel MS-Server geschoben (Microsoft würde ich hier sogar DCOM zutrauen :D, aber am ehesten wird das wohl über ne einfache REST-API gehen), die dann alles aussortieren, was ein Benutzerprogrammfehler ist und nix mit Windows zu tun hat (keine Gewähr: Könnte auch schon vor dem Senden aussortiert werden).

Natürlich kann man das einfach in ein Programm einbauen, sowas ist selbst in C ne Sache von höchstens ein paar tausend Zeilen, wenn man Handarbeit mag, ansonsten gehts auch erheblich kürzer.
Ich würde ausgehend von deinen bisherigen Beiträgen jedoch davon ausgehen, dass deine Programme keine nutzernervenden Absturzdialoge brauchen, weil du dir, wenn du Funktionalität in größerem Umfang implementierst, hiermit nicht so schwer tun würdest.
 
Zuletzt bearbeitet:
Natürlich kann man das einfach in ein Programm einbauen, sowas ist selbst in C ne Sache von höchstens ein paar tausend Zeilen, wenn man Handarbeit mag
Na das geht ja noch wenns nur ein Paar tausend sind o_O

Dann lass ich das besser... Wie kann ich das denn anders machen?
Weil wenn Fehler auftreten, was leider doch manchmal passiert, würd ich gern wissen was passiert ist damit ichs ausbessern kann...
Wie kann ich das machen (ohne den Benutzer zum senden des Logs zu bitten)
 
Stichwort: SEH
SetUnhandledExceptionFilter function (Windows)
Structured Exception Handling
Gerald Shapiro - Simple SEH using win32 api
(auf die Schnelle finde ich nichts explizit für C, habe die Funktionen aber mal in MASM ohne große Schwierigkeiten eingesetzt - die APIs sind schließlich C kompatibel ;) )
Man setzt also eigenen SEH Handler und wandelt den Fehler in Textform um/macht eventuell einige Dumps. Dann fragt man den Benutzer, ob er den Fehlerbericht zusenden möchte - also das Programm eine Internetverbindung aufbauen kann (Ja/Nein + kurze Erklärung + Option, das ganze einzusehen) und sendet den Inhalt an einen eigenen Server, der das ganze irgendwo speichert.

Wobei ich eher noch zusätzlich Logging einbauen würde - der z.B bei einem "Absturz" aktiviert wird.
Und SEH zum "schönen" Beenden nutzten (z.B Logs schreiben, Benutzerzeug speichern, damit es nicht verloren geht und eine Anfrage zum senden der Logs anzeigen).
Damit wird man den Fehler eher nachvollziehen können, als nur mit einem simplen Dump + Excepton Meldung.
 
Hallo Community :)
Ich programmiere mit Dev-Cpp in C...

Darauf scheint noch niemand eingegangen zu sein, darum werde ich das mal machen. Die letzte offizielle Version von Dev-C++ (nämlich 5 beta) ist von 2007 und somit hoffnungslos veraltet. Somit ist auch die damit angebotene Version der GCC veraltet.
Du solltest unbedingt auf eine andere IDE umsatteln.
 
Dev-C++ wird seit Juni 2011 von Orwell wieder fortgeführt bzw. unter dem Namen "Orwell Dev-C++", daher ist die Information nicht ganz richtig. Blodshed macht nur nicht mehr weiter, daher kam nichts neues zwischen 2005 und 2011.

Ansonsten ist auch noch Code::Blocks empfehlenswert.
 
Danke :)

Jetzt ist übrigens ein anderes Problem aufgetaucht...
Ich habe einfach eine .html programmiert auf der ich einen mailto Link verankert habe... Es funktioniert alles bestens nur ich würde gerne mein Programm direkt den Browser öffnen und auf diese Seite umlenken lassen...
Wie mach ich das?
 
So ganz spontan glaube ich das ist OS abhängig, ob es da eine unabhängige Lösung gibt weiß ich nicht. Such mal für Windows nach ShellExecute bzw. ShellExecuteEx.
 
CreateProcess("Firefox.exe", "seite.html", ..

Das ist sowas von böse.

Richtig:
Code:
ShellExecute(0, "open", URL, "", "", 1)

Damit wird die URL in dem Standardbrowser geöffnet. Abgesehen davon liegt firefox.exe meist nicht im Pfad.

Unter Linux sollte ein Aufruf von /usr/bin/x-www-browser mit der URL als einzigen Paramter (ggf. in Anführungszeichen) ausreichen.
 
Zurück
Oben