Index: lldb/bindings/interface/SBDebugger.i =================================================================== --- lldb/bindings/interface/SBDebugger.i +++ lldb/bindings/interface/SBDebugger.i @@ -141,6 +141,8 @@ static SBError InitializeWithErrorHandling(); + static void PrintStackTraceOnError(); + static void Terminate(); Index: lldb/include/lldb/API/SBDebugger.h =================================================================== --- lldb/include/lldb/API/SBDebugger.h +++ lldb/include/lldb/API/SBDebugger.h @@ -92,6 +92,8 @@ static lldb::SBError InitializeWithErrorHandling(); + static void PrintStackTraceOnError(); + static void Terminate(); // Deprecated, use the one that takes a source_init_files bool. Index: lldb/packages/Python/lldbsuite/test/dotest.py =================================================================== --- lldb/packages/Python/lldbsuite/test/dotest.py +++ lldb/packages/Python/lldbsuite/test/dotest.py @@ -880,6 +880,7 @@ import lldb lldb.SBDebugger.Initialize() + lldb.SBDebugger.PrintStackTraceOnError() checkLibcxxSupport() checkLibstdcxxSupport() Index: lldb/source/API/SBDebugger.cpp =================================================================== --- lldb/source/API/SBDebugger.cpp +++ lldb/source/API/SBDebugger.cpp @@ -57,6 +57,8 @@ #include "llvm/ADT/StringRef.h" #include "llvm/Support/DynamicLibrary.h" #include "llvm/Support/ManagedStatic.h" +#include "llvm/Support/PrettyStackTrace.h" +#include "llvm/Support/Signals.h" using namespace lldb; using namespace lldb_private; @@ -206,6 +208,15 @@ return error; } +void SBDebugger::PrintStackTraceOnError() { + LLDB_INSTRUMENT(); + + llvm::EnablePrettyStackTrace(); + // We don't have a meaningful argv[0] to use, so use "SBDebugger" as a + // substitute. + llvm::sys::PrintStackTraceOnErrorSignal("SBDebugger"); +} + void SBDebugger::Terminate() { LLDB_INSTRUMENT();