mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-04-01 12:43:47 +00:00
[lldb] Migrate condition evaluation failure to ReportError
Migrate to using ReportError to report a failure to evaluate a watchpoint condition. I had already done so for the parallel code for breakpoints. In the process, I noticed that I accidentally regressed the error reporting for breakpoint conditions by dropping the call to GetDescription. This patch rectifies that and adds a test. Because the call to GetDescription expects a Stream*, I also switches from using a raw_string_ostream to a StreamString for both breakpoints and watchpoints.
This commit is contained in:
parent
77eee5795e
commit
d10c0c7b18
@ -452,19 +452,18 @@ protected:
|
||||
|
||||
if (!condition_error.Success()) {
|
||||
const char *err_str =
|
||||
condition_error.AsCString("<Unknown Error>");
|
||||
condition_error.AsCString("<unknown error>");
|
||||
LLDB_LOGF(log, "Error evaluating condition: \"%s\"\n", err_str);
|
||||
|
||||
std::string error_message;
|
||||
llvm::raw_string_ostream os(error_message);
|
||||
os << "stopped due to an error evaluating condition of "
|
||||
"breakpoint "
|
||||
<< bp_loc_sp->GetConditionText() << '\n';
|
||||
os << err_str;
|
||||
os.flush();
|
||||
StreamString strm;
|
||||
strm << "stopped due to an error evaluating condition of "
|
||||
"breakpoint ";
|
||||
bp_loc_sp->GetDescription(&strm, eDescriptionLevelBrief);
|
||||
strm << ": \"" << bp_loc_sp->GetConditionText() << "\"\n";
|
||||
strm << err_str;
|
||||
|
||||
Debugger::ReportError(
|
||||
std::move(error_message),
|
||||
strm.GetString().str(),
|
||||
exe_ctx.GetTargetRef().GetDebugger().GetID());
|
||||
} else {
|
||||
LLDB_LOGF(log,
|
||||
@ -860,20 +859,18 @@ protected:
|
||||
}
|
||||
}
|
||||
} else {
|
||||
StreamSP error_sp = debugger.GetAsyncErrorStream();
|
||||
error_sp->Printf(
|
||||
"Stopped due to an error evaluating condition of watchpoint ");
|
||||
wp_sp->GetDescription(error_sp.get(), eDescriptionLevelBrief);
|
||||
error_sp->Printf(": \"%s\"", wp_sp->GetConditionText());
|
||||
error_sp->EOL();
|
||||
const char *err_str = error.AsCString("<Unknown Error>");
|
||||
const char *err_str = error.AsCString("<unknown error>");
|
||||
LLDB_LOGF(log, "Error evaluating condition: \"%s\"\n", err_str);
|
||||
|
||||
error_sp->PutCString(err_str);
|
||||
error_sp->EOL();
|
||||
error_sp->Flush();
|
||||
// If the condition fails to be parsed or run, we should stop.
|
||||
m_should_stop = true;
|
||||
StreamString strm;
|
||||
strm << "stopped due to an error evaluating condition of "
|
||||
"watchpoint ";
|
||||
wp_sp->GetDescription(&strm, eDescriptionLevelBrief);
|
||||
strm << ": \"" << wp_sp->GetConditionText() << "\"\n";
|
||||
strm << err_str;
|
||||
|
||||
Debugger::ReportError(strm.GetString().str(),
|
||||
exe_ctx.GetTargetRef().GetDebugger().GetID());
|
||||
}
|
||||
}
|
||||
|
||||
|
5
lldb/test/Shell/Breakpoint/invalid-condition.test
Normal file
5
lldb/test/Shell/Breakpoint/invalid-condition.test
Normal file
@ -0,0 +1,5 @@
|
||||
# RUN: %clang_host %p/Inputs/dummy-target.c -o %t.out
|
||||
# RUN: %lldb -b -o "br s -n main -c 'bogus'" -o "run" %t.out 2>&1 | FileCheck %s
|
||||
|
||||
# CHECK: error: stopped due to an error evaluating condition of breakpoint 1.1: "bogus"
|
||||
# CHECK-NEXT: Couldn't parse conditional expression
|
Loading…
x
Reference in New Issue
Block a user