Automatisation de la création des Dump Files pour des cas d'Application Hangs avec PowerShell

 



Pour générer un fichier de vidage (dump file) pendant le fonctionnement du système d'exploitation afin de capturer le moment où une application se bloque, vous pouvez utiliser PowerShell. Cette méthode vous permet d'automatiser la création de fichiers de vidage pour les processus qui ne répondent pas. Voici les étapes à suivre :

Identifier le processus

D'abord, vous devez identifier le processus de l'application qui se bloque. Utilisez la commande suivante pour lister tous les processus en cours d'exécution :


Get-Process




Repérez le nom ou l'ID du processus de l'application en question.


Si vous connaissez le nom du process lors de l'exécution de l'application, voici une commande qui vous permettra de lister le nom et le PID du process de l'application.

Get-Process | Where-Object {$_.ProcessName -eq "olk"} | Select-Object ProcessName, Id

Dans l'exemple ci-dessous, on va lister le PID de "New Outlook" (olk.exe)



Utilisation de Procdump

Procdump est un outil de ligne de commande de sysinternals que vous pouvez utiliser pour créer des fichiers de vidage. Si vous ne l'avez pas déjà, téléchargez-le depuis le site officiel de Sysinternals.

Une fois Procdump téléchargé, vous pouvez l'utiliser pour surveiller votre application et générer un fichier de vidage au moment où elle se bloque. Supposons que votre application ait pour ID de processus 1234, la commande serait :


procdump -ma 22812 -e -h chemin_du_dossier_de_destination

Si vous voulez générer le fichier dump sur le même dossier où se trouve procdump.exe ajoutez un point à la place du chemin de destination, pour dire que c'est dans le même répertoire ou s'exécute procdump.





Dans cette commande :
- '-ma' indique à Procdump de créer un fichier de vidage complet.
- '-e' configure Procdump pour qu'il se déclenche lors d'une exception non gérée.
- '-h' permet à Procdump de se déclencher si l'application se bloque (ne répond pas).

`chemin_du_dossier_de_destination` doit être remplacé par le chemin où vous souhaitez enregistrer le fichier de vidage.

Utilisez la commande ci-dessous si l'application prend anormalement plus de temps (dans ce cas, 60 secondes) pour effectuer un traitement qui devrait normalement être plus rapide.

.\procdump.exe -ma 22812 -s 60 -n 10 .

Résultat de la deuxième commande.

Dans cette commande, Procdump créera une vidange du processus toutes les 60 secondes, jusqu'à un total de 10 fichiers dump.




3. Automatiser avec PowerShell

Pour automatiser ce processus avec PowerShell, vous pouvez créer un script PowerShell qui surveille l'application en continu et exécute `Procdump` lorsqu'elle détecte un blocage. Voici un exemple de script :


$processId = 1618 # Remplacez 1234 par l'ID de votre processus
$destinationPath = "C:\Dumps" # Remplacez par votre chemin de destination

# Vérifiez si le dossier de destination existe, sinon créez-le
If (!(Test-Path -Path $destinationPath )) {
    New-Item -ItemType Directory -Force -Path $destinationPath
}

# Exécutez Procdump
procdump.exe" -ma $processId -e -h $destinationPath


Assurez-vous d'exécuter le script dans le répertoire ou `Procdump.exe` est situé sur votre système.





Enregistrer un commentaire

Plus récente Plus ancienne