39 votes

Comment déclarer une instruction de débogage uniquement

En C #, je peux utiliser le code suivant pour avoir du code qui ne s'exécute que pendant la construction du débogage, comment puis-je faire de même dans Xcode?

 if #DEBUG
{
    // etc etc
}
 

67voto

Alnitak Points 143355

Vous pouvez utiliser

#ifdef DEBUG
    ....
#endif

Vous aurez besoin d'ajouter DEBUG=1 pour le projet du symbole de préprocesseur définitions dans la configuration de Débogage comme ce n'est pas fait automatiquement pour vous par Xcode.

Personnellement, je préfère faire en DEBUG=1 sur la vérification de NDEBUG=0, puisque celle-ci implique que la valeur par défaut configuration de build est avec les informations de débogage qui vous ont explicitement éteindre, tandis que la " DEBUG=1 implique tournant sur debug uniquement code.

47voto

ShuggyCoUk Points 24204

Le symbole NDEBUG doit être défini pour vous déjà dans les builds en mode release

 #ifndef NDEBUG
/* Debug only code */    
#endif
 

En utilisant NDEBUG, vous évitez simplement d'avoir à spécifier vous-même un argument -D DEBUG pour le compilateur pour les versions de débogage

14voto

Tibidabo Points 10510

DEBUG est désormais défini en "mode débogage" par défaut sous Project / Preprocessor Macros. Donc, le tester fonctionne toujours sauf si vous avez un très vieux projet.

Cependant je déteste le fait qu'il gâche l'indentation du code et pas particulièrement compact. C'est pourquoi j'utilise une autre macro qui facilite la vie.

 #ifdef DEBUG
#define DEBUGMODE YES
#else
#define DEBUGMODE NO
#endif
 

Le test de la valeur DEBUGMODE est donc beaucoup plus compact:

 if (DEBUGMODE) {
//do this
} else {
//do that
}
 

Mon favori:

 NSTimeInterval updateInterval = DEBUGMODE?60:3600; 
 

5voto

AnthonyLambert Points 4884

Il existe une note technique de débogage très utile: Note technique TN2124 Mac OS X Debugging Magic http://developer.apple.com/technotes/tn2004/tn2124.html#SECENV qui contient de nombreuses informations utiles pour le débogage de vos applications.

Tony

Prograide.com

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.

Powered by:

X