[Lldb-commits] [PATCH] D133908: Add auto deduce source map setting

jeffrey tan via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Wed Sep 14 17:25:01 PDT 2022


yinghuitan created this revision.
Herald added a project: All.
yinghuitan requested review of this revision.
Herald added a project: LLDB.
Herald added a subscriber: lldb-commits.

  This patch adds a new "target.auto-deduce-source-map" setting.
  
  If enabled, this setting may auto deduce a source map entry based on requested
  breakpoint path and the original path stored in debug info for resolved
  breakpoint.
  
  As an example, if debug info contains "./a/b/c/main.cpp", user sets a source
  breakpoint at "/root/repo/x/y/z/a/b/c/main.cpp". The breakpoint will resolve
  correctly now with Greg's patch https://reviews.llvm.org/D130401. However, the
  resolved breakpoint will use "./a/b/c/main.cpp" to locate source file during
  stop event which would fail most of the time.
  
  With the new "target.auto-deduce-source-map" setting enabled, a auto deduced
  source map entry "." => "/root/repo/x/y/z" will be added. This new mapping will
  help lldb to map resolved breakpoint path "./a/b/c/main.cpp" back to
  "/root/repo/x/y/z/a/b/c/main.cpp" and locate it on disk.
  
  If an existing source map entry is used the patch also concatenates the auto
  deduced entry with any stripped reverse mapping prefix (see example below).
  
  As a second example, debug info contains "./a/b/c/main.cpp" and user sets
  breakpoint at "/root/repo/x/y/z/a/b/c/main.cpp". Let's say there is an existing
  source map entry "." => "/root/repo"; this mapping would strip the prefix out of
  "/root/repo/x/y/z/a/b/c/main.cpp" and use "x/y/z/a/b/c/main.cpp" to resolve
  breakpoint. "target.auto-deduce-source-map" setting would auto deduce a new
  potential mapping of "." => "x/y/z", then it detects that there is a stripped
  prefix from reverse mapping and concatenates it as the new mapping:
   "." => "/root/repo/x/y/z" which would correct map "./a/b/c/main.cpp" path to
  new path in disk.
  
  This patches depends on https://reviews.llvm.org/D130401 to use new added
  SBTarget::GetSourceMap() API for testing.
  
  Differential Revision: https://reviews.llvm.org/D133042


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D133908

Files:
  lldb/include/lldb/Breakpoint/BreakpointResolverFileLine.h
  lldb/include/lldb/Target/PathMappingList.h
  lldb/include/lldb/Target/Target.h
  lldb/source/Breakpoint/BreakpointResolverFileLine.cpp
  lldb/source/Target/PathMappingList.cpp
  lldb/source/Target/Target.cpp
  lldb/source/Target/TargetProperties.td
  lldb/test/API/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py
  lldb/unittests/Target/PathMappingListTest.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D133908.460269.patch
Type: text/x-patch
Size: 17496 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20220915/f4c4d018/attachment-0001.bin>


More information about the lldb-commits mailing list