Присоединение источников к двоичному dylib в Xcode

У меня есть фреймворк с dylib в моем приложении iOS, который был скомпилирован на другой машине. Я проверил источники на своей машине и попробовал инструктировать lldb для сопоставления пути исходного кода, используя:

settings set target.source-map /source/code/path/in/dylib/prefix /source/code/path/on/my/machine/prefix

Безрезультатно, все еще видя сборку.

Примечание # 1: dylib был скомпилирован из кода С++ в той же версии Xcode.

Примечание # 2: Я использую nm -pa /path/to/dylib, чтобы определить, включены ли пути к файлам в отладочную информацию, и они, по крайней мере, lldb не играют по какой-либо причине.

Спасибо

UPDATE

Я следил за Jim Ingham ниже и создал script, который автоматизирует это, script доступен как ссылка gist в этой статье. Я писал: https://medium.com/@maxraskin/background-1b4b6a9c65be

Ответ 1

Чтобы отлаживать код, построенный на одном компьютере, но отлаживаемый на другом, вам нужно создать dSYM и иметь доступное на компьютере, на котором вы отлаживаете. Если вы этого не сделали, ничего не будет работать.

Следующее, что нужно проверить, это то, что lldb собирает dSYM. На этой странице есть описание того, как этот процесс работает:

http://lldb.llvm.org/symbols.html

но если все остальное не удается, вы можете использовать команду add-dsym, чтобы добавить ее вручную.

Если это еще не устранило вашу проблему, выберите символ в своем dylib и выполните:

(lldb) image lookup -vn <SYMBOL_NAME>

или поочередно найти какой-то адрес в загруженном dylib и сделать:

(lldb) image lookup -va <ADDRESS>

Если lldb обнаружил, что dSYM и информация об отладке верны, одна из строк вывода должна быть записью для "Компиляционного блока". Это то, что сообщает информация об отладке, путь к исходному файлу. Соответствующая база этого пути - это то, что вы должны использовать в target.source-map. Если вы не видите эту запись, тогда отладочная информация для этого модуля компиляции каким-то образом теряется.

Если все эти вещи выглядят хорошо, и lldb все еще не видит исходные файлы, тогда вы, вероятно, нажмете на ошибку, и в этом случае, пожалуйста, напишите ошибку с помощью http://bugreporter.apple.com.