web-dev-qa-db-fra.com

Xcode - gribouillage, garde les bords et garde malloc

Quelqu'un peut-il expliquer ce que font ces options dans Xcode?

  • Activer le gribouillage
  • Activer les bords de garde
  • Activer Guard Malloc

ce qu'ils sont et ce qu'ils font et dans quelle mesure peuvent-ils être utiles pour le débogage/test?

merci.

55
SpaceDog

De la documentation .

  • Activez Scribble. Remplissez la mémoire allouée avec 0xAA et la mémoire désallouée avec 0x55.
  • Activez les bords de garde. Ajoutez des pages de garde avant et après les allocations importantes.
  • Activez Guard Malloc. Utilisez libgmalloc pour détecter les problèmes de mémoire courants tels que les dépassements de tampon et l'utilisation après libération.

Scribble rendra plutôt évident que vous utilisez un bloc de mémoire après sa libération en écrasant toutes les données qui se trouvaient dans le bloc de mémoire lors de la libération.
Les bords de garde et Guard Malloc vous aideront à trouver les dépassements de mémoire et (dans une certaine mesure) l'utilisation après la libération en protégeant en lecture et en écriture les blocs de mémoire pour faire planter votre programme plus clairement en cas d'utilisation abusive de la mémoire.

47
Joachim Isaksson

Le lien "documentation" ci-dessus est vers Xcode en général, mais plus spécifiquement RN-MallocOptions couvre ces options (et d'autres) en détail.

Jim Kubicek montre un bel exemple dans Debugging Smashed Memory in Obj-C , incluant l'important "Comment les activer dans Xcode?" question:

Ouvrez la fenêtre ‘Edit Scheme’ et accédez à l’onglet Diagnostics. Vous souhaiterez activer "Activer le gribouillage" et "Malloc Stack". ... en bref, "Enabled Scribble" fera que l'allocateur écrit 0xAA dans la mémoire nouvellement allouée et écrit 0x55 dans la mémoire désallouée. "Malloc Stack" enregistrera l'allocation et l'historique gratuit de votre mémoire.

Si vous avez lu jusqu'ici, vous serez probablement intéressé par les notes techniques d'Apple:

5
Nuthatch