Что означает полученный программой сигнал: SIGKILL при профилировании приложения, работающего на устройстве, и использовании профилировщика xcode для обнаружения утечек

Что означает полученный программой сигнал: SIGKILL при профилировании приложения, работающего на устройстве, и использовании профилировщика xcode для обнаружения утечек?

Мое приложение сломалось на линии, вызывающей drawInRect в экземпляре UIImage

вершина стека вызовов — CGGStateCreateCopy


person acheo    schedule 31.01.2010    source источник


Ответы (1)


SIGKILL – это сигнал, общий для всех систем POSIX, например, в ОС iphone, который выдал сигнал вашему приложению. SIGKILL нельзя перехватить программно. Обычно для уничтожения процесса необходимо ввести это в командной строке, помните, что вы можете сделать это с процессами, которыми вы владеете, так как вы вошли в оболочку:

ps -elf | grep myprocess    

Затем, чтобы убить «мой процесс», используя числовой идентификатор процесса на основе столбца PID из предыдущего выходного образца.

kill -1 9149

В зависимости от «myprocess» и того, как ОС обрабатывает это, вы получите аналогичный вывод, как показано ниже:

myprocess: received SIGKILL.
process terminated

В зависимости от того, что произошло, вероятно, когда ваш профилировщик запустил код, он каким-то образом убил ваше приложение, намеренно или непреднамеренно, судя по вашему вопросу:

My app broke on a line calling drawInRect on a UIImage instance top of call stack is CGGStateCreateCopy

Вполне вероятно, что drawInRect был предоставлен недопустимый параметр... вам необходимо проверить параметры, используемые для этой функции, и проверить их. Это может быть той самой причиной, по которой ОС убила ваше приложение...

Надеюсь, это поможет. С уважением, Том.

person t0mm13b    schedule 31.01.2010
comment
Спасибо, Том, я проводил тест на замачивание и думаю, что в нем есть утечка, из-за которой ОС убивает мое приложение. - person acheo; 01.02.2010