11
votes

Comment désactiver les affirmations en mode de débogage dans Visual Studio 2013

Y a-t-il un moyen de désactiver les affirmations au lieu de passer en mode de libération. J'ai besoin de déboguer un code qui fait des affirmations très souvent et que cela ralentit mon travail. Ces affirmations ne sont pas liées à la question que j'essaie de résoudre, donc pour le moment, ils ne ralentissent que mes progrès, car ils sont appelés très souvent dans l'une de mes classes de base. Maintenant, je n'ai pas le temps d'améliorer leur conception, alors quelqu'un peut-il me dire s'il existe un moyen de désactiver les affirmations tout en étant en mode de débogage et en utilisant ses capacités.


0 commentaires

5 Réponses :


1
votes

#define ndebug avant #include pour désactiver affirmation macro.

Vous pouvez donc ajouter cela à la définition de pré-processeur dans les paramètres du projet.


1 commentaires

Informations utiles, Toutefois, MFC affirmer n'est pas la même chose que la bibliothèque standard affirmer et est contrôlée différemment.



2
votes

Vous pouvez utiliser _set_error_mode ou _crtsetrepormode (voir la réponse de XMRI) pour modifier Méthode de déclaration de défaillance et évitez la boîte de dialogue modale. Voir le code Snippet là-bas: XXX

Notez également que les défaillances affirmées sont généralement pour une raison et que vous souhaitez corriger le code, non seulement supprimer le rapport. En les éliminant de Débogu construit complètement, vous rompez simplement de bonnes choses construites pour vous.


1 commentaires

Ne semble pas aider - je vois toujours des dialogues modaux comme: l'assertion de débogage a échoué! Fichier: Minkernel \ Crts \ UCRT \ SRC \ AppCrT \ Heap \ Debug_heap.cpp Line: 996 Expression: __acrt_first_block == en-tête



16
votes

Utilisateur _crtstreportmode xxx

au lieu d'utiliser 0, vous pouvez utiliser _crtdbg_mode_debug uniquement.


2 commentaires

Ne semble pas aider - je vois toujours des dialogues modaux comme: l'assertion de débogage a échoué! Fichier: Minkernel \ Crts \ UCRT \ SRC \ AppCrT \ Heap \ Debug_heap.cpp Line: 996 Expression: __acrt_first_block == en-tête


Ceci est une erreur de tas. Ils apparaissent toujours. Vous avez une erreur fatale dans votre code qui corrompt la chaleur! Vous ne devriez jamais ignorer une telle erreur!



0
votes

Je n'ai pas de studio Visual 2013, mais ce qui suit fonctionne pour moi dans Visual Studio 2015, alors peut-être peut-être la même chose ou quelque chose d'œuvres similaires pour vs 2013, aussi.

dans votre fonction principale (), appelez xxx

dans Visual Studio, accédez aux paramètres de débogage / Windows / Exception. Dans les paramètres d'exception, accédez à Win32 Exceptions / 0xc0000420 L'affirmation a échoué. Décochez la case devant cette entrée.

J'ai besoin des deux ci-dessus pour supprimer les fenêtres contextuelles d'affirmation en mode de débogage.


0 commentaires

1
votes

Vous pouvez ajouter un drapeau de compilateur / dndebug pour désactiver les affirmations. Je sens que cela est plus propre puisque vous n'avez rien à changer dans votre code.

fromm the MSVC Documents :

Vous pouvez désactiver la macro ASSTER sans modifier vos fichiers source à l'aide d'une option de ligne de commande A / DNDEBUG.


0 commentaires