2014-11-26 20 views
5

Na Windows7 mam skrypt Pythona, który używa bibliotek DLL systemu Windows, przy użyciu .NET Common Language Runtime (CLR). Wystąpił błąd w jednej z używanych bibliotek DLL, ale standardowy debuger w języku Python debuguje tylko na poziomie kodu Pythona (a nie w bibliotece DLL).Jak debugować bibliotekę DLL systemu Windows używaną w języku Python?

Jak można debugować, co dzieje się wewnątrz DLL (s)?

+0

Używasz Visual Studio lub masz Visual Studio dostępne? – PaulMcKenzie

+0

Nie - czy zalecamy go zainstalować? Czy mogę następnie uruchomić mój kod w Visual Studio w celu debugowania kodu? – Alex

+2

Zainstaluj Visual Studio. Gdy to zrobisz, możesz łatwo debugować DLL (zakładając, że masz kod źródłowy, jeśli nie, musisz debugować język asemblerowy). – PaulMcKenzie

Odpowiedz

6

Jeśli masz Microsoft Visual Studio dostępne,

1) otwórz projekt Visual Studio, że DLL jest częścią (lub utworzyć nowy projekt).

2) Jeśli skonfigurowałeś bibliotekę DLL do debugowania (zbudowałeś ją z informacjami o debugowaniu i będzie to ta, której użyje twój program Pythona), możesz ustawić punkty przerwania w kodzie DLL.

3) Uruchom program, który chcesz debugować jak można zrobić normalnie.

4) Wróć do Visual Studio IDE i przejdź do menu Debug. Wybierz opcję Attach to Process. Otrzymasz listę wszystkich uruchomionych procesów.

5) wybrać proces, który ma do debugowania, który będzie swój program Python, lub czas pracy, na którym działa program.

6) Usiądź wygodnie i poczekaj na jeden z twoich punktów przerwania lub możesz wypróbować Break All z menu Debuguj, aby tymczasowo zatrzymać program.

Jest to ogólny sposób wychodząc debugowanie nie tylko programy Pythona, ale każdy program, gdzie trzeba debugowania DLL, który jest używany przez program.

Należy zauważyć, że powyższa opinia działa najlepiej jeśli mają wbudowane DLL się z informacji diagnostycznych i jest wykorzystywana przez aplikację Pythona. Jeśli jest to trzecia strona DLL, w której nie masz kodu źródłowego, możesz nadal debugować program Visual Studio, ale musisz znać język asemblera (ponieważ kod źródłowy zazwyczaj nie jest dostępny).

+0

Pamiętaj też (przynajmniej w 2017 r.), Aby wybrać Native z menu rozwijanego, jeśli debugowanie mówi standardową bibliotekę DLL C++, ponieważ domyślnie jest to "python". Zatrzymuje się przy pułapkach i we wszystkim. Schludny! Nie miałem pojęcia, że ​​możesz to zrobić. –

Powiązane problemy