Puoi impostare un punto di interruzione condizionale in Xcode impostando normalmente il punto di interruzione, quindi fai clic tenendo premuto il tasto Ctrl su di esso e seleziona Modifica punto di interruzione (scegli Esegui -> Mostra -> Punti di interruzione).
Nella voce del punto di interruzione, è presente una colonna Condizione.
Ora, ci sono diversi problemi da tenere a mente per la condizione. In primo luogo, gdb non comprende la sintassi dei punti, quindi invece di myObj.name, devi usare [myObj name] (a meno che name non sia un ivar).
Successivamente, come con la maggior parte delle espressioni in gdb, è necessario indicare il tipo di risultato restituito, ovvero "BOOL". Quindi imposta una condizione come:
(BOOL)[[myObj name] isEqualToString:@"Bar"]
Spesso in realtà è più semplice farlo nel codice aggiungendo temporaneamente codice come:
if ( [myObj.name isEqualToString:@"Bar"] ) {
NSLog( @"here" );
}
e quindi impostare il punto di interruzione su NSLog. Quindi la tua condizione può essere arbitrariamente complessa senza doversi preoccupare di ciò che gdb può e non può analizzare.