]>
git.saurik.com Git - wxWidgets.git/blob - interface/wx/debugrpt.h
   1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     interface of wxDebugReport* 
   4 // Author:      wxWidgets team 
   6 // Licence:     wxWindows license 
   7 ///////////////////////////////////////////////////////////////////////////// 
  10     @class wxDebugReportPreview 
  12     This class presents the debug report to the user and allows him to veto 
  13     report entirely or remove some parts of it. Although not mandatory, using 
  14     this class is strongly recommended as data included in the debug report 
  15     might contain sensitive private information and the user should be notified 
  16     about it as well as having a possibility to examine the data which had been 
  17     gathered to check whether this is effectively the case and discard the 
  18     debug report if it is. 
  20     wxDebugReportPreview is an abstract base class, currently the only concrete 
  21     class deriving from it is wxDebugReportPreviewStd. 
  26 class wxDebugReportPreview
 
  32     wxDebugReportPreview(); 
  35         Destructor is trivial as well but should be virtual for a base class. 
  37     virtual ~wxDebugReportPreview(); 
  40         Present the report to the user and allow him to modify it by removing 
  41         some or all of the files and, potentially, adding some notes. 
  43         @return @true if the report should be processed or @false if the user 
  44                  chose to cancel report generation or removed all files from 
  47     virtual bool Show(wxDebugReport
& dbgrpt
) const = 0; 
  53     @class wxDebugReportCompress 
  55     wxDebugReportCompress is a wxDebugReport which compresses all the files in 
  56     this debug report into a single ZIP file in its wxDebugReport::Process() 
  62 class wxDebugReportCompress 
: public wxDebugReport
 
  66         Default constructor does nothing special. 
  68     wxDebugReportCompress(); 
  71         Returns the full path of the compressed file (empty if creation 
  74     const wxString
& GetCompressedFileName() const; 
  82     wxDebugReport is used to generate a debug report, containing information 
  83     about the program current state. It is usually used from 
  84     wxApp::OnFatalException() as shown in the @ref page_samples_debugrpt. 
  86     A wxDebugReport object contains one or more files. A few of them can be 
  87     created by the class itself but more can be created from the outside and 
  88     then added to the report. Also note that several virtual functions may be 
  89     overridden to further customize the class behaviour. 
  91     Once a report is fully assembled, it can simply be left in the temporary 
  92     directory so that the user can email it to the developers (in which case 
  93     you should still use wxDebugReportCompress to compress it in a single file) 
  94     or uploaded to a Web server using wxDebugReportUpload (setting up the Web 
  95     server to accept uploads is your responsibility, of course). Other 
  96     handlers, for example for automatically emailing the report, can be defined 
  97     as well but are not currently included in wxWidgets. 
  99     A typical usage example: 
 102     wxDebugReport report; 
 103     wxDebugReportPreviewStd preview; 
 105     report.AddCurrentContext();  // could also use AddAll() 
 106     report.AddCurrentDump();     // to do both at once 
 108     if ( preview.Show(report) ) 
 119         This enum is used for functions that report either the current state or 
 120         the state during the last (fatal) exception. 
 128         The constructor creates a temporary directory where the files that will 
 129         be included in the report are created. Use IsOk() to check for errors. 
 134         The destructor normally destroys the temporary directory created in the 
 135         constructor with all the files it contains. Call Reset() to prevent 
 138     virtual ~wxDebugReport(); 
 141         Adds all available information to the report. Currently this includes a 
 142         text (XML) file describing the process context and, under Win32, a 
 145     void AddAll(Context context 
= Context_Exception
); 
 148         Add an XML file containing the current or exception context and the 
 151     virtual bool AddContext(Context ctx
); 
 154         The same as calling AddContext(Context_Current). 
 156     bool AddCurrentContext(); 
 159         The same as calling AddDump(Context_Current). 
 161     bool AddCurrentDump(); 
 164         Adds the minidump file to the debug report. 
 166         Minidumps are only available under recent Win32 versions 
 167         (@c dbghlp32.dll can be installed under older systems to make minidumps 
 170     virtual bool AddDump(Context ctx
); 
 173         The same as calling AddContext(Context_Exception). 
 175     bool AddExceptionContext(); 
 178         The same as calling AddDump(Context_Exception). 
 180     bool AddExceptionDump(); 
 183         Add another file to the report. If @a filename is an absolute path, it 
 184         is copied to a file in the debug report directory with the same name. 
 185         Otherwise the file should already exist in this directory 
 186         @a description only exists to be displayed to the user in the report 
 187         summary shown by wxDebugReportPreview. 
 189         @see GetDirectory(), AddText() 
 191     virtual void AddFile(const wxString
& filename
, const wxString
& description
); 
 194         This is a convenient wrapper around AddFile(). It creates the file with 
 195         the given @a name and writes @a text to it, then adds the file to the 
 196         report. The @a filename shouldn't contain the path. 
 198         @return @true if file could be added successfully, @false if an IO 
 201     bool AddText(const wxString
& filename
, const wxString
& text
, 
 202                  const wxString
& description
); 
 205         This method should be used to construct the full name of the files 
 206         which you wish to add to the report using AddFile(). 
 208         @return The name of the temporary directory used for the files in this 
 211     const wxString
& GetDirectory() const; 
 214         Retrieves the name (relative to GetDirectory()) and the description of 
 215         the file with the given index. If @a n is greater than or equal to the 
 216         number of filse, @false is returned. 
 218     bool GetFile(size_t n
, wxString
* name
, wxString
* desc
) const; 
 221         Gets the current number files in this report. 
 223     size_t GetFilesCount() const; 
 226         Gets the name used as a base name for various files, by default 
 227         wxApp::GetAppName() is used. 
 229     virtual wxString 
GetReportName() const; 
 232         Returns @true if the object was successfully initialized. If this 
 233         method returns @false the report can't be used. 
 238         Processes this report: the base class simply notifies the user that the 
 239         report has been generated. This is usually not enough -- instead you 
 240         should override this method to do something more useful to you. 
 245         Removes the file from report: this is used by wxDebugReportPreview to 
 246         allow the user to remove files potentially containing private 
 247         information from the report. 
 249     void RemoveFile(const wxString
& name
); 
 252         Resets the directory name we use. The object can't be used any more 
 253         after this as it becomes uninitialized and invalid. 
 260         This function may be overridden to add arbitrary custom context to the 
 261         XML context file created by AddContext(). By default, it does nothing. 
 263     virtual void DoAddCustomContext(wxXmlNode
* nodeRoot
); 
 266         This function may be overridden to modify the contents of the exception 
 267         tag in the XML context file. 
 269     virtual bool DoAddExceptionInfo(wxXmlNode
* nodeContext
); 
 272         This function may be overridden to modify the contents of the modules 
 273         tag in the XML context file. 
 275     virtual bool DoAddLoadedModules(wxXmlNode
* nodeModules
); 
 278         This function may be overridden to modify the contents of the system 
 279         tag in the XML context file. 
 281     virtual bool DoAddSystemInfo(wxXmlNode
* nodeSystemInfo
); 
 287     @class wxDebugReportPreviewStd 
 289     wxDebugReportPreviewStd is a standard debug report preview window. It 
 290     displays a dialog allowing the user to examine the contents of a debug 
 291     report, remove files from and add notes to it. 
 296 class wxDebugReportPreviewStd 
: public wxDebugReportPreview
 
 300         Trivial default constructor. 
 302     wxDebugReportPreviewStd(); 
 307         @see wxDebugReportPreview::Show() 
 309     bool Show(wxDebugReport
& dbgrpt
) const; 
 315     @class wxDebugReportUpload 
 317     This class is used to upload a compressed file using HTTP POST request. As 
 318     this class derives from wxDebugReportCompress, before upload the report is 
 319     compressed in a single ZIP file. 
 324 class wxDebugReportUpload 
: public wxDebugReportCompress
 
 328         This class will upload the compressed file created by its base class to 
 329         an HTML multipart/form-data form at the specified address. The @a url 
 330         is the upload page address, @a input is the name of the @c "type=file" 
 331         control on the form used for the file name and @a action is the value 
 332         of the form action field. The report is uploaded using the @e curl 
 333         program which should be available, the @e curl parameter may be used to 
 334         specify the full path to it. 
 336     wxDebugReportUpload(const wxString
& url
, const wxString
& input
, 
 337                         const wxString
& action
, 
 338                         const wxString
& curl 
= "curl"); 
 342         This function may be overridden in a derived class to show the output 
 343         from curl: this may be an HTML page or anything else that the server 
 344         returned. Value returned by this function becomes the return value of 
 345         wxDebugReport::Process(). 
 347     virtual bool OnServerReply(const wxArrayString
& reply
);