2015-03-24 4 views
1

У меня есть некоторые неясные ошибки в программе OS X относительно загрузки и выгрузки и привязки символов динамически загружаемых библиотек. Первые попытки проанализировать проблему с использованием переменных среды DYLD_PRINT_ * не удались.Отладка dyld под OS X

Я решил аналогичные проблемы в GNU/Linux, установив glibc с символами отладки и соответствующими источниками. Поскольку источники для dyld также доступны, что-то подобное должно быть возможно в OS X.

Как мне сделать, чтобы настроить сеанс отладки и пройти через источники dyld, чтобы понять, что пошло не так с программой? Можно ли запускать приложение с помощью другого ручного инструмента?

ответ

1

Да, и это на самом деле предназначено для этого. Вы можете удалить свой собственный dyld в файловой системе, убедившись, что его команда LC_ID_DYLINKER установлена ​​правильно. Затем, чтобы использовать его, отредактируйте Mach-O, который вы загружаете, чтобы его LC_LOAD_DYLINKER указывал на него.

Имейте в виду, что вы можете просто пройти через dyld в любом случае без этого - используйте lldb и выполните процесс запуска -s, после чего вы можете сделать один шаг прямо через dyld, хотя и в сборке.

Предостережение: не трогайте и не перемещайте/usr/lib/dyld в процессе - но вместо этого удаляйте пользовательский dyld бок о бок к нему. Поскольку практически все требует dyld, перемещение его может быть болью для отмены (и требует загрузки с ramdisk и установки корневой файловой системы в качестве вторичного только для того, чтобы выпустить исправление mv ..)

+0

К сожалению, я больше парень Linux, так как я могу установить отладочную информацию для dyld? Конечно, я могу войти в dyld, но без этой отладочной информации я вижу только инструкции по сборке. – phlipsy