Steven è corretto - il comando gdb po
è una scorciatoia per print-object
, che in realtà chiama -debugDescription
(non -description
, come ci si potrebbe aspettare) sull'oggetto fornito come argomento. In molti casi vedrai lo stesso risultato da entrambi i metodi, dal momento che uno chiama l'altro a meno che non venga sovrascritto. (Vedi relativo Nota:. Richiamo this Apple technote per i dettagli noti che nel loro codice di esempio, po $r3
stampe il contenuto di un registro PowerPC, ma è possibile utilizzare qualsiasi oggetto puntatore/riferimento, tra cui registri Intel, etc.)
Inoltre, tenere presente che print-object
funziona solo su oggetti validi che non sono stati deallocati. Non aiuterà affatto se stai inviando un messaggio a un puntatore borked. Dato l'errore che hai citato, sembrerebbe che sia un'istanza di oggetto valida, semplicemente non implementa il metodo che stai cercando di invocare.
È anche possibile in remoto che l'oggetto sia già stato distrutto. This answer dovrebbe aiutare in questo caso.
Edit:
Ci sono altri modi per "esaminare" gli oggetti del debugger.Ho chiesto allo this SO question di formattare i dati Xcode, che è un modo per determinare come appare una classe personalizzata nella colonna Riepilogo del debugger. La documentazione collegata a quella domanda spiega come funziona. Ho trovato l'approccio di sintesi per aiutare molto nel vedere lo stato di un oggetto.
fonte
2009-06-11 03:49:21
"po 1" non manderà in crash il programma - gdb è più intelligente di così. Sarà solo stampare un messaggio di errore. –
Nota anche, per stampare cose non-object (come un int), solo noi p, come 'p 1' – RickDT
dove puoi scriverlo? – chwi