Lorsqu'on développe une application desktop en .NET (WinUI, WPF, WinForms), il peut être difficile de diagnostiquer certains comportements ou problèmes de performance. L’outil dotnet monitor, fourni par Microsoft, permet d’obtenir des diagnostics détaillés en temps réel, sans modifier le code source ni interrompre l’application.
Ce guide montre comment installer et utiliser dotnet monitor pour observer une application desktop .NET 9 localement.
🛠️ Prérequis
- SDK .NET 9+ installé
- Une application desktop .NET (WinUI, WPF ou WinForms)
- Terminal ou PowerShell
📦 Étape 1 – Installer dotnet monitor
Depuis le terminal :
dotnet tool install --global dotnet-monitor
Vérification :
dotnet-monitor --version
🚀 Étape 2 – Lancer votre application avec monitoring
Lancez votre application normalement (depuis Visual Studio ou en ligne de commande).
Puis, dans un terminal séparé :
dotnet-monitor collect --process-id <PID>
Remplacez <PID> par l’identifiant de processus de votre application desktop. Vous pouvez l’obtenir via le Gestionnaire des tâches, ou :
dotnet-trace ps
🧪 Étape 3 – Diagnostic en direct via l’API HTTP
Par défaut, dotnet monitor expose une API web locale :
http://localhost:52323
Accédez dans un navigateur à :
- /processes : liste des processus observables
- /metrics : métriques temps réel (CPU, GC, etc.)
- /logs : flux de logs en direct
- /dump : capture d’un dump mémoire
- /trace : démarrage d’une trace runtime (.nettrace)
📈 Étape 4 – Exemple de métriques Prometheus
Extrait de métriques :
dotnet_gc_heap_size_bytes{process_name="MonApp.exe"} 131072
process_cpu_usage_percent{process_id="12345"} 6.5
Vous pouvez les exploiter dans un tableau de bord (Grafana, etc.).
📁 Étape 5 – Exporter un dump mémoire à chaud
curl http://localhost:52323/dump -o dump.dmp
Fichier analysable dans Visual Studio (menu Déboguer > Ouvrir un dump).
⚙️ Options avancées
- Lancer en mode service : dotnet-monitor collect --diagnostic-port <port>
- Configurer un dotnet-monitor.json pour la collecte continue
- Exporter automatiquement les logs, traces, ou dumps à certains seuils
✅ Conclusion
dotnet monitor permet d’inspecter une application .NET desktop en production ou en développement sans modifier son code. Il constitue un outil indispensable pour les développeurs souhaitant observer la santé d’un processus en temps réel, capturer un état mémoire ou profiler les performances.
Stay Tuned !