2012-08-23 1 views
0

J'ai une application faite en C++ avec Visual Studio 2010 et il lance beaucoup d'informations de débogage avec OutputDebugStringW (environ 50 par secondes ce qui est évidemment beaucoup).DebugView rend mon application plantage

Si j'ouvre DebugView 3 ou 4 fois, alors mon application devient instable et se bloque ou se comporte de manière erratique. J'ai essayé la même chose avec une autre application tirant le même nombre de copies de débogage (également en C++ fait avec VS 2010) et j'ai éprouvé le même comportement, même chose si j'essaye sur un autre ordinateur. Les deux ordinateurs exécutent Windows 7 32 bits.

La longueur de ces tirages est contrôlée pour ne pas dépasser 512 caractères, donc je ne pense pas qu'il y ait un dépassement de tampon (OutputDebugStringW semble limité à des chaînes de 4kb).

J'ai essayé avec Hoo Win Tail (qui est un logiciel similaire à DebugView) et le problème ne se produit pas.

Est-ce que quelqu'un a déjà rencontré ce problème?

Meilleures salutations,

Jet

+0

Comment ça plante? Des détails sur l'exception menant à cela? DebugView peut rendre les appels 'OutputDebugString' traités plus longtemps et affecter respectivement le comportement d'exécution. –

+0

La façon dont il se bloque est la suivante: L'icône de la zone de notification de l'application est remplacée par rien (icône transparente) et le texte de l'info-bulle de l'icône est remplacé par des caractères aléatoires. Le logiciel se bloque ensuite complètement, se bloque ou fait une séquence étrange de la machine d'état. La structure du logiciel est une machine d'état qui est très lente à la conception (comme faire quelque chose toutes les 5-10 secondes), de sorte que la surcharge du CPU OutputDebugString ne devrait pas l'arrêter. – Jet

Répondre

1

Je présume que vous avez un (subtil) condition de course dans votre application qui s'expose que lorsque votre programme fonctionne à des vitesses différentes « ».

DebugView will make your app run slower et ainsi introduit des horaires différents. Que d'autres outils, qui capturent également la sortie de débogage, n'affichent pas ce comportement dans votre application, ce qui pourrait être lié au fait qu'ils introduisent un timing différent (plus rapide/plus lent).