If it's on Mac OS X 10.11, I saw this the other day. e.g. sh-3.2$ cat a.c #include <stdio.h> #include <stdlib.h> int main() { printf("%s\n", getenv("DYLD_LIBRARY_PATH")); } sh-3.2$ clang a.c
sh-3.2$ lldb -x a.out (lldb) target create "a.out" Current executable set to 'a.out' (x86_64). (lldb) pro lau -v DYLD_LIBRARY_PATH=/tmp Process 66509 launched: '/private/tmp/a.out' (x86_64) /tmp Process 66509 exited with status = 0 (0x00000000) (lldb) q sh-3.2$ DYLD_LIBRARY_PATH=/tmp lldb -x -- a.out (lldb) target create "a.out" Current executable set to 'a.out' (x86_64). (lldb) r Process 66776 launched: '/private/tmp/a.out' (x86_64) (null) Process 66776 exited with status = 0 (0x00000000) (lldb) q The DYLD_LIBRARY_PATH isn't being passed into lldb, it seems. If I attach to that lldb with another lldb, (lldb) pro att -n lldb Executable module set to "/Applications/Xcode.app/Contents/Developer/usr/bin/lldb". Architecture set to: x86_64-apple-macosx. (lldb) p (char*)getenv("DYLD_LIBRARY_PATH") (char *) $0 = 0x0000000000000000 (lldb) ^D yep, it's not being passed through. > On Oct 26, 2015, at 10:02 AM, Greg Clayton via lldb-dev > <lldb-dev@lists.llvm.org> wrote: > > I am surprised that this doesn't work as we make an effort to pass the > current environment down to any processes that you spawn by default (at least > on MacOSX we do), but the solution is easy: use the --environment variable > with the "process launch" command: > > (lldb) process launch --environment DYLD_LIBRARY_PATH=<mydylibpath> -- arg1 > arg2 arg3 > > or using the short -v option: > > (lldb) process launch -v DYLD_LIBRARY_PATH=<mydylibpath> -- arg1 arg2 arg3 > > r is an alias to "process launch --". Note that "process launch" can have > arguments and the arguments you want to pass to your program might have > options, so you can terminate your "process launch" arguments with "--" so > that you can add your program arguments: > > (lldb) process launch --environment DYLD_LIBRARY_PATH=<mydylibpath> -- > --program-option=123 --environment BAR=BAZ > > Note that I actually used an option "--environment BAR=BAZ" that I am passing > to the program to be debugged... > > It is better to use --environment because then your current LLDB or any > processes that LLDB spawns won't have that environment variable set. Hope > this helps. > > Greg Clayton > > >> On Oct 23, 2015, at 1:11 AM, Haakon Sporsheim via lldb-dev >> <lldb-dev@lists.llvm.org> wrote: >> >> Hi. >> >> I'm fairly new to lldb, been using gdb most of my life. >> >> I'm currently hacking on a small library which I'm building without >> installing. Usually I'm running tests for the library also without >> installing, but rather using DYLD_LIBRARY_PATH in this manner: >> DYLD_LIBRARY_PATH=<mydylibpath> mytestbinary >> >> On linux using gdb when I want to debug an issue I usually just stick >> gdb in there, which I can't do with lldb on darwin it seems: >> DYLD_LIBRARY_PATH=<mydylibpath> lldb mytestbinary >> >> lldb gives me this result: >> (lldb) target create "<mytestbinary>" >> Current executable set to '<mytestbinary>' (x86_64). >> (lldb) r >> Process 4904 launched: '<mytestbinary>' (x86_64) >> dyld: Library not loaded: /usr/local/lib/<mydylib> >> Referenced from: <mytestbinary> >> Reason: image not found >> Process 4904 stopped >> * thread #1: tid = 0xfe39, 0x00007fff5fc01075 dyld`dyld_fatal_error + >> 1, stop reason = EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0) >> frame #0: 0x00007fff5fc01075 dyld`dyld_fatal_error + 1 >> dyld`dyld_fatal_error: >> -> 0x7fff5fc01075 <+1>: nop >> >> dyld`dyldbootstrap::start: >> 0x7fff5fc01076 <+0>: pushq %rbp >> 0x7fff5fc01077 <+1>: movq %rsp, %rbp >> 0x7fff5fc0107a <+4>: pushq %r15 >> (lldb) >> >> so it's not picking up the dylib from DYLD_LIBRARY_PATH. >> >> I guess my question is whether this is a bug or not? Am I doing >> anything wrong, or should I not use DYLD_LIBRARY_PATH this way? Any >> suggestions and/or education would be appreciated! >> To work around this issue I've used 'install_name_tool -change old new >> <mytestbinary>' which obviously works. >> >> Thanks, best regards >> Haakon Sporsheim >> _______________________________________________ >> lldb-dev mailing list >> lldb-dev@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev > > _______________________________________________ > lldb-dev mailing list > lldb-dev@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev _______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev