2013-05-23 3 views
0

Я разрабатываю приложение iOS и испытываю крушение. Я не могу отлаживать его, потому что мне нужен последовательный коммуникационный инструмент, который заменяет разъем Apple. мне удалось произвести трассировку стека экземпляра отказа:трассировка стека iOS не точная

0 - 0 Flashtool_iPad      0x0003d8c1 SignalHandler + 152 
    1 - 1 libsystem_c.dylib     0x3c0fee93 _sigtramp + 42 
    2 - 2 libsystem_c.dylib     0x3c12283d __sfvwrite + 352 
    3 - 3 Flashtool_iPad      0x00041811 -[ProgrammingLogic execute_programming_procedure] + 716 
    4 - 4 Flashtool_iPad      0x0003e86f __52-[ProgramViewController programController:forEvent:]_block_invoke + 54 
    5 - 5 libdispatch.dylib     0x3c09811f <redacted> + 10 
    6 - 6 libdispatch.dylib     0x3c09becf <redacted> + 142 
    7 - 7 libdispatch.dylib     0x3c09bdc1 <redacted> + 40 
    8 - 8 libdispatch.dylib     0x3c09c91d <redacted> + 184 
    9 - 9 libdispatch.dylib     0x3c09cac1 <redacted> + 84 
    10 - 10 libsystem_c.dylib     0x3c0cca11 <redacted> + 360 
    11 - 11 libsystem_c.dylib     0x3c0cc8a4 start_wqthread + 8 

но, к сожалению, четвертая линия, указывающая, где фактический отказ произошло (3 - 3 Flashtool_iPad 0x00041811 -[ProgrammingLogic execute_programming_procedure] + 716) указывает на комментарий в объектный код C ... это заявление: 4 - 4 Flashtool_iPad 0x0003e86f __52-[ProgramViewController programController:forEvent:]_block_invoke + 54 действительно появляется в строке 48 источника - не 54! Итак, откуда берется офсет? Заранее спасибо

ответ

3

Смещения не указывают строки, а байты от начала функции в машинный код.

+0

Понятно, что я был введен в заблуждение некоторым источником в Интернете. Я попытался найти свою функцию в коде машины, используя окно памяти, чтобы определить, какая команда вызывает проблему, но Xcode отображает только 0. Не существует никакого традиционного файла .map, указывающего, где все размещено (я предполагаю, что это намеренно!). Можете ли вы посоветовать мне, как найти инструкцию о злоупотреблениях без отладчика? Благодаря! –

+0

@TamirMichael Если вы скомпилируете свой код с помощью флага '-g' (желательно в сочетании с' -O0'), тогда GDB с радостью покажет номер строки при запросе трассировки стека. –

+0

Спасибо. Я не разработчик iOS (как вы можете определить ...). Я прихожу из мира встроенного развития - извините за то, что я прояснил это! Я попробовал это с помощью LLVM GCC 4.2, но он не будет создан. Есть ли способ достичь этого, используя компилятор по умолчанию? –

Смежные вопросы