#xcode #gdb #osx-lion
#xcode #gdb #osx-lion
Вопрос:
У меня есть программа, которую я создаю с использованием автоматического подсчета ссылок и Lion SDK. Эта программа ведет себя не так, как ожидалось в Snow Leopard (одно представление не будет загружено, и при открытии документа программа зависает.) поэтому я хочу отладить ее там. Но поскольку я не могу скомпилировать ее под Snow Leopard, я понятия не имею, как это сделать.
Итак, как мне получить символы отладки в gdb или я могу отладить эту вещь в Xcode — возможно, есть удаленный способ или что-то в этом роде?
Комментарии:
1. Как насчет использования виртуальной машины?
Ответ №1:
Вы можете выполнять удаленную отладку через gdbserver
:
snow-leopard$ gdbserver :10000 /path/to/exe
lion$ gdb /path/to/exe
(gdb) target remote snow-leopard:10000
Более простой способ — скопировать весь ваш исходный код и каталог сборки в snow-leopard и выполнить локальную отладку с помощью GDB. Даже если вы не собирали там, GDB все равно сможет найти все, что ему нужно.
Ответ №2:
К сожалению, мои исследования показывают, что компилятор «g » на Snow Leopard больше не помещает в связанный модуль символы, которые имеют какое-либо значение для «gdb». Единственными найденными символами являются вымышленные символы, созданные для придания уникальности ВСЕМ символам. Вот краткий пример:
`_Z5DoSVCi', function, 0x151dd
`_Z7SEBTrapv', function, 0x1383c
Те же символы в Tiger были такими:
`_Z5DoSVCi' `DoSVC(int)', FUNCTION, 0x1394c
`_Z7SEBTrapv' `SEBTrap()', FUNCTION, 0xf994
«Подпись» — это то, что «gdb» необходимо для решения таких проблем, как: break emsvc.c: DoSVC
Кроме того, у вас все равно должны быть все «объектные колоды», такие как emsvc.o, потому что Snow Leopard «g «, по-видимому, больше не содержит символов в связанном модуле.
Я перенес скомпилированный модуль «g «, связанный с Tiger (на базе Intel), на Snow Leopard без декодирования объектов, и «gdb» смог отлично с этим справиться, включая установку точек останова. По-видимому, «g » или компоновщик не создают надлежащие модули для «gdb» на Snow Leopard.