2011-10-14 9 views
6

In Xcode 4.x Ho modificato il mio schema di esecuzione su 'Abilita Guardia Malloc' poiché ho un errore malloc non descrittivo che devo rintracciare . Sono consapevole che ho bisogno di correre nel simulatore per usare questa funzione. Tuttavia, quando lo faccio l'applicazione si blocca immediatamente e Xcode mi mostra una traccia dello stack che assomiglia a questo:Xcode 4: impossibile usare Enable Guard Malloc a causa di errore dylib per simulatore iPad

Stack trace in Xcode 4.x

Googled intorno per trovare una soluzione, ma finora nessuna gioia. E 'stato riferito altrove che dovrei essere impostando una variabile di ambiente nel mio schema:

DYLD_INSERT_LIBRARIES -> /usr/lib/libgmalloc.dylib 

Tuttavia questo non risolve il problema. Ho anche provato 'lsystem' come valore, ma non ha funzionato neanche.

Qualcuno può suggerire una soluzione a questo problema di dylib o forse consiglia un'alternativa a "Abilita Guardia Malloc" per identificare dove viene superata un'area di heap malloc'd?

UPDATE

Per chiarire, questo è il tipo di errore ho a che fare con:

malloc: *** error for object 0x2b4b54: incorrect checksum for freed object - object was probably modified after being freed. 
*** set a breakpoint in malloc_error_break to debug 

Ho provato a installare un punto di interruzione simbolo di malloc_error_break, ma si rompe ancora 'in modo casuale 'su problemi di memoria piuttosto che al punto di superare una regione assegnata.

+0

Si prega di includere tracce dello stack come testo; Non sono riuscito a trovare facilmente questa pagina con Google! –

+0

Ho lo stesso problema, anche su un progetto di utilità vuoto nuovo di zecca. Sembra che ci sia qualcosa di rotto nella mia installazione, ma finora non ho avuto fortuna a capirlo. Quando sono passato al simulatore iOS 4.3 il problema è andato via, quindi sembra essere qualcosa di specifico per il simulatore di iOS 5. – russbishop

risposta

2

Per aiutare con la messa a punto è possibile impostare MallocStackLogging, poi, quando la vostra applicazione si blocca, digitare questo nella console gdb:

(gdb) info malloc-history 0x543216 

Sostituire 0x543216 con l'indirizzo dell'oggetto che ha causato l'incidente, e si ottieni una traccia dello stack molto più utile e dovrebbe aiutarti a individuare la linea esatta nel codice che causa il problema.

See this article for more detailed instructions.

+0

Fantastico, grazie chown – KomodoDave

+0

Np, felice di aiutare. – chown