LLDB相当于gdb"directory"命令用于指定源搜索路径?

IOD*_*DEV 19 debugging xcode gdb lldb

寻找ldbb等效的gdb" directory "命令来添加搜索路径以查找缺少的源代码(或者xcode中可能的类似功能)?

提前致谢!

Jas*_*nda 27

target.source-map设置允许您a => b在调试会话中定义一系列路径重映射.它与gdb dir命令不同,后者是按基本名称搜索源文件的目录列表,但您可以解决相同的问题source-map.这是一个示例,我在编译后将源文件移动到隐藏目录:

% cd /tmp
% echo 'int main () { }' > a.c
% clang -g a.c
% mkdir hide
% mv a.c hide/
% xcrun lldb a.out
(lldb) settings set target.source-map /tmp /tmp/hide
(lldb) l -f a.c
   1    int main () { }
(lldb) br se -n main
Breakpoint created: 1: name = 'main', locations = 1
(lldb) r
Process 21674 launched: '/private/tmp/a.out' (x86_64)
Process 21674 stopped
* thread #1: tid = 0x1f03, 0x0000000100000f49 a.out`main + 9 at a.c:1, stop reason = breakpoint 1.1
    #0: 0x0000000100000f49 a.out`main + 9 at a.c:1
-> 1    int main () { }
(lldb) 
Run Code Online (Sandbox Code Playgroud)

有关此设置的更多信息,请键入set list target.source-maplldb.fwiw你可能已经在lldb中发现了这一点,apropos path这将列出名称/描述中包含单词path的所有命令/设置.看到这个名字有一个设置,你会settings list看到设置列表,并发现它已归档target..

  • 最简单的方法:使用`image lookup --verbose --address $ pc`(或`im loo -va $ pc`来获取有关当前正在执行的地方的所有信息.你可以给`image lookup`一个函数你也可以使用python脚本接口来获取当前堆栈框架的文件名,例如`script print lldb.frame.GetCompileUnit().GetFileSpec()`. (5认同)
  • 关于我唯一想念的答案,就是如何找到构建它时使用的源路径.如果我连接到远程计算机,我经常不知道使用了什么路径,我希望能让lldb告诉我它想要找到源文件的路径,所以我可以正确地对它进行源映射. (3认同)
  • 如果lldb找不到我需要的文件(例如,`l foo.cc:1`说'错误:找不到源文件'foo.cc".`)那么什么?gdb的`目录`很容易说*看这里!*,但是在lldb中似乎没有解决方案,除非你知道它在哪里找到文件所以你可以给`target.source提供正确的参数-map`,但它也没有告诉你. (3认同)