diff options
author | Sean Callanan <scallanan@apple.com> | 2010-12-07 22:55:01 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2010-12-07 22:55:01 +0000 |
commit | a162ebafdb05733e11ebf75d48ccd12454c9aeb9 (patch) | |
tree | a45dc333afd883c1be450b844ff4d57787f9161b | |
parent | ed75c094019c2f01f3be8e659b97773c4cce1d0c (diff) | |
download | bcm5719-llvm-a162ebafdb05733e11ebf75d48ccd12454c9aeb9.tar.gz bcm5719-llvm-a162ebafdb05733e11ebf75d48ccd12454c9aeb9.zip |
More logging for use in debugging the interactions
between clients of the LLDB API and the expression
parser.
llvm-svn: 121193
-rw-r--r-- | lldb/source/API/SBFrame.cpp | 5 | ||||
-rw-r--r-- | lldb/source/Expression/ClangUserExpression.cpp | 31 |
2 files changed, 32 insertions, 4 deletions
diff --git a/lldb/source/API/SBFrame.cpp b/lldb/source/API/SBFrame.cpp index ed514fd1221..a20d2d03967 100644 --- a/lldb/source/API/SBFrame.cpp +++ b/lldb/source/API/SBFrame.cpp @@ -561,6 +561,8 @@ lldb::SBValue SBFrame::EvaluateExpression (const char *expr) { LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); + + LogSP expr_log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS)); lldb::SBValue expr_result; if (log) @@ -580,6 +582,9 @@ SBFrame::EvaluateExpression (const char *expr) ClangUserExpression::Evaluate (exe_ctx, discard_on_error, expr, prefix, *expr_result); } + if (expr_log) + expr_log->Printf("** [SBFrame::EvaluateExpression] Expression result is %s, summary %s **", expr_result.GetValue(*this), expr_result.GetSummary(*this)); + if (log) log->Printf ("SBFrame(%p)::EvaluateExpression (expr=\"%s\") => SBValue(%p)", m_opaque_sp.get(), expr, expr_result.get()); diff --git a/lldb/source/Expression/ClangUserExpression.cpp b/lldb/source/Expression/ClangUserExpression.cpp index 6857634a0a8..366b10e6dce 100644 --- a/lldb/source/Expression/ClangUserExpression.cpp +++ b/lldb/source/Expression/ClangUserExpression.cpp @@ -315,7 +315,7 @@ ClangUserExpression::PrepareToExecuteJITExpression (Stream &error_stream, if (log) { - log->Printf("-- Materializing for execution --"); + log->Printf("-- [ClangUserExpression::PrepareToExecuteJITExpression] Materializing for execution --"); log->Printf(" Function address : 0x%llx", (uint64_t)m_jit_addr); @@ -377,7 +377,7 @@ ClangUserExpression::FinalizeJITExecution (Stream &error_stream, if (log) { - log->Printf("-- Dematerializing after execution --"); + log->Printf("-- [ClangUserExpression::FinalizeJITExecution] Dematerializing after execution --"); StreamString args; @@ -442,14 +442,14 @@ ClangUserExpression::Execute (Stream &error_stream, uint32_t single_thread_timeout_usec = 10000000; if (log) - log->Printf("-- Execution of expression begins --"); + log->Printf("-- [ClangUserExpression::Execute] Execution of expression begins --"); Process::ExecutionResults execution_result = exe_ctx.process->RunThreadPlan (exe_ctx, call_plan_sp, stop_others, try_all_threads, discard_on_error, single_thread_timeout_usec, error_stream); if (log) - log->Printf("-- Execution of expression completed --"); + log->Printf("-- [ClangUserExpression::Execute] Execution of expression completed --"); if (execution_result == Process::eExecutionInterrupted) { @@ -494,6 +494,8 @@ ClangUserExpression::Evaluate (ExecutionContext &exe_ctx, const char *expr_prefix, lldb::ValueObjectSP &result_valobj_sp) { + lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS)); + Error error; Process::ExecutionResults execution_results = Process::eExecutionSetupError; @@ -507,6 +509,9 @@ ClangUserExpression::Evaluate (ExecutionContext &exe_ctx, if (!exe_ctx.process->GetDynamicCheckers()) { + if (log) + log->Printf("== [ClangUserExpression::Evaluate] Installing dynamic checkers =="); + DynamicCheckerFunctions *dynamic_checkers = new DynamicCheckerFunctions(); StreamString install_errors; @@ -523,12 +528,18 @@ ClangUserExpression::Evaluate (ExecutionContext &exe_ctx, } exe_ctx.process->SetDynamicCheckers(dynamic_checkers); + + if (log) + log->Printf("== [ClangUserExpression::Evaluate] Finished installing dynamic checkers =="); } ClangUserExpressionSP user_expression_sp (new ClangUserExpression (expr_cstr, expr_prefix)); StreamString error_stream; + if (log) + log->Printf("== [ClangUserExpression::Evaluate] Parsing expression %s ==", expr_cstr); + if (!user_expression_sp->Parse (error_stream, exe_ctx, TypeFromUser(NULL, NULL))) { if (error_stream.GetString().empty()) @@ -541,6 +552,9 @@ ClangUserExpression::Evaluate (ExecutionContext &exe_ctx, ClangExpressionVariable *expr_result = NULL; error_stream.GetString().clear(); + + if (log) + log->Printf("== [ClangUserExpression::Evaluate] Executing expression =="); execution_results = user_expression_sp->Execute (error_stream, exe_ctx, @@ -549,6 +563,9 @@ ClangUserExpression::Evaluate (ExecutionContext &exe_ctx, expr_result); if (execution_results != Process::eExecutionCompleted) { + if (log) + log->Printf("== [ClangUserExpression::Evaluate] Execution completed abnormally =="); + if (error_stream.GetString().empty()) error.SetErrorString ("expression failed to execute, unknown error"); else @@ -564,9 +581,15 @@ ClangUserExpression::Evaluate (ExecutionContext &exe_ctx, if (expr_result) { result_valobj_sp = expr_result->GetExpressionResult (&exe_ctx); + + if (log) + log->Printf("== [ClangUserExpression::Evaluate] Execution completed normally with result %s ==", result_valobj_sp->GetValueAsCString(exe_ctx.GetBestExecutionContextScope())); } else { + if (log) + log->Printf("== [ClangUserExpression::Evaluate] Execution completed normally with no result =="); + error.SetErrorString ("Expression did not return a result"); } } |