Comment puis-je déboguer un contrôle ActiveX (OCX), ou de faire des erreurs dans le journal?

Je suis actuellement en train de travailler avec un vieux Borland C++, qui est une application à l'aide d'un composant ActiveX pour dessiner des graphiques. Dans l'application de multiples de windows avec l'ActiveX comp. peut être ouverte à tout moment; celles - ci peuvent montrer le même graphique (différentes facteur de zoom, etc), ou de graphiques.

L'application est pour le positionnement, et l'ActiveX est le dessin et montrant les positions des différentes unités.

Environ 10 fois par seconde Borland application a obtenu un nouveau poste, et découvre les formes (et de leur ActiveX) a besoin de savoir à propos de la mise à jour de position afin de dessiner. Cela va bien pendant un long moment, mais j'ai eu à le faire tout à fait quelques changements dans l'ActiveX pour une nouvelle version du produit.

Environ un an, j'ai eu à faire quelques changements mineurs dans le composant aswell, et j'ai trouvé que l'application pourrait finir dans un état, provoquant un "index out of bounds" erreur dans le composant. Le résultat de ce n'était pas une erreur lors de l'obtention affichée ou le programme de la résiliation, mais plutôt l'application a commencé à utiliser une grande quantité de mémoire - et continué à aller très vite. À un certain moment il s'est arrêté et la composante de l'erreur tout simplement cessé de montrer quoi que ce soit (arrêté de dessiner lui-même).

Maintenant avec les dernières modifications que j'ai faites, j'ai le même problème dont l'une des composantes semble être une erreur, ce qui n'est pas montré, et au lieu de cela, il n'est pas redessiner lui-même, et l'utilisation de la mémoire va ciel élevé. Sur certains PC, il semble qu'une Violation d'Accès est jeté qui est en train de dire que l'erreur qui s'est passé dans l'OCX, mais sur PC je développe, je ne peux pas obtenir cette Violation d'Accès en aucune façon.

Aussi je n'arrive pas à suivre exactement quand l'erreur se produit - c'est à dire ce qui est à l'origine de l'erreur. Je peux exécuter le programme d'installation même 10 fois de suite pendant 15 minutes, parfois, il arrive que l'utilisation de la mémoire monter et un composant d'un bug, d'autres fois il ne se passe rien et il fonctionne comme il se doit pour toute la durée.

Que c'est un OCX, il est enregistré à l'aide regsvr32, et est donc au niveau du code ne fait pas partie de la demande principale. Donc je ne peux pas utiliser les points d'arrêt et le corriger de cette façon.

Je suis sûr que certains d'erreur qui se passe à l'intérieur du composant, ce qui n'est pas passé, donc je ne vois pas ce que c'est.

Donc faire ce que quelqu'un sais comment je peut corriger cela? Puis-je faire en quelque sorte l'OCX journal des erreurs qui se passe, ou en faire apparaître l'erreur, ou que puis-je faire?

Toute aide serait grandement apprécié essayé de retrouver l'erreur 3 jours maintenant sans résultat, afin que jamais.

Pouvez-vous modifier ou construire la ocx? Si vous avez des fichiers PDB pour ocx, vous pouvez déboguer il suffit d'attacher le débogueur au processus en cours d'exécution.
Je peux, en effet, de modifier et de construire l'ocx. Je ne suis pas du tout familier avec les MFC et OCX, donc je ne suis pas tout à fait sûr sur la façon d'utiliser les fichiers PDB et attacher le débogueur au processus en cours d'exécution?

OriginalL'auteur Knirkegaard | 2012-09-06