Dot.Blog

Consulting DotNet C#, XAML, WinUI, WPF, MAUI, IA

Utiliser dotnet monitor pour inspecter en temps réel une appli desktop

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 !

Faites des heureux, PARTAGEZ l'article !