ли эти две команды на Linux:В чем разница между objcopy и dsymutil?
objcopy --only-keep-debug foo foo.dbg
objcopy --add-gnu-debuglink=foo.dbg foo
эквивалент ниже на макинтош
dsymutil <binary> -o <binary>.dSYM
Эквивалент в том смысле, что
- Это создает автономную отладку файла информации.
- Создает ссылку между исполняемым и отладочным информационным файлом.
Тогда для отпарной
это команды на Linux:
objcopy --strip-debug foo
ИЛИ
strip -g <binary>
эквивалентна ниже на макинтош
strip -S <binary>
1. Как происходит соединение в Mac OSX между dSYM и двоичным? 2. Означает ли это, что файлы .o также должны быть переданы dsymutil? –
Нет, dsymutil считывает «отладочную карту» из исполняемого файла, в котором указано расположение всех файлов .o. Это означает, что вы должны иметь файлы .o в исходном местоположении и не разделять бинарный файл, на котором вы хотите запустить dsymutil. Это кажется приемлемым компромиссом для удобства, когда вам не нужно выяснять, какие файлы .o для запуска dsymutil ... –
Думаю, я просто ответил # 2. Что касается №1. Короче говоря, «запустив dsymutil на двоичном». Поскольку двоичный файл знает, где находятся файлы .o (с карты отладки), вам нужно только предоставить dsymutil путь к двоичному файлу, он сделает все остальное. Если вам нужна подробная информация о том, как работает dsymutil, обратите внимание, что в Xcode 7.0 мы переключились с внутренней версии dsymutil на один, реализованный в исходной базе llvm. Поэтому вы можете прочитать источники в llvm/tools/dsymutil, чтобы получить полную историю. –