2009-12-17 8 views
1

L'application MFC (utilise SQLite3.dll pour l'accès à la base de données, ainsi que d'autres DLL pour accéder au matériel) se termine anormalement. Il n'y a pas de séquence particulière de fin :( Ma demande est unQu'est-ce qui peut causer une interruption anormale du programme?

  1. application mono-thread
  2. Utilise la gestion des exceptions
  3. Utilise plus de 6 DLLs pour accéder à différents hardwares
  4. fonctionne sur Windows XP SP2

Initialement, je pensais que ce pourrait être à cause de Stack Overflow, plus tard je l'ai découvert n'est pas. moi quelles sont toutes les causes générales d'un arrêt de programme anormal? Si quelqu'un a rencontré des problèmes similaires ou a des indices ou des indices, s'il vous plaît les transmettre.

Merci à l'avance

+2

Avez-vous essayé de l'exécuter via un débogueur? –

+0

Pouvez-vous exécuter le programme dans le débogueur et fournir une trace de la pile de l'accident et/ou le texte de la boîte de sortie de Visual Studio? Essayez également de construire en mode débogage et voir si vous obtenez des affirmations. –

+0

... ou au moins le code en cours d'exécution. –

Répondre

3

D'une manière générale, les causes générales des accidents sont quand vous:

  • mémoire morte qui ne vous appartient
  • mémoire d'écriture qui ne vous appartient pas
  • fracture par
  • faire quelque chose dans une interruption que vous ne devriez pas
  • free() entre plus d'une fois

Peut-être aussi:

  • ont une exception unhanded
  • trouvé un bug dans votre MFC
  • un de vos > 6 DLLs matériel d'accès est en train de faire l'une des
  • Vous rencontrez une sorte de défaut matériel

Peut-être que vous passez un mauvais tampon à l'une de vos DLL matérielles, ou oubliez de verrouiller de la mémoire, ou vous pourriez même avoir une incompatibilité de version entre les DLL et leurs en-têtes.

Il y a tellement de choix: P

0

Depuis c'est une question d'exécution, je vous suggère d'envoyer des instructions de débogage dans un fichier journal. Incluez le nom de la fonction et peut-être un horodatage. Toujours vider le tampon de sortie après avoir écrit dans le fichier, car cela offre une meilleure probabilité que la dernière ligne a été écrite dans le fichier avant que l'exception se produise.

Questions connexes