Я работаю над патчем для FFmpeg и должен отлаживать свой код. Я загружаю внешнюю библиотеку, и для того, чтобы протестировать разные версии библиотеки, я имею их в разных папках. Чтобы выбрать тот, который я хочу использовать, я использовал DYLD_LIBRARY_PATH=/path/to/lib/dir ./ffmpeg
, и это работает нормально. Но когда я пробую его в пределах lldb
, он падает с dyld: Library not loaded
и Reason: image not found
. Это использовалось для работы с pre-Xcode 7.1, но я недавно обновился и перестала работать.Почему lldb больше не перенаправляет переменную окружения?
Вот мой MVCE:
#include <stdio.h>
#include <stdlib.h>
int main() {
char* str = getenv("DYLD_LIBRARY_PATH");
if (str) puts(str);
else puts("(null)");
return 0;
}
Запуск этой программы следующим образом выводит:
$ ./a.out
(null)
$ DYLD_LIBRARY_PATH=/tmp ./a.out
/tmp
Это выглядит хорошо. Но когда я пытаюсь использовать lldb он не:
$ 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)
Попытка установить переменную окружения внутри lldb работы:
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 версия (это из Xcode 7.1):
$ lldb --version
lldb-340.4.110
Вопрос: Является ли это новой «особенностью», или это новая ошибка в lldb (или я абсолютно сумасшедший, и это никогда не работало)? Я вполне уверен, что lldb используется для перенаправления переменной окружения DYLD_LIBRARY_PATH
, так как это уже не так?
Редактировать: Это на OS X 10.11.1.
Подтверждено [здесь] (https://www.mail-archive.com/[email protected]/msg00779.html) от Jason Molenda (который, кажется, является одним из разработчиков lldb). –