2012-03-06 16 views

risposta

42

Da documentation.

  • Abilita Scribble. Riempi la memoria allocata con 0xAA e la memoria deallocata con 0x55.
  • Abilita bordi di guardia. Aggiungi le pagine di guardia prima e dopo grandi allocazioni.
  • Abilita guardia Malloc. Usa libgmalloc per catturare problemi di memoria comuni come overrun del buffer e use-after-free.

Scribble renderà piuttosto ovvio che si sta utilizzando un blocco di memoria dopo che è stato liberato sovrascrivendo i dati che prima erano nel blocco di memoria gratuitamente.
I bordi di guardia e la guardia Malloc ti aiuteranno a trovare sovraccarichi di memoria e (in una certa misura) utilizzare dopo la lettura proteggendo i blocchi di memoria per far sì che il tuo programma si arresti più chiaramente se maltratta la memoria.

+0

Lo chiedo perché a volte ho crash in le mie app che sto cercando di eseguire il debug e Xcode 4 punta a "int retVal = UIApplicationMain (argc, argv, nil, @" AppDelegate "); " come origine dell'errore. Quindi stavo cercando di trovare dei modi per farlo puntare alla corretta linea di errore. – SpaceDog

+0

@DigitalRobot Anche se non forniscono il 100% di "protezione", se si tratta di un errore di memoria, qualsiasi opzione sopra riportata se abilitata rende più probabile che il programma si chiuda più vicino a dove si trova l'errore effettivo. –

+0

grazie. Questo è quello che stavo cercando !!! – SpaceDog

3

Il collegamento "documentazione" sopra è per Xcode in generale, ma in particolare RN-MallocOptions copre queste (e altre) opzioni in dettaglio.

Jim Kubicek mostra un bell'esempio in Debugging Smashed Memory in Obj-C, incluso l'importante "Come abilitare questi in Xcode?" domanda:

Aprire la finestra "Modifica schema" e accedere alla scheda Diagnostica. Dovrai attivare "Abilita scarabocchio" e "Stack di Malloc". ... in breve, "Enabled Scribble" farà in modo che l'allocatore scriva 0xAA alla memoria appena allocata e scriva 0x55 alla memoria deallocated. "Malloc Stack" registrerà l'allocazione e la cronologia gratuita della tua memoria.

Se avete letto fino a questo punto, probabilmente sarete interessati a Note tecniche di Apple:

Problemi correlati