aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Commands/CommandObjectWatchpoint.cpp
diff options
context:
space:
mode:
authorJason Molenda <jason@molenda.com>2023-05-26 15:31:41 -0700
committerJason Molenda <jason@molenda.com>2023-05-26 15:32:10 -0700
commitf32d24d57742054cd1131dfa5c21f363139bf59b (patch)
tree3514a6f6759af1ee6c1050dc7e02552bc0ca6dcb /lldb/source/Commands/CommandObjectWatchpoint.cpp
parent65855998287e7f3043ffc2a7fe2b640ae87fe703 (diff)
downloadllvm-f32d24d57742054cd1131dfa5c21f363139bf59b.zip
llvm-f32d24d57742054cd1131dfa5c21f363139bf59b.tar.gz
llvm-f32d24d57742054cd1131dfa5c21f363139bf59b.tar.bz2
Revert "[lldb] Disable variable watchpoints when going out of scope"
Reverting https://reviews.llvm.org/D151366 until Ismail has a chance to look at the ubuntu CI test failures and can reland. This reverts commit 7c847ac4bd1bd8a89c7fbb4581328fa8cb0498f1.
Diffstat (limited to 'lldb/source/Commands/CommandObjectWatchpoint.cpp')
-rw-r--r--lldb/source/Commands/CommandObjectWatchpoint.cpp35
1 files changed, 14 insertions, 21 deletions
diff --git a/lldb/source/Commands/CommandObjectWatchpoint.cpp b/lldb/source/Commands/CommandObjectWatchpoint.cpp
index 2841140..14180f9 100644
--- a/lldb/source/Commands/CommandObjectWatchpoint.cpp
+++ b/lldb/source/Commands/CommandObjectWatchpoint.cpp
@@ -9,7 +9,6 @@
#include "CommandObjectWatchpoint.h"
#include "CommandObjectWatchpointCommand.h"
-#include <memory>
#include <vector>
#include "llvm/ADT/StringRef.h"
@@ -21,7 +20,6 @@
#include "lldb/Interpreter/CommandInterpreter.h"
#include "lldb/Interpreter/CommandOptionArgumentTable.h"
#include "lldb/Interpreter/CommandReturnObject.h"
-#include "lldb/Symbol/Function.h"
#include "lldb/Symbol/Variable.h"
#include "lldb/Symbol/VariableList.h"
#include "lldb/Target/StackFrame.h"
@@ -952,32 +950,27 @@ protected:
error.Clear();
WatchpointSP watch_sp =
target->CreateWatchpoint(addr, size, &compiler_type, watch_type, error);
- if (!watch_sp) {
+ if (watch_sp) {
+ watch_sp->SetWatchSpec(command.GetArgumentAtIndex(0));
+ watch_sp->SetWatchVariable(true);
+ if (var_sp && var_sp->GetDeclaration().GetFile()) {
+ StreamString ss;
+ // True to show fullpath for declaration file.
+ var_sp->GetDeclaration().DumpStopContext(&ss, true);
+ watch_sp->SetDeclInfo(std::string(ss.GetString()));
+ }
+ output_stream.Printf("Watchpoint created: ");
+ watch_sp->GetDescription(&output_stream, lldb::eDescriptionLevelFull);
+ output_stream.EOL();
+ result.SetStatus(eReturnStatusSuccessFinishResult);
+ } else {
result.AppendErrorWithFormat(
"Watchpoint creation failed (addr=0x%" PRIx64 ", size=%" PRIu64
", variable expression='%s').\n",
addr, (uint64_t)size, command.GetArgumentAtIndex(0));
if (error.AsCString(nullptr))
result.AppendError(error.AsCString());
- return result.Succeeded();
- }
-
- watch_sp->SetWatchSpec(command.GetArgumentAtIndex(0));
- watch_sp->SetWatchVariable(true);
- if (var_sp) {
- if (var_sp->GetDeclaration().GetFile()) {
- StreamString ss;
- // True to show fullpath for declaration file.
- var_sp->GetDeclaration().DumpStopContext(&ss, true);
- watch_sp->SetDeclInfo(std::string(ss.GetString()));
- }
- if (var_sp->GetScope() == eValueTypeVariableLocal)
- watch_sp->SetupVariableWatchpointDisabler(m_exe_ctx.GetFrameSP());
}
- output_stream.Printf("Watchpoint created: ");
- watch_sp->GetDescription(&output_stream, lldb::eDescriptionLevelFull);
- output_stream.EOL();
- result.SetStatus(eReturnStatusSuccessFinishResult);
return result.Succeeded();
}