[Lldb-commits] [PATCH] D154029: [lldb-vscode] Adding support for column break points.
John Harrison via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Wed Jun 28 17:24:33 PDT 2023
ashgti created this revision.
Herald added a project: All.
ashgti requested review of this revision.
Herald added a project: LLDB.
Herald added a subscriber: lldb-commits.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D154029
Files:
lldb/tools/lldb-vscode/JSONUtils.cpp
lldb/tools/lldb-vscode/JSONUtils.h
lldb/tools/lldb-vscode/SourceBreakpoint.cpp
Index: lldb/tools/lldb-vscode/SourceBreakpoint.cpp
===================================================================
--- lldb/tools/lldb-vscode/SourceBreakpoint.cpp
+++ lldb/tools/lldb-vscode/SourceBreakpoint.cpp
@@ -16,7 +16,9 @@
column(GetUnsigned(obj, "column", 0)) {}
void SourceBreakpoint::SetBreakpoint(const llvm::StringRef source_path) {
- bp = g_vsc.target.BreakpointCreateByLocation(source_path.str().c_str(), line);
+ lldb::SBFileSpecList module_list;
+ bp = g_vsc.target.BreakpointCreateByLocation(source_path.str().c_str(), line,
+ column, 0, module_list);
// See comments in BreakpointBase::GetBreakpointLabel() for details of why
// we add a label to our breakpoints.
bp.AddName(GetBreakpointLabel());
Index: lldb/tools/lldb-vscode/JSONUtils.h
===================================================================
--- lldb/tools/lldb-vscode/JSONUtils.h
+++ lldb/tools/lldb-vscode/JSONUtils.h
@@ -232,13 +232,21 @@
/// provided by the setBreakpoints request are returned to the IDE as a
/// fallback.
///
+/// \param[in] request_column
+/// An optional column to use when creating the resulting "Breakpoint" object.
+/// It is used if the breakpoint has no valid locations.
+/// It is useful to ensure the same column
+/// provided by the setBreakpoints request are returned to the IDE as a
+/// fallback.
+///
/// \return
/// A "Breakpoint" JSON object with that follows the formal JSON
/// definition outlined by Microsoft.
llvm::json::Value
CreateBreakpoint(lldb::SBBreakpoint &bp,
std::optional<llvm::StringRef> request_path = std::nullopt,
- std::optional<uint32_t> request_line = std::nullopt);
+ std::optional<uint32_t> request_line = std::nullopt,
+ std::optional<uint32_t> request_column = std::nullopt);
/// Converts a LLDB module to a VS Code DAP module for use in "modules" events.
///
Index: lldb/tools/lldb-vscode/JSONUtils.cpp
===================================================================
--- lldb/tools/lldb-vscode/JSONUtils.cpp
+++ lldb/tools/lldb-vscode/JSONUtils.cpp
@@ -308,7 +308,8 @@
// }
llvm::json::Value CreateBreakpoint(lldb::SBBreakpoint &bp,
std::optional<llvm::StringRef> request_path,
- std::optional<uint32_t> request_line) {
+ std::optional<uint32_t> request_line,
+ std::optional<uint32_t> request_column) {
// Each breakpoint location is treated as a separate breakpoint for VS code.
// They don't have the notion of a single breakpoint with multiple locations.
llvm::json::Object object;
@@ -345,11 +346,16 @@
const auto line = line_entry.GetLine();
if (line != UINT32_MAX)
object.try_emplace("line", line);
+ const auto column = line_entry.GetColumn();
+ if (column != 0)
+ object.try_emplace("column", column);
object.try_emplace("source", CreateSource(line_entry));
}
// We try to add request_line as a fallback
if (request_line)
object.try_emplace("line", *request_line);
+ if (request_column)
+ object.try_emplace("column", *request_column);
return llvm::json::Value(std::move(object));
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D154029.535577.patch
Type: text/x-patch
Size: 3337 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20230629/6a8c2130/attachment-0001.bin>
More information about the lldb-commits
mailing list