Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

CoqBlog

.NET is good :-)
{ Blog de coq }

Actualités

ProcDump 6.0 : support du filtrage sur messages d'exceptions .NET, des filtres multiples et du ciblage par nom de service

D'après le post sur le blog Sysinternals la dernière version majeure de ProcDump, très sympathique outil de prise de dump offrant un bon nombre de possibilités de paramétrage, apporte quelques évolutions plutôt pratiques :

  • affichage et filtrage sur le message des exceptions .NET (ou JScript)
  • support des filtres multiples
  • ciblage de processus par nom de service Windows

 

Affichage et filtrage sur le message des exceptions .NET (ou JScript)

Le switch -f agit maintenant sur le message de l'exception .NET en plus du nom du type de l'exception.
Cela peut s'avérer intéressant avec certains types d'exception dont le message contient des informations de contexte intéressantes : par exemple filtrer sur la description permet ainsi de limiter le nombre de dumps pris avant de tomber sur la bonne exception.

A titre d'exemple, voici une ligne de commande permettant d'obtenir un dump pour une exception de première chance du type InvalidOperationException dont le message contient "filtrez-moi" :

procdump -e 1 -f "System.InvalidOperationException*filtrez-moi*" -w ProcDumpTestBench

Ainsi, le dump n'est pris qu'à la 3ème exception levée par mon programme de test : la première avait le bon message mais pas le bon type, la seconde avait le bon type mais pas le bon message :

ProcDump v6.00 - Writes process dump files
Copyright (C) 2009-2013 Mark Russinovich
Sysinternals - www.sysinternals.com
With contributions from Andrew Richards

Waiting for process named ProcDumpTestBench...

Process:               ProcDumpTestBench.exe (6556)
CPU threshold:         n/a
Performance counter:   n/a
Commit threshold:      n/a
Threshold seconds:     n/a
Number of dumps:       1
Hung window check:     Disabled
Exception monitor:     First Chance+Unhandled
Exception filter:      *System.InvalidOperationException*filtrez-moi*
Terminate monitor:     Disabled
Dump file:             D:\Temp\ProcDumpTestBench_YYMMDD_HHMMSS.dmp


Press Ctrl-C to end monitoring without terminating the process.

CLR Version: v4.0.30319

[13:39:06] Exception: E0434F4D.System.NullReferenceException ("Filtrez-moi !")
[13:39:13] Exception: E0434F4D.System.InvalidOperationException ("Operation is not valid due to the current state of the object.")
[13:39:33] Exception: E0434F4D.System.InvalidOperationException ("Filtrez-moi !")

First-chance Exception.
Writing dump file D:\Temp\ProcDumpTestBench_130520_133933.dmp ...
Dump written.

Dump count reached.

Concernant le support JScript, je vous laisse tester.

 

Support des filtres multiples

Il est maintenant possible de spécifier plusieurs fois le switch -f, ce qui nous permet d'effectuer un filtrage en mode "OU".

Pour reprendre mon test précédent, si je veux obtenir un dump pour une exception de première chance du type InvalidOperationException dont le message contient "filtrez-moi" OU quand une exception de type NullReferenceException est levée, je peux utiliser une ligne de commande de ce type :

procdump -n 3 -e 1 -f "System.NullReferenceException" -f "System.InvalidOperationException*filtrez-moi*" -w ProcDumpTestBench

Au passage : "-n 3" permet de prendre au maximum 3 dumps avant que ProcDump s'arrête. Dans le cas présent je ne l'utilise pas pour limiter le nombre de dump pris mais plutôt pour pouvoir en prendre plusieurs avant que ProcDump se coupe (sinon par défaut il se coupe au premier dump pris) et me permet ainsi d'obtenir plusieurs dumps sans relancer la commande.

On voit qu'aucun dump n'est pris pour la première exception car elle ne correspond à aucun des 2 filtres, mais que les 3 suivantes ont déclenché une prise de dump car elles correspondaient à au moins un des 2 filtres :


Copyright (C) 2009-2013 Mark Russinovich
Sysinternals - www.sysinternals.com
With contributions from Andrew Richards

Waiting for process named ProcDumpTestBench...

