Когда-то я мог сделать следующее в OS X с установленными инструментами командной строки Xcode, как обычно делал в Linux:
vim foo.cpp
#... write some buggy code that segfaults
gcc -g foo.cpp
gdb a.out
(gdb) bt
И я бы увидел красивую символическую трассировку стека. В настоящее время gdb заменен на lldb, а gcc на clang. Если я просто построю с помощью clang++
и сделаю lldb a.out
, у меня не будет символов.
Я попытался запустить dsymutil и получил файл типа Mach-O 64-bit dSYM companion file x86_64
и попытался загрузить его в lldb с target symbols add
, но в трассировке стека все еще нет символов. Но я должен признать, что сдался на полпути к http://lldb.llvm.org/symbolication.html думая, что просто невозможно пройти через все эти обручи и циклы, чтобы получить трассировку стека с переворачиванием из двоичного файла, который я создаю сам.
Итак, мой вопрос сводится к следующему: как проще всего добиться того, что я сделал выше несколько лет назад с помощью gcc и gdb в командной строке современной системы OS X, используя стандартные инструменты Xcode?
Обратите внимание, что нельзя просто установить gcc и gdb с помощью порта или доморощенного и т. д. - мне нужно создать и получить трассировку стека из командной строки с использованием стандартных инструментов Xcode.