X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/478cde3220641d49cfbd492e799107d13ccdfeb3..35cb486ae02b9edb2a142f80fe362e29b1496298:/samples/debugrpt/debugrpt.cpp diff --git a/samples/debugrpt/debugrpt.cpp b/samples/debugrpt/debugrpt.cpp index 6680fe8a09..456bf020c9 100644 --- a/samples/debugrpt/debugrpt.cpp +++ b/samples/debugrpt/debugrpt.cpp @@ -27,18 +27,22 @@ #error "This sample can't be built without wxUSE_DEBUGREPORT" #endif // wxUSE_DEBUGREPORT +#if !wxUSE_ON_FATAL_EXCEPTION + #error "This sample can't be built without wxUSE_ON_FATAL_EXCEPTION" +#endif // wxUSE_ON_FATAL_EXCEPTION + // ---------------------------------------------------------------------------- // custom debug reporting class // ---------------------------------------------------------------------------- -// this is your custom debug reporter, you will probably want to parse the XML -// document in OnServerReply() instead of just dumping it as I do +// this is your custom debug reporter: it will use curl program (which should +// be available) to upload the crash report to the given URL (which should be +// set up by you) class MyDebugReport : public wxDebugReportUpload { public: MyDebugReport() : wxDebugReportUpload ( - //_T("http://iml2.hitchcock.org/intranet/crashes/wxtest"), _T("http://your.url.here/"), _T("report:file"), _T("action") @@ -47,6 +51,9 @@ public: } protected: + // this is called with the contents of the server response: you will + // probably want to parse the XML document in OnServerReply() instead of + // just dumping it as I do virtual bool OnServerReply(const wxArrayString& reply) { if ( reply.IsEmpty() ) @@ -69,6 +76,32 @@ protected: } }; +// another possibility would be to build email library from contrib and use +// this class, after uncommenting it: +#if 0 + +#include "wx/net/email.h" + +class MyDebugReport : public wxDebugReportCompress +{ +public: + virtual bool DoProcess() + { + if ( !wxDebugReportCompress::DoProcess() ) + return false; + wxMailMessage msg(GetReportName() + _T(" crash report"), + _T("vadim@wxwindows.org"), + wxEmptyString, // mail body + wxEmptyString, // from address + GetCompressedFileName(), + _T("crashreport.zip")); + + return wxEmail::Send(msg); + } +}; + +#endif // 0 + // ---------------------------------------------------------------------------- // helper functions // ---------------------------------------------------------------------------- @@ -173,6 +206,14 @@ public: report.AddFile(fn.GetFullName(), _T("timestamp of this report")); + // can also add an existing file directly, it will be copied + // automatically +#ifdef __WXMSW__ + report.AddFile(_T("c:\\autoexec.bat"), _T("DOS startup file")); +#else + report.AddFile(_T("/etc/motd"), _T("Message of the day")); +#endif + // calling Show() is not mandatory, but is more polite if ( wxDebugReportPreviewStd().Show(report) ) {