Reputation: 1735
Looking for the lldb equivalent of the gdb "directory" command to add search paths for finding missing source code (or possibly similar functionality within xcode)?
Thanks in advance!
Upvotes: 23
Views: 27371
Reputation: 11
The problem with lldb
not being able to find your source files may be caused by flawed compilation process - i just spent several hours in attempt to find a lldb
command to set path to sources by force but ended up discovering that i performed both actual compiling and linking with identical set of flags (-Wall -Werror -Wextra -g
) in my Makefile
... So compiler worked without warning and error messages despite errors (or warning treated as errors) actually existed. Fixing them fixed lldb
workflow. Maybe developers should consider adding some warning (for newbies like me) in case program wasn't able to find sources (they were located in the very same directory in src
folder).
Upvotes: -3
Reputation: 15395
The target.source-map
setting allows you define a series of a => b
path remappings in the debug session. It's not identical to the gdb dir command, which is a list of directories to search for source files by base name, but you can solve the same problems with source-map
. Here's an example where I move a source file to a hidden directory after compiling:
% 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)
For more information about this setting, type set list target.source-map
in lldb. fwiw you might have discovered this in lldb by doing apropos path
which will list all commands/settings that have the word path in the name/description. Seeing that there was a setting by this name, you'd do settings list
to see the list of settings and find out that it's filed under target.
.
Upvotes: 36