aboutsummaryrefslogtreecommitdiff
path: root/lldb/source
diff options
context:
space:
mode:
authorJonas Devlieghere <jonas@devlieghere.com>2022-03-16 22:38:39 -0700
committerJonas Devlieghere <jonas@devlieghere.com>2022-03-16 22:54:02 -0700
commitd10c0c7b187d6a5d7a24544d70998f8d348b4dfd (patch)
tree3b6d7103e5855b020119822eda35b6463fbacfcc /lldb/source
parent77eee5795e2cf753e4400fb089d01018417c4ee0 (diff)
downloadllvm-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.cpp39
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());
}
}