Ich arbeite an einem Patch für FFmpeg und muss meinen Code debuggen. Ich lade eine externe Bibliothek, und um verschiedene Bibliotheksversionen zu testen, habe ich sie in verschiedenen Ordnern. Um auszuwählen, welchen ich verwenden möchte, habe ich DYLD_LIBRARY_PATH=/path/to/lib/dir ./ffmpeg
verwendet und das funktioniert in Ordnung. Aber wenn ich es innerhalb lldb
versuche, stürzt es ab und sagt dyld: Library not loaded
und Reason: image not found
. Dies funktioniert früher als Xcode 7.1, aber ich habe gerade erst ein Upgrade durchgeführt und es funktioniert nicht mehr.Warum leitet lldb meine Umgebungsvariable nicht weiter?
Hier ist meine MVCE:
#include <stdio.h>
#include <stdlib.h>
int main() {
char* str = getenv("DYLD_LIBRARY_PATH");
if (str) puts(str);
else puts("(null)");
return 0;
}
Das Ausführen dieses Programms wie folgt erzeugt die Ausgabe:
$ ./a.out
(null)
$ DYLD_LIBRARY_PATH=/tmp ./a.out
/tmp
das in Ordnung aussieht. Aber wenn ich versuche zu verwenden LLDB es fehlschlägt:
$ DYLD_LIBRARY_PATH=/tmp lldb ./a.out
(lldb) target create "./a.out"
Current executable set to './a.out' (x86_64).
(lldb) run
Process 54255 launched: './a.out' (x86_64)
(null)
Process 54255 exited with status = 0 (0x00000000)
Der Versuch, die Umgebungsvariable zu setzen innen LLDB funktioniert:
lldb ./a.out
(lldb) target create "./a.out"
Current executable set to './a.out' (x86_64).
(lldb) env DYLD_LIBRARY_PATH=/tmp
(lldb) run
Process 54331 launched: './a.out' (x86_64)
/tmp
Process 54331 exited with status = 0 (0x00000000)
LLDB Version (es ist von Xcode 7.1):
$ lldb --version
lldb-340.4.110
Frage: Ist dies ein beabsichtigtes neues "Feature", oder ist das ein neuer Fehler in lldb (oder bin ich total verrückt und das hat nie funktioniert)? Ich bin ziemlich positiv lldb verwendet, um die Umgebungsvariable DYLD_LIBRARY_PATH
weiterzuleiten, also wie kommt es, dass es nicht mehr ist?
Bearbeiten: Dies ist unter OS X 10.11.1.
Bestätigt [hier] (https://www.mail-archive.com/[email protected]/msg00779.html) von Jason Molenda (der einer der lldb-Entwickler zu sein scheint). –