]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/stackwalk.h
set eol-style
[wxWidgets.git] / include / wx / stackwalk.h
index 5e8beacc91d14e72b9ec75bac049684a1a86f300..8bb237149834bad5a35f44ca1f612c55dc7f6b8b 100644 (file)
@@ -16,7 +16,7 @@
 
 #if wxUSE_STACKWALKER
 
 
 #if wxUSE_STACKWALKER
 
-class WXDLLIMPEXP_BASE wxStackFrame;
+class WXDLLIMPEXP_FWD_BASE wxStackFrame;
 
 // ----------------------------------------------------------------------------
 // wxStackFrame: a single stack level
 
 // ----------------------------------------------------------------------------
 // wxStackFrame: a single stack level
@@ -54,6 +54,9 @@ public:
     // return the instruction pointer offset from the start of the function
     size_t GetOffset() const { ConstCast()->OnGetName(); return m_offset; }
 
     // return the instruction pointer offset from the start of the function
     size_t GetOffset() const { ConstCast()->OnGetName(); return m_offset; }
 
+    // get the module this function belongs to (not always available)
+    wxString GetModule() const { ConstCast()->OnGetName(); return m_module; }
+
 
     // return true if we have the filename and line number for this frame
     bool HasSourceLocation() const { return !GetFileName().empty(); }
 
     // return true if we have the filename and line number for this frame
     bool HasSourceLocation() const { return !GetFileName().empty(); }
@@ -101,7 +104,9 @@ protected:
     size_t m_level;
 
     wxString m_name,
     size_t m_level;
 
     wxString m_name,
+             m_module,
              m_filename;
              m_filename;
+
     size_t m_line;
 
     void *m_address;
     size_t m_line;
 
     void *m_address;
@@ -118,16 +123,19 @@ public:
     // ctor does nothing, use Walk() to walk the stack
     wxStackWalkerBase() { }
 
     // ctor does nothing, use Walk() to walk the stack
     wxStackWalkerBase() { }
 
+    // dtor does nothing neither but should be virtual
+    virtual ~wxStackWalkerBase() { }
+
     // enumerate stack frames from the current location, skipping the initial
     // number of them (this can be useful when Walk() is called from some known
     // location and you don't want to see the first few frames anyhow; also
     // notice that Walk() frame itself is not included if skip >= 1)
     // enumerate stack frames from the current location, skipping the initial
     // number of them (this can be useful when Walk() is called from some known
     // location and you don't want to see the first few frames anyhow; also
     // notice that Walk() frame itself is not included if skip >= 1)
-    virtual void Walk(size_t skip = 1) = 0;
+    virtual void Walk(size_t skip = 1, size_t maxDepth = 200) = 0;
 
     // enumerate stack frames from the location of uncaught exception
     //
     // this version can only be called from wxApp::OnFatalException()
 
     // enumerate stack frames from the location of uncaught exception
     //
     // this version can only be called from wxApp::OnFatalException()
-    virtual void WalkFromException() = 0;
+    virtual void WalkFromException(size_t maxDepth = 200) = 0;
 
 protected:
     // this function must be overrided to process the given frame
 
 protected:
     // this function must be overrided to process the given frame
@@ -136,6 +144,10 @@ protected:
 
 #ifdef __WXMSW__
     #include "wx/msw/stackwalk.h"
 
 #ifdef __WXMSW__
     #include "wx/msw/stackwalk.h"
+#elif defined(__UNIX__)
+    #include "wx/unix/stackwalk.h"
+#else
+    #error "wxStackWalker is not supported, set wxUSE_STACKWALKER to 0"
 #endif
 
 #endif // wxUSE_STACKWALKER
 #endif
 
 #endif // wxUSE_STACKWALKER