2013-04-22 13 views
6

Używam Pythona z kompilowanymi rozszerzeniami Cython i Fortran (zapakowanymi przy użyciu najnowszego modułu Fortran'a iso_c_binding i Cython) do skracania numerów.Debugowanie Pythona ze skompilowanymi rozszerzeniami

Do tej pory nie mam wygodnej strategii debugowania. Używam pudb dla części Python. Chociaż mogę być w stanie używać gdb w części projektu Fortran Cython &, uważam, że zamiast tego używam wyjścia tekstowego konsoli (print()!).

Chciałbym wiedzieć, czy istnieją narzędzia, które sprawiają, że różne poziomy kodu są przezroczyste do debugowania, tzn. Szukam rozwiązania "one-tool-debugs-it-all", które nie ma znaczenia, czy wykonuje kod Python, Cython lub Fortran.

Wolałbym narzędzia, które pozwalają na przyjazne dla użytkownika interakcje, takie jak wspomniany wcześniej pudb. Czy istnieje takie narzędzie do debugowania wszystkich transakcji? Czy Python mode of GDB jest najlepsze, co mogę dostać?

+1

Niestety nie mam dla Ciebie rozwiązanie, ale używam GDB dla dokładnie co opisujesz. Szukałem również lepszego rozwiązania bez powodzenia. – thebigdog

Odpowiedz

5

Możesz użyć Cython debugger, który rozszerza gdb o nowe polecenia, które rozpoczynają się cy. Pozwalają one na przejście przez kod języka Cython, ustawianie punktów przerwań, inspekcję lokalnych itd. I nadal działają tak, jak polecenia py z trybu Python GDB, gdy znajdujesz się w ramce Pythona. Niestety nie ma wsparcia Fortran.

+0

To dobra rada na początek! Czy istnieją graficzne nakładki, które działają z 'cygdb'? Nie mogłem znaleźć żadnego. Ponadto dziwne jest uruchamianie 'cygdb' w katalogu kompilacji. – AlexE

+1

Możesz wypróbować 'ddd --pydb --debugger cygdb' lub' ddd --gdb --debugger cygdb', aby 'ddd' uruchomić' cygdb' i udawać, że jest to 'gdb' lub' pydb'. Nie wiesz, jaką masz funkcjonalność. – r3m0t

+0

Nie jestem zaznajomiony z 'ddd', ale przynajmniej podstawowe zasady działają (o ile nie wchodzę w funkcje systemowe). Dostaję tę samą wizualizację, klikając zmienne, więc dodaje się wartość do linii poleceń. Wygląda na to, że tak długo, jak używane są procedury Fortran skompilowane z symbolami debugowania, możliwe jest również wejście do kodu Fortran! Teraz muszę tylko poznać 'ddd'. Dziękuję Ci! – AlexE

Powiązane problemy