Есть ли в MacOS/X механизм отдельной отладочной информации, аналогичный файлам PDB в Windows?

При разработке и развертывании приложения под Windows у разработчика есть возможность локально хранить файлы .pdb, которые создаются компилятором как часть каждой сборки, и вызывать его программу MiniDumpWriteDump в ответ на сбой для создания файла .dmp, который позже может отправить обратно разработчику. Затем разработчик может сопоставить полученный .dmp с соответствующим файлом .pdb и исполняемым файлом и использовать его для посмертной отладки сбоя (т. е. просмотреть трассировку стека и т. д.).

Его сложно настроить и управлять, но преимущество в том, что он позволяет разработчику удалить всю отладочную информацию из своей выпущенной программы и при этом иметь возможность отлаживать сбои, возникающие в полевых условиях. Это позволяет значительно уменьшить размер установки программы и, возможно, делает программу менее восприимчивой к реинжинирингу.

Мой вопрос: есть ли в MacOS/X какой-либо механизм, подобный .pdb? Единственные варианты, которые я видел для MacOS/X, — это либо «удалить» ваш исполняемый файл (в результате получается небольшой исполняемый файл, но очень мало отладочной информации, если он когда-либо выйдет из строя), либо нет (в результате исполняемый файл, который обеспечивает очень полезный отчет о сбоях при сбое, но он намного больше, чем должен быть в противном случае).


person Jeremy Friesner    schedule 26.01.2017    source источник


Ответы (1)


Я думаю, что dsymutil это то, что вы ищете. Он создает папку .dSYM, названную в честь двоичного файла, на котором он работает, и содержит отладочную информацию.

Честно говоря, я никогда им не пользовался. И я не уверен, какая трассировка стека вам нужна с удаленного компьютера.

person Florian Zwoch    schedule 26.01.2017
comment
Трассировка стека, показывающая, какие функции вызываются и где в стеке потока, в котором произошел сбой (и в идеале также точную строку кода, вызвавшую сбой). - person Jeremy Friesner; 26.01.2017
comment
Соответствующий поток находится здесь: stackoverflow.com/questions/10044697/ - person Jeremy Friesner; 09.02.2017