]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/stackwalk.cpp
WinCE fixes (in case a WinCE-friendly backend gets written one day)
[wxWidgets.git] / src / msw / stackwalk.cpp
index 3872361952975c2376665fd5596b144b3ad16af2..8bdf7d4021931971216fa80aa6796d9fe01014d8 100644 (file)
 
 #if wxUSE_STACKWALKER
 
+#ifndef WX_PRECOMP
+    #include "wx/string.h"
+#endif
+
 #include "wx/stackwalk.h"
 
 #include "wx/msw/debughlp.h"
@@ -124,15 +128,15 @@ wxStackFrame::GetParam(size_t n,
 
 void wxStackFrame::OnParam(PSYMBOL_INFO pSymInfo)
 {
-    m_paramTypes.Add(_T(""));
+    m_paramTypes.Add(wxEmptyString);
 
     m_paramNames.Add(wxString::FromAscii(pSymInfo->Name));
 
     // if symbol information is corrupted and we crash, the exception is going
     // to be ignored when we're called from WalkFromException() because of the
-    // except handler there returning EXCEPTION_CONTINUE_EXECUTION, but we'd be
-    // left in an inconsistent state, so deal with it explicitely here (even if
-    // normally we should never crash, of course...)
+    // exception handler there returning EXCEPTION_CONTINUE_EXECUTION, but we'd
+    // be left in an inconsistent state, so deal with it explicitly here (even
+    // if normally we should never crash, of course...)
 #ifdef _CPPUNWIND
     try
 #else
@@ -150,7 +154,7 @@ void wxStackFrame::OnParam(PSYMBOL_INFO pSymInfo)
     __except ( EXCEPTION_EXECUTE_HANDLER )
 #endif
     {
-        m_paramValues.Add(_T(""));
+        m_paramValues.Add(wxEmptyString);
     }
 }
 
@@ -164,7 +168,7 @@ EnumSymbolsProc(PSYMBOL_INFO pSymInfo, ULONG WXUNUSED(SymSize), PVOID data)
     {
         frame->OnParam(pSymInfo);
     }
-    
+
     // return true to continue enumeration, false would have stopped it
     return TRUE;
 }
@@ -214,8 +218,12 @@ void wxStackWalker::WalkFrom(const CONTEXT *pCtx, size_t skip)
 {
     if ( !wxDbgHelpDLL::Init() )
     {
-        wxLogError(_("Failed to get stack backtrace:\n%s"),
+        // don't log a user-visible error message here because the stack trace
+        // is only needed for debugging/diagnostics anyhow and we shouldn't
+        // confuse the user by complaining that we couldn't generate it
+        wxLogDebug(_T("Failed to get stack backtrace: %s"),
                    wxDbgHelpDLL::GetErrorMessage().c_str());
+        return;
     }
 
     // according to MSDN, the first parameter should be just a unique value and
@@ -340,7 +348,61 @@ void wxStackWalker::Walk(size_t skip)
 
 #else // !wxUSE_DBGHELP
 
-// TODO: implement stubs
+// ============================================================================
+// stubs
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// wxStackFrame
+// ----------------------------------------------------------------------------
+
+void wxStackFrame::OnGetName()
+{
+}
+
+void wxStackFrame::OnGetLocation()
+{
+}
+
+bool
+wxStackFrame::GetParam(size_t WXUNUSED(n),
+                       wxString * WXUNUSED(type),
+                       wxString * WXUNUSED(name),
+                       wxString * WXUNUSED(value)) const
+{
+    return false;
+}
+
+void wxStackFrame::OnParam(_SYMBOL_INFO * WXUNUSED(pSymInfo))
+{
+}
+
+void wxStackFrame::OnGetParam()
+{
+}
+
+// ----------------------------------------------------------------------------
+// wxStackWalker
+// ----------------------------------------------------------------------------
+
+void
+wxStackWalker::WalkFrom(const CONTEXT * WXUNUSED(pCtx), size_t WXUNUSED(skip))
+{
+}
+
+void
+wxStackWalker::WalkFrom(const _EXCEPTION_POINTERS * WXUNUSED(ep),
+                        size_t WXUNUSED(skip))
+{
+}
+
+void wxStackWalker::WalkFromException()
+{
+}
+
+void wxStackWalker::Walk(size_t WXUNUSED(skip))
+{
+}
 
 #endif // wxUSE_DBGHELP/!wxUSE_DBGHELP