web-dev-qa-db-fra.com

Équivalent en LLDB de la commande "info malloc-history <address>" de GDB?

J'essaie de résoudre une erreur "message envoyé à une instance désallouée" dans iOS.

30
user1274177

Voir la mappe de commandes LLDB-GDB ( http://lldb.llvm.org/lldb-gdb.html ) - vous devez importer un script et la commande s'appelle maintenant malloc_info De toute évidence, la journalisation de la pile malloc doit encore être activée dans les options de schéma.

(lldb) script import lldb.macosx.heap
(lldb) malloc_info --stack-history 0x10010d680

Malheureusement, cela ne montre pas les dealloc's - l'histoire de malloc-histoire de GDB ne l'a-t-elle pas montré aussi?

39
karstux

Utilisez des instruments, vous obtiendrez la ligne exacte -

(En XCode) Exécutez-le dans "Produit" -> "Profil".

Ceci démarrera Instruments, il vous faudra choisir "Zombies" et reproduire l'événement de bogue.

Vous obtiendrez une fenêtre contextuelle une fois le zombie appelé, appuyez sur le chevron pour afficher la ligne exacte .

Le problème est généralement un mauvais __bridge (ponts optionnels __brige_retained/__bridge_transfer/__bridge)

2
avishic

Vous pouviez utiliser l'outil de ligne de commande malloc_history à partir d'un shell et lui donner l'ID de processus et l'adresse qui vous intéressaient. Il semble que cette commande n'est plus installée par les derniers outils de ligne de commande de Xcode. :-(

0
Kevin Draz