Steven es correcto - el comando gdb po
es un atajo para print-object
, que en realidad llama -debugDescription
(no -description
, como era de esperar) en el objeto proporcionado como argumento. En muchos casos, verá el mismo resultado en ambos métodos, ya que uno llama al otro a menos que se anule. (Véase la relacionada Nota:. llamada en this Apple technote para obtener más información Tenga en cuenta que en su ejemplo de código, po $r3
imprime el contenido de un registro PowerPC, pero se puede utilizar cualquier puntero de objeto/referencia, incluyendo registros de Intel, etc.)
Además, tenga en cuenta que print-object
solo funcionará en objetos válidos que no se hayan desasignado. No servirá de nada si estás enviando un mensaje a un puntero borked. Sin embargo, dado el error que usted citó, parecería que es una instancia de objeto válida, simplemente no implementa el método que está tratando de invocar.
También es remotamente posible que el objeto ya haya sido destruido. This answer debería ayudar en ese caso.
Editar:
Hay otras maneras de "examinar" los objetos en el depurador.Le pregunté al this SO question sobre los formateadores de datos Xcode, que es una manera de determinar cómo aparece una clase personalizada en la columna Resumen del depurador. La documentación vinculada a esa pregunta explica cómo funciona. Encontré el enfoque de resumen para ayudar mucho a ver el estado de un objeto.
"po 1" no bloqueará su programa - gdb es más inteligente que eso. Simplemente imprimirá un mensaje de error. –
También tenga en cuenta que para imprimir elementos que no sean objetos (como un int), solo nosotros p, como 'p 1' – RickDT
¿dónde puede escribir eso? – chwi