Comment savoir qui provoque une erreur de violation d'accès?
Je reçois des rapports que mon application est à l'origine d'une PANNE sur certaines machines Vista. Le message d'erreur est quelque chose comme ceci:
violation d'accès à 0x75784062 ( essayé d'écrire à 0x00000006)
Pour remédier à cela, j'ai d'abord besoin de savoir exactement qui est à l'origine de cette PANNE: mon principal exe, certains composants tiers, un de mes propres composants activex, dll, etc...
Comment puis-je trouver cela? Quels outils peuvent identifier précisément le module qui a causé ce désordre?
Toute aide serait grandement appréciée.
PS Mon application est codé en VB6 et mes contrôles activex sont écrits en Delphi 2007.
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Ma suggestion serait d'essayer soit MadExcept texte du lien ou Eurekalog texte du lien . Ces capture de l'exception non gérée et produire un vidage de pile à l'endroit où le problème se produit.
Pas de lien vers ces autres que comme un client satisfait. MadExcept m'a permis de traquer et d'éliminer certaines très rares problèmes dans mes programmes.
Je voudrais recommander une sorte d'Exception-crochet, comme Eurekalog ou madExcept qui vous donne une belle pile des appels dans les cas d'exception se produit.
Maintenant, c'veulent beaucoup vous aider, maintenant, de cource...
Je n'ai pas eu de chance avec le "Trouver l'erreur" boîte de dialogue. En général, un uniforme cas d'échec et beaucoup de pas à pas est la seule/le plus rapide/la plus simple solution. Si c'est un cas de pointeur non initialisé ou objet libéré, FastMM4 peut vous aider avec les bons réglages.
Lorsque le programme se bloque Windows devrait enregistrer une crash dump. Vous pouvez ensuite charger ce dans WinDbg ou, à la rigueur, Visual Studio. Il y a différentes façons d'analyser l'image pour savoir ce qui n'allait pas. Pour vous aider à démarrer:
Installer Debug Diag et de surveiller votre application, il générer des fichier de VIDAGE pour vous et vous pouvez les analyser.
Vous pouvez utiliser le Moniteur de Processus ou Process Explorer, à la fois de la SysInternals site.
La traque de l'AVs peut être difficile parce que la vraie raison est peut-être pas dans le même point d'où l'exception se produit réellement. Quelques conseils généraux:
ActiveX OCX/), sont chargés plus
adresse, généralement au-delà de 0x50000000
(systemm Dll sont généralement dans
0x70000000 à 0x78000000). Il semble que votre AV qui se passe dans une DLL. Rappelez-vous dans la dernière version de Windows espace d'adressage de la charge de la randomisation peut changer les adresses pour chaque exécution