#define TEST_SCOPEGUARD
#define TEST_SNGLINST
// #define TEST_SOCKETS --FIXME! (RN)
+ #define TEST_STACKWALKER
#define TEST_STDPATHS
#define TEST_STREAMS
#define TEST_TEXTSTREAM
#define TEST_WCHAR
#define TEST_ZIP
#else // #if TEST_ALL
- #define TEST_DLLLOADER
+ #define TEST_STACKWALKER
#endif
// some tests are interactive, define this to run them
for ( size_t n = 0; n < count; ++n )
{
const wxDynamicLibraryDetails& details = dlls[n];
- printf("%-45s", details.GetPath().c_str());
+ printf("%-45s", details.GetPath().mb_str());
void *addr;
size_t len;
(unsigned long)addr, (unsigned long)((char *)addr + len));
}
- printf(" %s\n", details.GetVersion().c_str());
+ printf(" %s\n", details.GetVersion().mb_str());
}
}
#endif // TEST_FTP
+// ----------------------------------------------------------------------------
+// stack backtrace
+// ----------------------------------------------------------------------------
+
+#ifdef TEST_STACKWALKER
+
+#include "wx/stackwalk.h"
+
+class StackDump : public wxStackWalker
+{
+public:
+ StackDump(const char *argv0)
+ : wxStackWalker(argv0)
+ {
+ }
+
+ virtual void Walk()
+ {
+ wxPuts(_T("Stack dump:"));
+
+ wxStackWalker::Walk();
+ }
+
+protected:
+ virtual void OnStackFrame(const wxStackFrame& frame)
+ {
+ printf("[%2d] ", frame.GetLevel());
+
+ wxString name = frame.GetName();
+ if ( !name.empty() )
+ {
+ printf("%-20.40s", name.mb_str());
+ }
+ else
+ {
+ printf("0x%08lx", (unsigned long)frame.GetAddress());
+ }
+
+ if ( frame.HasSourceLocation() )
+ {
+ printf("\t%s:%d",
+ frame.GetFileName().mb_str(),
+ frame.GetLine());
+ }
+
+ puts("");
+
+ wxString type, val;
+ for ( size_t n = 0; frame.GetParam(n, &type, &name, &val); n++ )
+ {
+ printf("\t%s %s = %s\n", type.mb_str(), name.mb_str(), val.mb_str());
+ }
+ }
+};
+
+static void TestStackWalk(const char *argv0)
+{
+ wxPuts(_T("*** Testing wxStackWalker ***\n"));
+
+ StackDump dump(argv0);
+ dump.Walk();
+}
+
+#endif // TEST_STACKWALKER
+
// ----------------------------------------------------------------------------
// standard paths
// ----------------------------------------------------------------------------
TestScopeGuard();
#endif
+#ifdef TEST_STACKWALKER
+ TestStackWalk(argv[0]);
+#endif // TEST_STACKWALKER
+
#ifdef TEST_STDPATHS
TestStandardPaths();
#endif