Xcode удаляет символы отладки для зависимостей (OSX) и помещает их в .dSYM?

В моем приложении OSX есть несколько библиотек зависимостей, которые были скомпилированы с -g флаг clang для сохранения отладочных символов исходного уровня.
Настройки проекта XCode имеют Strip Debug Symbols During Copy установлен в YES а также Debug Information Format установлен в DWARF with dSYM,

Однако всякий раз, когда я читаю символический отчет о сбое, фреймы обратной трассировки на уровне приложения обозначаются правильно, а фреймы на уровне библиотеки — это просто адреса памяти. Это заставляет меня думать, что Xcode не помещал данные символов зависимостей в пакет dSYM. Как можно это исправить?

1

Решение

Я понял проблему.
Надо использовать dsymutil извлечь пакет dSYM из произвольного двоичного файла, скомпилированного с символами исходного уровня (-g флаг для clang на OSX).

Я написал этот скрипт, чтобы автоматически извлекать dSYM из моих зависимостей, помещать их в архив и добавлять в Post-build action из Archive этап в конфигурации проекта:

log = "/ tmp / $ {FULL_PRODUCT_NAME} -release.log" echo "********* Добавление зависимостей dSYM в архив ..."> $ log
функция copyLibDsym ()
{
локальная библиотека = $ 1
локальный libfile = $ (базовое имя $ lib)
local libname = "$ {libfile%. *}" echo ", извлекающий dSYM из $ {libname} в $ {ARCHIVE_DSYMS_PATH} / $ {libname} .dSYM" >> $ log
dsymutil "$ lib" -o "$ {ARCHIVE_DSYMS_PATH} / $ {libname} .dSYM"}

ndnrtclib = "$ {NDNRTC_LIB_PATH} /libndnrtc.dylib" ndncpplib = "$ {NDNCPP_LIB_PATH} /libndn-cpp.dylib" discoverylib = "$ {NDNCHAT_LIB_PATH} /libentity-discovery.dylib" chatlib = "$ {NDNCHAT_LIB_PATH} / libchrono- chat2013.dylib»
copyLibDsym $ ndnrtclib
copyLibDsym $ ndncpplib
copyLibDsym $ discoverylib
copyLibDsym $ chatlib

В папке архива dSYMs теперь есть несколько пакетов .dSYM, которые можно использовать для правильной символизации отчетов о сбоях.

0

Другие решения


По вопросам рекламы [email protected]