2009-04-17 6 views

Répondre

31

Les versions de débogage contiendront des symboles de débogage pouvant être utilisés par un débogueur. Les builds de release ne contiennent souvent pas de symboles de débogage, donc si vous obtenez un crash dump, tout ce que vous obtenez est un tas d'adresses hexadécimales au lieu de noms de symboles utiles.

debug ne sont pas compilé avec l'optimisation (-O0 avec gcc), alors que la libération sont des compositions compilé avec l'optimisation (généralement -O2 ou -O3). L'optimisation rend le débogage beaucoup plus difficile. Si vous tentez de déboguer une application de version, le débogueur sera très confus, puisque les instructions d'assemblage ne correspondent plus aux instructions HLL, les instructions sont réorganisées, les fonctions sont insérées, les boucles sont déroulées, etc.

Déboguer et libérer les versions aussi différents symboles de préprocesseur définis, et certains codes sont conditionnellement compilés sur la base de ceux-ci (par exemple, vérifications de limites de tableau, assertions, etc.), bien que cela dépende fortement de l'application. Un exemple typique serait #define NDEBUG pour le mode de libération, ce qui entraîne la suppression des assertions.

0

Dans Tiger, les versions de débogage sont "liées à zéro". Ceci est il est optimisé pour votre environnement seulement et n'est pas vraiment une construction complète.

Questions connexes