Quel est le meilleur moyen de visualiser un désassemblage précis dans VC ++ 2010 en mode Release Win32?

J’écris du code optimisé au niveau de l’assembly et je dois m’assurer que le compilateur C ++ fonctionne correctement avec Release-Mode.

Auparavant, j’étais capable de faire en sorte que les programmes Release-Mode marquent des points d’arrêt dans VS 2002 (et affichent le désassemblage brut au fur et à mesure que je le parcourais), mais je ne me souviens pas comment je l’ai obtenu. VS 2010 a-t-il des options qui pourraient permettre que cela se produise?

Construisez des symboles pour votre release build (/ Zi) [edit: et liez avec / DEBUG] et vous pourrez définir des points d’arrêt.

Si vous souhaitez utiliser le débogueur pour afficher le désassemblage, vous pouvez placer un appel insortingnsèque __debugbreak () juste avant le code que vous souhaitez afficher.

Si vous écrivez un assemblage droit, vous pouvez simplement utiliser INT 3 . Lorsque vous placez un point d’arrêt à l’aide du débogueur, il modifie le code en celui-ci (0xCC en binary) afin que le débogueur soit appelé lorsqu’il est exécuté.

Vous pouvez également appeler l’une des fonctions qui le font pour vous, comme suggéré. Le Windows est DbgBreakPoint () . Si vous le démontez, vous pouvez facilement voir que ce n’est rien d’autre que INT 3 .

C’étaient des méthodes pour causer des casses-pieds:

 _asm { int 3 } 

ou

 _asm { _emit 0xcc } 

ou était-ce

 _emit 0xcc 

Je ne suis pas sûr de la syntaxe (ça fait un moment) mais j’espère que l’on peut en faire quelque chose.