Existe-t-il un moyen dans .NET (VB.NET ou C #), lorsqu’une exception se produit, de vider le stacktrace de chaque thread? En gros, j’aimerais reproduire ce qui se passe dans la fenêtre Debug-> Threads de Visual Studio pour voir ce que faisait chaque thread lorsque l’exception s’est produite.
Si vous voulez obtenir des traces de stack de tous les threads dans le code managé, vous pouvez essayer mdbg . Jetez un coup d’œil à Managed Stack Explorer, il utilise mdbg et récupère les stacks de tous les threads.
Des questions similaires ont déjà été posées sur StackOverflow (comme on le voit ici et ici ) et d’autres forums. Ces discussions précédentes avaient pour objective d’obtenir une liste de tous les threads en cours d’exécution, mais si vous disposiez de ces informations, il serait sortingvial d’obtenir une trace de stack pour chacun.
La conclusion constante est qu’il n’existe pas de moyen de le faire dans .NET et qu’il est nécessaire de rechercher un outil externe construit à partir d’API de débogage, comme dans l’exemple de Naveen cité plus haut.