2010-06-23 16 views
0

J'ai une application visuelle foxpro 6 qui est suspendue (100% CPU). L'explorateur de processus, etc. n'indique aucune activité, donc il est évident qu'il est dans une sorte de boucle.Application visuelle foxpro suspendue - puis-je utiliser userdump/windbg?

Pour une application .net ou C, je voudrais prendre une décharge du processus quand il est bloqué, et identifier la méthode qui cause le problème. Une technique similaire peut-elle être utilisée en utilisant foxpro, ou des conseils sur la façon d'identifier la méthode impliquée?

Nous avons un accès complet au code source, et pouvons le reconstruire. Mais nous sommes incapables de recréer le problème dans notre établissement - nous voyons seulement cela se produire occasionnellement chez un seul client.

+0

Si cela se produit uniquement sur le site, il y a plus de chances que ce soit un problème environnemental plutôt que l'application. Est-ce que ça pend au même endroit tout le temps? Quelque chose dans le journal de l'application Windows? –

+0

non, il ne semble pas - ce qui est la raison pour laquelle je voulais faire quelque chose comme nous ferions avec nos applications .net - identifier la trace de la pile quand il a été accroché ... –

Répondre

0

Je présume ici que vous avez accès au code source. Pouvez-vous répliquer le problème en traçant le code dans le débogueur VFP?

+0

oui - clarification ajoutée à la question –

0

Malheureusement, userdump et windbg ne peuvent pas être utilisés pour le débogage de la source Foxpro. Vous pouvez déboguer des programmes Visual Foxpro en exécutant de manière interactive la source dans l'IDE. Le débogueur intégré vous permettra de parcourir le code, et de voir ce qui se passe - si vous pouvez le dupliquer dans un environnement de test/dev. Une fois sous forme compilée, le débogage devient très difficile sinon impossible. Étant donné que cela se produit uniquement sur site, la meilleure option consiste à modifier la source pour générer un journal de débogage, en écrivant essentiellement dans un fichier (STRTOFILE()) lorsque des événements clés se produisent. J'ai eu le malheur de ce genre de problème auparavant et c'était la meilleure option viable, à l'époque.