Sto tentando di risolvere un errore "messaggio inviato all'istanza deallocata" in iOS.LLDB equivalente al comando "info malloc-history <address>" di GDB?
risposta
In passato era possibile utilizzare lo strumento da riga di comando malloc_history da una shell e fornire l'ID di processo e l'indirizzo di interesse. Sembra che questo comando non sia più installato dagli ultimi strumenti della riga di comando di Xcode. :-(
malloc_history sia installato e funzionante per me, con xcode 4.6.3. – manylegged
Utilizzare strumenti, si otterrà l'esatto linea -
(in Xcode) Run attraverso "Prodotto" -> "Profilo"
Questo avvierà Instruments, lì. si dovrebbe scegliere "Zombies" e riprodurre l'evento bug.
You'l ottenere un pop-up, una volta uno zombie viene chiamato, premere il chevron per vedere l'esatta linea.
Il problema è di solito un cattivo __bridge
(ponti opzionale __brige_retained
/__bridge_transfer
/__bridge
)
Questo ha funzionato perfettamente per me. Grazie mille! –
Non vedo abbastanza la linea esatta. Cosa potrei fare di sbagliato? – lwdthe1
@ lwdthe1 Puoi vedere nell'output di Xcode la Classe deallocata a cui è stato inviato il messaggio - ti darebbe un suggerimento riguardo l'istanza deallocata. – avishic
Vedi la mappa dei comandi LLDB-GDB (http://lldb.llvm.org/lldb-gdb.html) - è necessario importare uno script, e il comando si chiama malloc_info ora. Ovviamente, la registrazione dello stack malloc deve ancora essere attivata nelle opzioni dello schema.
(lldb) script import lldb.macosx.heap
(lldb) malloc_info --stack-history 0x10010d680
Purtroppo, non mostra dealloc di - non ha GDB malloc-storia mostrano che pure?
quando ho guardato la pagina collegata, ha mostrato quei comandi come "disponibili solo su Mac OS X" –
Per me, la prima riga doveva essere 'script di script import lldb.macosx.heap', altrimenti la console avrebbe segnalato 'errore : "malloc_info" non è un comando valido. " (Mac OS) –
'(lldb) script import lldb.macosx.heap' * >>> comando" crashlog "e" save_crashlog "installato, utilizzare l'opzione" --help "per l'aiuto dettagliato " malloc_info "," ptr_refs "," cstr_refs "," find_variable "e" objc_refs "sono stati installati, utilizzare le opzioni" --help "su questi comandi per una guida dettagliata. * – tinkl
- 1. GDB Vs Debugger LLDB
- 2. hg equivalente a svn info
- 3. Subversion equivalente al comando 'show' di Git?
- 4. Equivalente al comando "whos" in Python Numpy
- 5. Equivalente al comando C# 'as' in C++?
- 6. Reindirizzare l'output lldb sul file
- 7. Come passare da lldb a GDB in Android Studio
- 8. lldb break upon SIGSEGV
- 9. Esiste un Vim equivalente al comando "fold" di Linux/Unix?
- 10. Esiste un python equivalente al comando `which` di Unix?
- 11. chiamante operatore << in gdb
- 12. Come trovare l'indirizzo di memoria di una funzione con lldb?
- 13. Salta il prossimo n breakpoint in lldb
- 14. GDB informazioni registra comando - Seconda colonna di uscita
- 15. Esiste una libreria java equivalente al comando file in unix
- 16. mv rsync equivalente comando
- 17. Vim equivalente del comando
- 18. Come dire al debugger LLDB di non gestire SIGBUS?
- 19. Pesce equivalente di bash $ (comando) notazione
- 20. comando P iOS LLDB non stampa variabile cornice
- 21. Quali sono i vantaggi di LLDB rispetto a GDB nello sviluppo iOS?
- 22. LLDB C++ debugging
- 23. Comando di Windows equivalente di egrep
- 24. LLDB manuale/documentazione
- 25. Trasforma Info esagonale per binario utilizzando il comando linux
- 26. Clojure equivalente al doctest Python?
- 27. Comando equivalente di Eclipse in Intellij
- 28. Python equivalente di un dato comando wget
- 29. Equivalente DOS del comando "trova" di Unix?
- 30. Com'è chiara la schermata di comando di gdb?
Usa gli strumenti, ti dà quell'informazione. –
@Richard, Usare lo strumento Zombie ti aiuterà a eseguire il debug, ma a volte è bello conoscere la cronologia del malloc mentre si è seduti in gdb. –
Sarebbe bene se gli strumenti non bloccassero la macchina –