diff options
author | Jonas Devlieghere <jonas@devlieghere.com> | 2022-03-16 22:38:39 -0700 |
---|---|---|
committer | Jonas Devlieghere <jonas@devlieghere.com> | 2022-03-16 22:54:02 -0700 |
commit | d10c0c7b187d6a5d7a24544d70998f8d348b4dfd (patch) | |
tree | 3b6d7103e5855b020119822eda35b6463fbacfcc /lldb/source | |
parent | 77eee5795e2cf753e4400fb089d01018417c4ee0 (diff) | |
download | llvm-d10c0c7b187d6a5d7a24544d70998f8d348b4dfd.zip llvm-d10c0c7b187d6a5d7a24544d70998f8d348b4dfd.tar.gz llvm-d10c0c7b187d6a5d7a24544d70998f8d348b4dfd.tar.bz2 |
[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.
Diffstat (limited to 'lldb/source')
-rw-r--r-- | lldb/source/Target/StopInfo.cpp | 39 |
1 files changed, 18 insertions, 21 deletions
diff --git a/lldb/source/Target/StopInfo.cpp b/lldb/source/Target/StopInfo.cpp index f6cf3e5..08c50ea 100644 --- a/lldb/source/Target/StopInfo.cpp +++ b/lldb/source/Target/StopInfo.cpp @@ -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()); } } |