2016-10-30 1 views
1

Je veux savoir s'il existe un moyen d'utiliser C# pour ouvrir un écran de vidage sur écran bleu + symboles de chargement, afin de récupérer la pile de mémoire.Utilisation de C# pour récupérer la pile du fichier de vidage écran bleu

Je sais comment le faire manuellement en utilisant le programme windbg, donc s'il y a un moyen de se connecter à Windbg en utilisant C# qui pourrait aussi résoudre le problème.

Est-ce que quelqu'un sait comment extraire la pile de mémoire en utilisant C# ou se connecter à Windbg en utilisant C#?

Merci!

+0

Windbg utilise Windows System dll pour extraire le cliché. Vous pouvez donc aller sur www.pinvoke.net pour obtenir les interfaces C# avec les dll Windows. Vous pouvez faire une recherche sur pinvoke pour le débogage. – jdweng

+0

Vous pouvez toujours créer un fichier de script WinDbg (https://msdn.microsoft.com/fr-fr/library/windows/hardware/ff560137 (v = vs.85) .aspx), puis utiliser C# pour créer un processus avec la ligne de commande 'windbg -cf myscript.txt -logo mylogfile.txt' et ensuite analyser' mylogfile.txt' en utilisant votre méthode C# préférée. –

+1

J'utiliserais l'option de script. L'option P/Invoke est difficile pour les interfaces du débogueur. –

Répondre

0

Merci pour votre aide, mais je trouve un moyen beaucoup plus facile à utiliser il ... Depuis Windbg peut être exploité en utilisant cmd, il était assez difficile de trouver et de comprendre les commandes, mais j'ai réussi à l'utiliser en utilisant cmd. Après cela, il est possible d'envoyer des commandes cmd depuis C#, donc j'ai simplement envoyé la commande en utilisant C#, et j'ai écrit les résultats dans un fichier en utilisant la commande -logo de Windbg. Donc, en lisant le fichier, je pourrais analyser les résultats et extraire les choses que je veux.

Merci pour toute l'aide!

0

Je ne connais aucune solution C#, mais PyKd (Python) peut faire ce que vous voulez. Alors que je l'utilise principalement PyKd comme un plugin pour WinDbg,

Il est un module Python et peut être utilisé dans un script Python

donc il n'y a pas besoin de WinDbg. Cependant, certaines commandes peuvent ne pas fonctionner de la même manière que dans WinDbg, par exemple, dans le cas de WinDbg. dbgCommand() va essayer d'exécuter une commande du débogueur, ce qui n'est probablement pas possible si vous travaillez sans WinDbg.

De votre description, vous aurez besoin de loadDump(), closeDump(), setSymbolPath() et setCurrentProcess(). Il existe des classes pour les processus et les threads et la propriété sp (pointeur de pile) peut être utile.