Merge pull request #5488 from Icinga/feature/dbg-functions

Implement additional functions for printing values with LLDB/GDB
This commit is contained in:
Michael Friedrich 2017-08-10 10:27:33 +02:00 committed by GitHub
commit e67d4c4ef7
1 changed files with 36 additions and 0 deletions

View File

@ -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("<dbg>", 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("<dbg>", 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;