From 4d943c7f5c50e2f123a7ad940ecdbcfb8c725fa4 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Thu, 10 Aug 2017 08:26:22 +0200 Subject: [PATCH] Implement additional functions for printing values with LLDB/GDB --- lib/cli/consolecommand.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/lib/cli/consolecommand.cpp b/lib/cli/consolecommand.cpp index 44b14aecb..a0e92871d 100644 --- a/lib/cli/consolecommand.cpp +++ b/lib/cli/consolecommand.cpp @@ -82,6 +82,42 @@ extern "C" void dbg_eval(const char *text) delete expr; } +extern "C" void dbg_eval_with_value(const Value& value, const char *text) +{ + Expression *expr = NULL; + + try { + ScriptFrame frame; + frame.Locals = new Dictionary(); + frame.Locals->Set("arg", value); + expr = ConfigCompiler::CompileText("", text); + Value result = Serialize(expr->Evaluate(frame), 0); + dbg_inspect_value(result); + } catch (const std::exception& ex) { + std::cout << "Error: " << DiagnosticInformation(ex) << "\n"; + } + + delete expr; +} + +extern "C" void dbg_eval_with_object(Object *object, const char *text) +{ + Expression *expr = NULL; + + try { + ScriptFrame frame; + frame.Locals = new Dictionary(); + frame.Locals->Set("arg", object); + expr = ConfigCompiler::CompileText("", text); + Value result = Serialize(expr->Evaluate(frame), 0); + dbg_inspect_value(result); + } catch (const std::exception& ex) { + std::cout << "Error: " << DiagnosticInformation(ex) << "\n"; + } + + delete expr; +} + void ConsoleCommand::BreakpointHandler(ScriptFrame& frame, ScriptError *ex, const DebugInfo& di) { static boost::mutex mutex; -- 2.40.0