Process:               ProcDumpTestBench.exe (6556)
CPU threshold:         n/a
Performance counter:   n/a
Commit threshold:      n/a
Threshold seconds:     n/a
Number of dumps:       3
Hung window check:     Disabled
Exception monitor:     First Chance+Unhandled
Exception filter:      *System.NullReferenceException*
                       *System.InvalidOperationException*filtrez-moi*
Terminate monitor:     Disabled
Dump file:             D:\Temp\ProcDumpTestBench_YYMMDD_HHMMSS.dmp


Press Ctrl-C to end monitoring without terminating the process.

CLR Version: v4.0.30319

[13:49:05] Exception: E0434F4D.System.InvalidOperationException ("Operation is not valid due to the current state of the
object.")
[13:49:44] Exception: E0434F4D.System.NullReferenceException ("Object reference not set to an instance of an object.")

First-chance Exception.
Writing dump file D:\Temp\ProcDumpTestBench_130520_134944.dmp ...
Dump written.

[13:49:48] Exception: E0434F4D.System.NullReferenceException ("Filtrez-moi !")

First-chance Exception.
Writing dump file D:\Temp\ProcDumpTestBench_130520_134948.dmp ...
Dump written.

[13:49:50] Exception: E0434F4D.System.InvalidOperationException ("Filtrez-moi !")

First-chance Exception.
Writing dump file D:\Temp\ProcDumpTestBench_130520_134950.dmp ...
Dump written.

Dump count reached.

 

Ciblage de processus par nom de service Windows

Auparavant on ne pouvait spécifier la cible que par son nom de processus ou son ID.
Maintenant on peut aussi utiliser le nom de service, ce qui peut être pratique lors des sessions de debug d'un même service dont plusieurs instances se trouvent sur la même machine (exemple connu : SQL Server et ses instances nommées) : on évite ainsi de changer manuellement l'ID processus dans la ligne de commande ProcDump à chaque fois que le service démarre, car dans le cas d'instance multiples le nom du processus n'est pas pratique : toutes les instances du service portent le même nom de processus, seul le nom de service diffère.

Ce qui est dommage dans le cas présent c'est que le switch -w ne semble pas être supporté quand on spécifie un nom de service.
Pour rappel le switch -w nous permet de demander à ProcDump de se mettre en attente du démarrage de la cible si elle n'est pas encore disponible au lancement de la commande.

Le switch -w couplé à la spécification du nom de service pourrait nous permettre de debugger plus facilement les scénarios où le service rencontre une erreur au démarrage (ou très peu de temps après).

Dommage, mais j'espère que ce support viendra plus tard :-)

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: lundi 20 mai 2013 14:50 par coq
Classé sous : , ,

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Office 365: Nettoyage des versions de List Item avant migration depuis SharePoint On Premise vers SharePoint Online par Blog Technique de Romelard Fabrice le 08-08-2017, 15:36

- Office 365: Comment supprimer des éléments de liste SharePoint Online via PowerShell par Blog Technique de Romelard Fabrice le 07-26-2017, 17:09

- Nouveau blog http://bugshunter.net par Blog de Jérémy Jeanson le 07-01-2017, 16:56

- Office 365: Script PowerShell pour assigner des droits Full Control à un groupe défini par Blog Technique de Romelard Fabrice le 04-30-2017, 09:22

- SharePoint 20XX: Script PowerShell pour exporter en CSV toutes les listes d’une ferme pour auditer le contenu avant migration par Blog Technique de Romelard Fabrice le 03-28-2017, 17:53

- Les pièges de l’installation de Visual Studio 2017 par Blog de Jérémy Jeanson le 03-24-2017, 13:05

- UWP or not UWP sur Visual Studio 2015 ? par Blog de Jérémy Jeanson le 03-08-2017, 19:12

- Désinstallation de .net Core RC1 Update 1 ou SDK de Core 1 Preview 2 par Blog de Jérémy Jeanson le 03-07-2017, 19:29

- Office 365: Ajouter un utilisateur ou groupe dans la liste des Site collection Administrator d’un site SharePoint Online via PowerShell et CSOM par Blog Technique de Romelard Fabrice le 02-24-2017, 18:52

- Office 365: Comment créer une document library qui utilise les ContentTypeHub avec PowerShell et CSOM par Blog Technique de Romelard Fabrice le 02-22-2017, 17:06