diff options
author | Jason Molenda <jason@molenda.com> | 2023-05-26 15:31:41 -0700 |
---|---|---|
committer | Jason Molenda <jason@molenda.com> | 2023-05-26 15:32:10 -0700 |
commit | f32d24d57742054cd1131dfa5c21f363139bf59b (patch) | |
tree | 3514a6f6759af1ee6c1050dc7e02552bc0ca6dcb /lldb/source/Commands/CommandObjectWatchpoint.cpp | |
parent | 65855998287e7f3043ffc2a7fe2b640ae87fe703 (diff) | |
download | llvm-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.cpp | 35 |
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(); } |