Как узнать, какая общая библиотека загружена процессом в OSX?

Я пытаюсь скомпилировать и использовать общую библиотеку C в качестве модуля Python, и я наблюдаю, что в зависимости от того, DYLD_LIBRARY_PATH работает ли мой код, или он вылетает с загадочным сообщением об ошибке.

Jul 24 02:44:44 master 
$ DYLD_LIBRARY_PATH=/opt/local/lib  python -c 'import opengm' 
OKAY

Jul 24 02:45:41 master 
$ DYLD_LIBRARY_PATH= python -c 'import opengm' 
python(86214,0x7fff70ccdcc0) malloc: *** error for object 0x7fff70177500: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap

Я попытался вручную проверить, какие библиотеки являются общими между /usr/lib и /usr/local/lib и /opt/local/lib, но мне не удалось найти причину сбоя. Одним из способов выяснить причину проблемы будет выяснить, какие файлы dylib используются двумя процессами? Я не смог понять это с помощью opensnoop или dtruss, но, возможно, я использовал эти инструменты неправильно.

Как я могу выяснить причину этого сбоя?


person Pushpendre    schedule 24.07.2016    source источник
comment
Я голосую за то, чтобы закрыть этот вопрос как не относящийся к теме, потому что он был опубликован на более подходящем сайте Stack Exchange. В будущем, пожалуйста, публикуйте свой вопрос только на одном сайте Stack Exchange. Дополнительную информацию см. здесь. (apple.stackexchange.com/questions/247227/).   -  person Matt    schedule 26.07.2016
comment
Этот вопрос кажется мне полностью актуальным (предположим, вы хотите отладить конфигурацию компиляции). Однако это дубликат stackoverflow.com/questions/2184775/   -  person Gabriel Devillers    schedule 29.10.2018


Ответы (1)


Вы можете установить DYLD_PRINT_LIBRARIES=YES в среде, чтобы dyld печатать каждую динамическую библиотеку, загружаемую в процесс:

$ DYLD_PRINT_LIBRARIES=YES /usr/bin/true 
dyld: loaded: /usr/bin/true
dyld: loaded: /usr/lib/libSystem.B.dylib
[ ... snip ... ]
dyld: loaded: /usr/lib/libc++.1.dylib
dyld: loaded: /usr/lib/libDiagnosticMessagesClient.dylib
$
person bdash    schedule 26.07.2016