J'essaye de déboguer un problème dans une DLL écrite en C qui continue à causer des violations d'accès. J'utilise Visual C++ 2008, mais le code est C. droite.Comment faire pour que le débogueur de VC++ casse des exceptions?
Je suis habitué à Delphi, où si une exception se produit lors de l'exécution sous le débogueur, le programme se casse immédiatement au débogueur et il vous donnera une chance d'examiner l'état du programme. Dans Visual C++, cependant, tout ce que je reçois est un message dans l'onglet Sortie:
First-chance exception at blah blah blah: Access violation reading location 0x04410000.
Pas de pause, rien. Il va juste et décompose la pile jusqu'à ce qu'elle soit de retour dans mon EXE Delphi, qui reconnaît quelque chose qui ne va pas et m'avertit, mais à ce moment-là j'ai perdu plusieurs couches de call call et je ne sais pas ce qui se passe. J'ai essayé d'autres techniques de débogage, mais quoi qu'il fasse se déroule au sein d'une boucle imbriquée dans une macro C qui est appelée plus de 500 fois, et c'est juste un peu au-delà de mes compétences (ou de ma patience) pour Tracer à travers.
je me dis que il doit y avoir un moyen d'obtenir l'exception « première chance » de me donner en fait une « chance » pour y faire face. Il y a probablement un paramètre de configuration «Interrompre immédiatement les exceptions de la première chance» que je ne connais pas, mais il ne semble pas que ce soit tout ce qui puisse être découvert.
Est-ce que quelqu'un sait où il est et comment l'activer?
Merci. Ça a marché. Je me demande pourquoi la violation d'accès n'est pas vérifiée par défaut ... –
@Mason: Pas de problème. Je ne pense pas qu'aucun d'entre eux sont vérifiés par défaut. Ma conjecture est qu'il y a une pénalité de performance assez importante quand "break on exception" est activé (bien que je ne le sache pas vraiment). –
Je ne le pense pas. Je ne connais pas très bien le C++, mais en Delphi, la pénalité de performance est nulle jusqu'à ce qu'elle tombe sur un, et quand cela arrive, cela signifie généralement que quelque chose s'est mal passé et que le débogueur est exactement là où vous voulez. être. –