Quelqu'un peut-il expliquer ce que font ces options dans Xcode ?
- Activer le gribouillage
- Activer les bords de garde
- Activer la garde Malloc
ce qu'ils sont et ce qu'ils font et quelle peut être leur utilité pour le débogage/les tests ?
Merci.
Quelqu'un peut-il expliquer ce que font ces options dans Xcode ?
ce qu'ils sont et ce qu'ils font et quelle peut être leur utilité pour le débogage/les tests ?
Merci.
De la documentation .
Scribble rendra évident le fait que vous utilisez un bloc mémoire après qu'il ait été libéré en écrasant toutes les données qui se trouvaient dans le bloc mémoire lors de sa libération.
Guard edges et Guard Malloc vous aideront à trouver les dépassements de mémoire et (jusqu'à un certain point) l'utilisation après la libération en protégeant les blocs de mémoire en lecture et en écriture pour que votre programme se plante de manière plus évidente en cas d'utilisation abusive de la mémoire.
Je demande cela parce que parfois j'ai des plantages dans mes applications que j'essaie de déboguer, et Xcode 4 pointe vers " int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate") ; " comme source d'erreur. J'ai donc essayé de trouver des moyens pour qu'il pointe vers la bonne ligne d'erreur.
@DigitalRobot Même si elles n'offrent pas une "protection" à 100%, s'il s'agit d'une erreur de mémoire, toutes les options ci-dessus, si elles sont activées, augmenteront la probabilité que votre programme se plante plus près de l'endroit où se trouve l'erreur réelle.
Question secondaire : le choix de 0xAA et 0x55 est-il complètement arbitraire, ou y a-t-il une raison ?
Le lien "documentation" ci-dessus concerne Xcode en général, mais plus particulièrement RN-MallocOptions couvre ces options (et d'autres) en détail.
Jim Kubicek montre un bel exemple dans Déboguer la mémoire écrasée en Obj-C y compris l'importante question "Comment puis-je les activer dans Xcode ?" :
Ouvrez la fenêtre "Edit Scheme" et accédez à l'onglet "Diagnostics". Vous voudrez activer "Enable Scribble" et "Malloc Stack". ... en bref, "Enabled Scribble" fera en sorte que l'allocateur écrive 0xAA dans la mémoire nouvellement allouée et écrive 0x55 dans la mémoire désallouée. "Malloc Stack" enregistrera l'historique d'allocation et de libération de votre mémoire.
Si vous avez lu jusqu'ici, vous serez probablement intéressé par les notes techniques d'Apple :
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.