Pergunta

Estou a depuração de um programa que foi escrito para o iPhone OS 2.2.1 e tem que ser um pouco reescrito para 3.0. Ter uma lista de todas as chamadas Objective-C mensagens que estão sendo feitas, incluindo "por trás das cenas" chamadas, seria muito útil.

Eu encontrei NSObjCMessageLoggingEnabled em um site, mas não tenho certeza se ele funciona com o iPhone. Alguém sabe se / como isso funciona, e se não, se não houver outra maneira que eu poderia conseguir a mesma coisa?

Obrigado!

Foi útil?

Solução

Eu finalmente descobri a um relativamente simples (embora não em todos elegante) maneira de fazer isso.

Durante a depuração no iPhone, eu configurar um ponto de interrupção para objc_msgSend. Eu, então, digitado neste script GDB simples:

while 1
printf "[%s %s]", (char *)object_getClassName($r0), (char *) $r1 
c
end

Isso mostra cada chamada de método. Não é perfeito, porque ele imprime o nome da classe do objeto a mensagem está sendo enviada para, e não o objeto em si, mas funciona para o que eu precisava.

Note que este só irá funcionar no próprio iPhone.

Outras dicas

NSObjCMessageLoggingEnabled (e sua instrumentObjcMessageSends(BOOL) twin) estão disponíveis no simulador, mas não no dispositivo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top