Lorsque j'appelle une fonction des centaines de fois, comment puis-je savoir quel appel a échoué ?
Mise à jour : novembre 2007
Cette rubrique s'applique à :
Édition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
Natif uniquement |
|||
Standard |
Natif uniquement |
|||
Pro et Team |
Natif uniquement |
Légende du tableau :
Applicable |
|
Non applicable |
|
Commande ou commandes masquées par défaut. |
Description du problème
Mon programme échoue lors de l'appel à une certaine fonction, CnvtV. Mais cet échec survient probablement après plusieurs centaines d'appels à la fonction par le programme. Si je définis un point d'arrêt d'emplacement sur CnvtV, le programme s'arrête à chaque appel de cette fonction, ce que je souhaite éviter. J'ignore quelles conditions ont provoqué l'échec de l'appel et je ne peux donc pas définir un point d'arrêt conditionnel. Que puis-je faire ?
Solution
Vous pouvez définir un point d'arrêt sur la fonction en affectant au champ Nombre d'accès une valeur très élevée que vous ne risquez pas d'atteindre. Dans le cas présent, vous estimez que la fonction CnvtV est appelée plusieurs centaines de fois ; vous affectez par conséquent à Nombre d'accès la valeur 1000 ou une valeur supérieure. Exécutez ensuite le programme et patientez jusqu'à l'échec de l'appel. Ouvrez alors la Fenêtre des points d'arrêt et examinez la liste des points d'arrêt. Le point d'arrêt que vous avez défini sur CnvtV apparaît, suivi du nombre d'accès et du nombre d'itérations restantes :
CnvtV(int) (no condition) when hit count is equal to 1000 (currently 101)
Vous savez à présent que la fonction a échoué au 101e appel. Si vous réinitialisez le point d'arrêt avec un nombre d'accès égal à 101, puis que vous réexécutez le programme, ce dernier s'arrête au niveau de l'appel à CnvtV qui a provoqué son échec.
Voir aussi
Concepts
Forum Aux Questions sur le débogage du code natif
Points d'arrêt et points de trace