2 votes

Mise en place d'une condition "!stoponexception" pour windbg via ligne de commande / démarrage script ?

J'ai un problème avec une application que nous avons créée et qui se bloque parfois avec une StackOverflowException dans certains codes .NET.

Malheureusement, l'application est en partie non gérée et en partie gérée, et pour une raison quelconque, le problème ne se manifeste que sur les machines non développées.

Mon plan actuel est d'utiliser WINDBG (qui fait partie des Debugging Tools for Windows de Microsoft), installé sur les machines des testeurs, je peux faire en sorte que WINDBG piège la création de l'exception en question.

En tant que tel, je peux faire ce qui suit :

sxe ld:mscorlib
g
.loadby sos clr
!stoponexception -create System.StackOverflowException
g

Malheureusement, étant donné que ce problème n'apparaît qu'un jour sur deux, et seulement toutes les 50 exécutions environ, je préférerais éviter que les testeurs aient à saisir tout ou partie de ces informations à chaque fois qu'ils lancent cette application.

J'ai essayé de placer les commandes ci-dessus dans un fichier texte et de créer un raccourci pour elles comme ceci :

"...\windbg.exe" -c "$<c:\windbg.txt" -o "...\app.exe"

Cela lance le débogueur WINDBG, mais échoue malheureusement avec ce message d'erreur :

0:000> sxe ld:mscorlib
0:000> g
Command file caused an implicit wait
Command file execution failed, HRESULT 0x80004005
    "Unspecified error"

Donc apparemment, g n'est pas autorisé dans un tel script de démarrage.

Est-il possible de faire ce que je veux ? Puis-je automatiser cela, ou dois-je simplement préparer un fichier batch ou quelque chose qui utilise autohotkey qui fait cela ?

1voto

epsilon Points 11

Bien qu'il soit tard, je voulais néanmoins fournir une solution de rechange. J'ai rencontré le même problème et je suis tombé sur cette question en cherchant la réponse. J'ai ensuite trouvé une solution de contournement.

La solution de contournement consiste à appeler le script en utilisant $>< ou $$>< ou $$>a< afin que les commandes soient condensées en un seul bloc de commandes.

Voici le document d'aide de windbg

0voto

Thomas Weller Points 5255

Vous pouvez essayer .dump /ma /u c:\app.dmp afin d'obtenir un crash dump qui peut être copié et analysé sur votre machine.

Cependant, au lieu d'essayer de laisser l'utilisateur exécuter WinDbg sur sa machine, vous pouvez prendre un crash dump automatiquement en utilisant WER, le copier sur votre machine et ensuite l'analyser sans contrainte de temps. Voir Collecte des vidages en mode utilisateur pour créer des paramètres dans le registre qui stockent le dump sur le disque.

Dans les deux cas, vous devez copier de C:\Windows\Microsoft.NET\Framework\v4.0.30319 (ou Framework64) :

Sinon, il se peut que votre version de .NET diffère de la sienne et que vous ne puissiez pas analyser le bogue.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X