Visual Studio peut être un point d'arrêt appelée à partir du code?
J'ai un test de l'unité de projet basée sur UnitTest++. J'ai l'habitude de placer un point d'arrêt à la dernière ligne du code, de sorte que la je peux inspecter la console lors de l'un des tests échoue:
n = UnitTest::RunAllTests();
if ( n != 0 )
{
//place breakpoint here
return n;
}
return n;
Mais j'ai pour le remettre en place à chaque fois que je check-out le code de nouveau à partir de SVN. Est-il possible de
un peu placez le point d'arrêt par le compilateur?:
n = UnitTest::RunAllTests();
if ( n != 0 )
{
//place breakpoint here
#ifdef __MSVC__
@!!!$$$??___BREAKPOINT;
#endif
return n;
}
return n;
- Pourriez-vous s'il vous plaît changer la Question-Titre? Ce n'est pas seulement un Visual Studio problème, mais qui est intéressant pour d'autres compilateurs trop.
Vous devez vous connecter pour publier un commentaire.
Utiliser le
__debugbreak()
intrinsèque(nécessite l'inclusion de<intrin.h>
).À l'aide de
__debugbreak()
est préférable de directement écrit__asm { int 3 }
depuis assembly en ligne n'est pas autorisée lors de la compilation de code pour l'architecture 64 bits.Et pour l'enregistrement, sur Mac et Linux avec GCC, je suis en utilisant
__builtin_trap()
.__debugbreak()
- sans souligner dans le milieu.De Winbase.h.
MSDN
DebugBreak
et__debugbreak
: Parce que DebugBreak est un appel à une fonction du système, système de symboles de débogage doit être installé pour assurer la bonne pile d'appel, l'information est affichée après la rupture. Sinon, la pile d'appel, les informations affichées par le débogueur peut être désactivée par un cadre. Si vous utilisez l' __debugbreak, les symboles ne sont pas nécessaires.Vous pouvez l'utiliser en C ou C++
Si vous utilisez VC6 (oui, obsolète, mais encore en usage dans certains lieux/projets),
DebugBreak()
va fonctionner, mais vous pouvez vous retrouver dans quelque obscure emplacement de profondeur dans les Dll de Windows, à partir de laquelle vous devez marcher sur la pile de retour dans votre code.C'est pourquoi je suis en utilisant
ASSERT()
dans MFC ouassert()
dans la "norme" du code.Votre exemple pourrait fonctionner comme ceci:
Si vous n'avez pas besoin d'un résultat et veulent juste pour le débogage, vous pouvez aussi faire
Comment sur l'utilisation d'un Debug ou méthode Trace à la sortie de la console info. Que peut être une meilleure approche que de s'appuyer sur des points d'arrêt.
À quelle fréquence vérifiez-vous le projet de SVN? C'est typiquement quelque chose que je ne fais qu'une seule fois par projet, ou quand j'ai reconstruire mon PC.
Si vous aussi archiver les fichiers du projet, les points d'arrêt doivent être stockées dans les fichiers de projet.
Je pense qu'il est dans le .suo fichier. Vous pouvez également mettre sous SVN de contrôle si vous voulais, mais je préfère ne pas le faire.