2009-09-29 4 views

Répondre

12

De la manière la plus simple, placez la fonction dans sa propre unité de compilation, compilez celle-ci sans indicateurs d'optimisation.

versions récentes de gcc (4.4+ je pense) ont un attribut pour contrôler l'optimisation par les fonctions, utilisez

__attribute__((optimize(0))) 

sur la fonction pour désactiver les optimisations

+1

Compilateurs __do généralement not__ gurantee que la version debug/release de Les binaires ont le même ABI ou padding etc .... Ainsi, il n'est pas sûr (dans le cas général) de supposer que cela fonctionnera (bien que cela puisse fonctionner pour votre compilateur). –

+2

Avez-vous un exemple? Je sais que Microsoft utilise un runtime C différent pour les exécutables de débogage, mais que l'interopérabilité entre l'appel de fonction et l'alignement de la structure est garantie. Et gcc génère 100% de sortie compatible dans tous les régimes, autant que je sache. De toute évidence, des choses comme l'alignement de la structure et les ABI ne font pas partie du langage standard, donc les compilateurs n'ont pas * besoin * de les respecter lorsqu'ils génèrent une sortie de débogage. Mais cela me semble plus un point pédant que pratique. –

+0

OP a posé une question à propos de gcc et gcc n'a pas de bêtises comme différents ABI "debug" et "release". –

Questions connexes