J'utilise une bibliothèque qui tente de faire debug.Assert lorsque je fais une traction de cérémonie, est là pour l'arrêter d'utiliser Debug.Assert? P>
4 Réponses :
Si vous le compilez sans le symbole code> de débogage code>, alors aucun appels sur débog.assert code> sera compilé (les méthodes sont définies avec [conditionnel (" Débogage ")] code>) p>
Si vous pouvez recompiler la bibliothèque, alors Marc est correct; Juste la recompilez sans débogage défini et toutes les affirmations disparaîtront. P>
Si vous ne pouvez pas faire cela, parce que vous dites que vous n'avez pas le code source de la bibliothèque, vous pouvez afficher votre programme de préciser le Trace Souditeurs . De cette façon, lorsque l'assertion tire, il tire toujours mais cela ne fait rien. (Lorsqu'une assertion tire, il vérifie simplement les écouteurs de trace enregistrés et les informe de l'affirmation. Aucun auditeur ne signifie rien ne se passe.) P>
Dans ce scénario, vous pouvez envisager de remplacer l'auditeur de trace par défaut avec un écouteur de trace client de votre choix qui fait quelque chose comme enregistre l'affirmation à un fichier. De cette façon, vous pouvez examiner le journal et voir quelles assertions auraient accélérées dans l'exécution «normale» de la version de débogage de la bibliothèque. P>
Utilisez-vous un binaire ou avez-vous une source de bibliothèque? Dans le premier cas, je vous suggère de contacter votre fournisseur pour vous demander pourquoi ils ont publié une construction de débogage et leur permettent également de savoir l'affirmation, qui est un bogue dans leur code (les défaillances d'affirmation ne devraient jamais se produire si le code s'exécute comme prévu, même dans cas exceptionnels.) p>
Vous pouvez ajouter la section suivante à votre fichier Pour plus de détails, voir app.config code> qui inhibe la rupture sur débog.assert (false) code>: affirmer code> Élément et DefaultTracelistener.Assertaineableableablebleableablebleableabled . P> p>
Sûr. Et ensuite, le programme poursuivra tout ce que la corruption de l'État a été détectée dans l'affirmation et une catastrophe vous arrivera d'une manière la plus odieuse. Pourquoi n'arrêtez-vous pas de faire ce que c'est que cela provoque l'affirmation de se plaindre?
@Jeffrey: Bien que votre point soit bien pris, l'assertion est probablement erronée; Il ne devrait pas y avoir un moyen de faire feu d'assertion en premier lieu si le code est correct. L'affirmation indique probablement un bogue dans la bibliothèque, pas un bogue dans le code de l'appelant. Si Levi a déterminé que le bogue est bénin, il peut être utile de supprimer simplement l'affirmation jusqu'à ce que le code soit corrigé.
@ERIC LIPPERT - Je pensais que l'auteur de la bibliothèque n'a pas compris la position correcte de l'ASSERT (puisqu'elle ne devrait jamais tirer), mais il devait y avoir une raison de faire le chèque en premier lieu. C'est peut-être quelque chose pour lequel une exception devrait être lancée. Il semble peu probable qu'ils auraient ajouté un test pour une maladie qui n'a pas d'importance. Mais là encore, peut-être qu'ils l'ont fait. Si oui, alors peut-être une autre bibliothèque sans ces erreurs-up erreurs devraient être recherchées! :)