]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/stackwalker.tex
many wxItemContainer-related changes:
[wxWidgets.git] / docs / latex / wx / stackwalker.tex
index 93e12f64321cc96986a9a790fde5c47405daf44c..562e80eb760a9996c729fa8dc4b182e1a8eac54b 100644 (file)
@@ -5,25 +5,37 @@
 %% Created:     2005-01-19
 %% RCS-ID:      $Id$
 %% Copyright:   (c) 2005 Vadim Zeitlin
 %% Created:     2005-01-19
 %% RCS-ID:      $Id$
 %% Copyright:   (c) 2005 Vadim Zeitlin
-%% License:     wxWidgets license
+%% License:     wxWindows license
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \section{\class{wxStackWalker}}\label{wxstackwalker}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \section{\class{wxStackWalker}}\label{wxstackwalker}
 
-wxStackWalker allows to enumerate, or walk, the stack frames or, in other
-words, the functions callstack. It is mostly useful in only two situations:
+wxStackWalker allows an application to enumerate, or walk, the stack frames (the function callstack).
+It is mostly useful in only two situations:
 inside \helpref{wxApp::OnFatalException}{wxapponfatalexception} function to
 inside \helpref{wxApp::OnFatalException}{wxapponfatalexception} function to
-programmatically get the location of the crash and, in debug builds, in 
-\helpref{wxApp::OnAssert}{wxapponassert} to report the caller of the failed
+programmatically get the location of the crash and, in debug builds, in
+\helpref{wxApp::OnAssertFailure}{wxapponassertfailure} to report the caller of the failed
 assert.
 
 assert.
 
-wxStackWalker works by repeatedly calling 
-\helpref{OnStackFrame}{wxstackwalkeronstackframe} method for each frame in the
+wxStackWalker works by repeatedly calling
+the \helpref{OnStackFrame}{wxstackwalkeronstackframe} method for each frame in the
 stack, so to use it you must derive your own class from it and override this
 method.
 
 This class will not return anything except raw stack frame addresses if the
 stack, so to use it you must derive your own class from it and override this
 method.
 
 This class will not return anything except raw stack frame addresses if the
-debug information is not available. See 
+debug information is not available. Under Win32 this means that the PDB file
+matching the program being executed should be present. Note that if you use
+Microsoft Visual C++ compiler, you can create PDB files even for the programs
+built in release mode and it doesn't affect the program size (at least if you
+don't forget to add \texttt{/opt:ref} option which is suppressed by using
+\texttt{/debug} linker option by default but should be always enabled for
+release builds). Under Unix, you need to compile your program with debugging
+information (usually using \texttt{-g} compiler and linker options) to get the
+file and line numbers information, however function names should be available
+even without it. Of course, all this is only true if you build using a recent
+enough version of GNU libc which provides the \texttt{backtrace()} function
+needed to walk the stack.
+
 \helpref{debugging overview}{debuggingoverview} for how to make it available.
 
 \wxheading{Derived from}
 \helpref{debugging overview}{debuggingoverview} for how to make it available.
 
 \wxheading{Derived from}
@@ -70,19 +82,21 @@ This function must be overrided to process the given frame.
 
 \membersection{wxStackWalker::Walk}\label{wxstackwalkerwalk}
 
 
 \membersection{wxStackWalker::Walk}\label{wxstackwalkerwalk}
 
-\func{void}{Walk}{\param{size\_t }{skip = 1}}
+\func{void}{Walk}{\param{size\_t }{skip = 1}, \param{size\_t }{maxDepth = 200}}
 
 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 $\ge 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 $\ge 1$).
 
+Up to \arg{maxDepth} frames are walked from the innermost to the outermost one.
+
 
 \membersection{wxStackWalker::WalkFromException}\label{wxstackwalkerwalkfromexception}
 
 \func{void}{WalkFromException}{\void}
 
 Enumerate stack frames from the location of uncaught exception.
 
 \membersection{wxStackWalker::WalkFromException}\label{wxstackwalkerwalkfromexception}
 
 \func{void}{WalkFromException}{\void}
 
 Enumerate stack frames from the location of uncaught exception.
-This method can only be called from 
+This method can only be called from
 \helpref{wxApp::OnFatalException()}{wxapponfatalexception}.
 
 \helpref{wxApp::OnFatalException()}{wxapponfatalexception}.