forked from OSchip/llvm-project
Added more logging so we see the register state
when a function starts and ends, and also the disassembly for anything that is a client of ClangExpressionParser after it has been JIT compiled. llvm-svn: 118401
This commit is contained in:
parent
e81f58e180
commit
ece9649264
|
@ -571,6 +571,24 @@ ClangExpressionParser::MakeJIT (lldb::addr_t &func_addr,
|
|||
}
|
||||
}
|
||||
|
||||
if (log)
|
||||
{
|
||||
log->Printf("Code can be run in the target.");
|
||||
|
||||
StreamString disassembly_stream;
|
||||
|
||||
Error err = DisassembleFunction(disassembly_stream, exe_ctx);
|
||||
|
||||
if (!err.Success())
|
||||
{
|
||||
log->Printf("Couldn't disassemble function : %s", err.AsCString("unknown error"));
|
||||
}
|
||||
else
|
||||
{
|
||||
log->Printf("Function disassembly:\n%s", disassembly_stream.GetData());
|
||||
}
|
||||
}
|
||||
|
||||
err.Clear();
|
||||
return err;
|
||||
}
|
||||
|
|
|
@ -238,24 +238,6 @@ ClangUserExpression::Parse (Stream &error_stream, ExecutionContext &exe_ctx)
|
|||
|
||||
if (jit_error.Success())
|
||||
{
|
||||
if (log)
|
||||
{
|
||||
log->Printf("Code can be run in the target.");
|
||||
|
||||
StreamString disassembly_stream;
|
||||
|
||||
Error err = parser.DisassembleFunction(disassembly_stream, exe_ctx);
|
||||
|
||||
if (!err.Success())
|
||||
{
|
||||
log->Printf("Couldn't disassemble function : %s", err.AsCString("unknown error"));
|
||||
}
|
||||
else
|
||||
{
|
||||
log->Printf("Function disassembly:\n%s", disassembly_stream.GetData());
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -89,6 +89,25 @@ ThreadPlanCallFunction::ThreadPlanCallFunction (Thread &thread,
|
|||
this_arg))
|
||||
return;
|
||||
|
||||
LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_STEP));
|
||||
|
||||
if (log)
|
||||
{
|
||||
RegisterContext *reg_ctx = m_thread.GetRegisterContext();
|
||||
|
||||
log->PutCString("Function call was set up. Register state was:");
|
||||
|
||||
for (uint32_t register_index = 0, num_registers = reg_ctx->GetRegisterCount();
|
||||
register_index < num_registers;
|
||||
++register_index)
|
||||
{
|
||||
const char *register_name = reg_ctx->GetRegisterName(register_index);
|
||||
uint64_t register_value = reg_ctx->ReadRegisterAsUnsigned(register_index, LLDB_INVALID_ADDRESS);
|
||||
|
||||
log->Printf(" %s = 0x%llx", register_name, register_value);
|
||||
}
|
||||
}
|
||||
|
||||
m_valid = true;
|
||||
}
|
||||
|
||||
|
@ -145,6 +164,25 @@ ThreadPlanCallFunction::ThreadPlanCallFunction (Thread &thread,
|
|||
*m_args))
|
||||
return;
|
||||
|
||||
LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_STEP));
|
||||
|
||||
if (log)
|
||||
{
|
||||
RegisterContext *reg_ctx = m_thread.GetRegisterContext();
|
||||
|
||||
log->PutCString("Function call was set up. Register state was:");
|
||||
|
||||
for (uint32_t register_index = 0, num_registers = reg_ctx->GetRegisterCount();
|
||||
register_index < num_registers;
|
||||
++register_index)
|
||||
{
|
||||
const char *register_name = reg_ctx->GetRegisterName(register_index);
|
||||
uint64_t register_value = reg_ctx->ReadRegisterAsUnsigned(register_index, LLDB_INVALID_ADDRESS);
|
||||
|
||||
log->Printf(" %s = 0x%llx", register_name, register_value);
|
||||
}
|
||||
}
|
||||
|
||||
m_valid = true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue