2009-12-29 2 views
3

Nous exécutons une application, arrive à être le serveur web que nous avons écrit, et nous Nous disons quelques problèmes désagréables seulement dans la production, donc pendant environ 12 heures, nous allons mettre cela sous WinDBG et prendre des callstacks chaque fois qu'il se brise.Scripting WinDBG pour prendre un callstack chaque fois qu'il casse et ensuite passer (ex non traité, ou le debugee dire debug.break())

Parfois, il va se casser en raison d'une exception non gérée, et parfois nous allons frapper une affirmation, à quel point notre code dit si exécuté sous un débogueur, cassez.

Est-il possible de se connecter à WinDBG de telle sorte que dès qu'il se casse, il prend une pile d'appel, et se déplace immédiatement?

Répondre

3

Fixation d'un débogueur à une boîte de production peut être désastreux, (a) la performance (b) des pauses inattendues dans le débogueur

En sécurité, assurez-vous vraiment que vous désactivez toutes les exceptions que vous ne se soucient pas ou de la volonté ne veut pas entrer dans le débogueur.

sxd * 

Ensuite, choisissez celles que vous souhaitez gérer d'une certaine façon (prendre callstack, et passer à autre chose)

sxe -c "kb;g" bpe 
sxe -c "kb;g" asrt 
sxe -c "kb;g" eh 

Le premier est un point de rupture gestionnaire d'exception, affirmer l'échec, et Exception C++ EH.

Il y a une liste énorme de ce que votre débogueur prend en charge, par exemple, si vous chargez SOS.dll (l'extension CLR à WinDBG), vous serez en mesure de

sxe -c "kb;g" clr 

Pour plus d'informations faisant autorité sur les types d'exception/événements sur lesquels vous pouvez potentiellement filtrer, voir l'aide de WinDbg (recherche de sxe)

0

Essayez

sxe -c "kb;g" -h wkd 

et

sxe -c "kb;g" -h eh 

Recherche Exceptions Contrôle et événements dans le document d'aide de windbg pour plus d'informations connexes.

Questions connexes