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

时间:2012-10-19 11:48:46

标签: xcode debugging gdb lldb

寻找lldb等效的gdb“目录”命令来添加搜索路径以查找缺少的源代码(或xcode中可能的类似功能)?

提前致谢!

2 个答案:

答案 0 :(得分:26)

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) 

有关此设置的详细信息,请在lldb中键入set list target.source-map。 fwiw你可能通过apropos path在lldb中发现了这个,它将列出名称/描述中包含 path 一词的所有命令/设置。通过此名称看到设置,您需要settings list查看设置列表,并发现它是在target.下提交的。

答案 1 :(得分:0)

lldb无法找到您的源文件的问题可能是由于编译过程有缺陷导致的-我只是花了几个小时试图找到lldb命令来强制设置到源的路径但是最终发现我在-Wall -Werror -Wextra -g中执行了实际的编译并使用相同的标志集(Makefile)进行了链接...因此,尽管有错误(或将警告视为错误),但编译器仍能工作在没有警告和错误消息的情况下)实际存在。修复它们,解决了固定的lldb工作流程。也许开发人员应该考虑添加一些警告(对于像我这样的新手),以防程序无法找到源(它们位于src文件夹中的同一目录中)。