2014-11-26 11 views
5

Unter Windows7 habe ich ein Python-Skript, das Windows DLLs verwendet, mit der .NET Common Language Runtime (CLR). In einer der verwendeten DLL tritt ein Fehler auf, der Standard-Python-Debugger debuggt jedoch nur auf der Python-Codeebene (und nicht der DLL).Wie Debuggen einer Windows DLL, die in Python verwendet wird?

Wie kann ich debuggen, was in den DLL (s) vorgeht?

+0

Sind Sie Visual Studio oder tun verwenden Sie Visual Studio zur Verfügung haben? – PaulMcKenzie

+0

Nein - empfehlen Sie, es zu installieren? Kann ich meinen Code dann in Visual Studio ausführen, um den Code zu debuggen? – Alex

+2

Installieren Sie Visual Studio. Sobald Sie das tun, können Sie die DLL leicht debuggen (vorausgesetzt, Sie haben den Quellcode, wenn nicht, dann müssen Sie Assemblersprache debuggen). – PaulMcKenzie

Antwort

6

Wenn Sie Microsoft Visual Studio zur Verfügung haben, öffnen

1), um das Visual Studio-Projekt, das die DLL Teil (oder erstellen Sie ein neues Projekt ist).

2) Wenn Sie Ihre DLL für das Debuggen eingerichtet haben (Sie haben es mit Debugging-Informationen erstellt, und es wird diejenige sein, die Ihr Python-Programm verwendet), können Sie Breakpoints im DLL-Code setzen.

3) Starten Sie das Programm, das Sie debuggen möchten, wie Sie es normalerweise tun würden.

4) Gehen Sie zurück zur Visual Studio IDE und gehen Sie zum Menü Debug. Wählen Sie die Option Attach to Process. Sie erhalten dann eine Liste aller laufenden Prozesse.

5) Wählen Sie den zu debuggenden Prozess aus, der Ihr Python-Programm oder die Laufzeit ist, auf der das Programm ausgeführt wird.

6) Lehnen Sie sich zurück und warten Sie, bis einer Ihrer Haltepunkte getroffen wird, oder versuchen Sie Break All aus dem Debug-Menü, um das Programm vorübergehend anzuhalten.

Dies ist eine allgemeine Methode, um nicht nur Python-Programme zu debuggen, sondern jedes Programm, bei dem Sie eine DLL debuggen müssen, die vom Programm verwendet wird.

Beachten Sie, dass der obige Hinweis am besten funktioniert, wenn Sie die DLL selbst mit Debugging-Informationen erstellt haben und von Ihrer Python-Anwendung verwendet werden. Wenn es sich um eine DLL eines Drittanbieters handelt, in der Sie keinen Quellcode haben, können Sie immer noch von Visual Studio aus debuggen, müssen jedoch die Assemblersprache kennen (da der Quellcode normalerweise nicht verfügbar ist).

+0

Denken Sie auch daran (mindestens 2017), Native aus dem Dropdown auszuwählen, wenn Ihr Debuggen eine Standard-C++ - DLL sagt, die standardmäßig "python" lautet. Es stoppt an Haltepunkten und alles. Ordentlich! Ich hatte keine Ahnung, dass du das tun könntest. –