2012-11-01 11 views
6

Mam projekt C++ z wygenerowanym przez SWIG pakietem front-end Pythona, który buduję przy użyciu CMake. Próbuję teraz znaleźć wygodny sposób debugowania mojego mieszanego kodu Python/C++. Jestem w stanie uzyskać ślad stosu błędów za pomocą gdb, ale chciałbym mieć więcej ciekawych funkcji, takich jak możliwość przechodzenia przez kod i ustawianie punktów przerwania, na przykład za pomocą Eclipse.Debugowanie mieszanego kodu Python/C++ w Eclipse

Korzystanie z generatora Eclipse dla CMake Jestem w stanie wygenerować projekt, który jestem w stanie zaimportować do Eclipse. To działa dobrze i jestem w stanie przejść przez czysty plik wykonywalny C++. Ale wtedy zaczyna się problem.

Po pierwsze, nie jestem w stanie zbudować front-endu Python od wewnątrz Eclipse. Z wiersza poleceń po prostu robię "make python", ale nie ma docelowego "python" w projekcie Eclipse.

Po drugie, gdy skompilowałem front-end Pythona, nie mam pojęcia, jak przejść przez skrypt Pythona, który zawiera wywołania do moich zawiniętych klas C++. Eclipse ma debugowanie zarówno dla Pythona, jak i C++, ale czy można je łączyć?

+0

Jeśli nie jesteś konkretnie związany z Eclipse (z powodu osobistych preferencji lub potrzeby uruchomienia na systemie Linux lub OS X), Python Tools for Visual Studio 2.0 beta ma dokładnie opisaną funkcję: https: // pytools .codeplex.com/wikipage? title = Mixed-mode% 20debugging –

Odpowiedz

2

kilka zaawansowane funkcje, takie jak zdolność do krokowego kodu i ustawić punkty przerwania, na przykład przy użyciu Eclipse

jak są te cechy „fantazyjne”? Możesz już robić te w pdb dla Pythona lub gdb dla C++.

Proponuję uruchomić kod Pythona za pomocą pdb (lub używając pdb.set_trace(), aby przerwać wykonywanie w interesującym punkcie), i dołączyć gdb do procesu w oddzielnym terminalu. Użyj pdb, aby ustawić punkty przerwania i krok po kroku, twój kod Pythona. Użyj gdb, aby ustawić punkty przerwania i krok po kroku, twój kod C++. Gdy pdb przejdzie przez połączenie natywne, przejmie gdb. Gdy gdb continue umożliwia wznowienie wykonywania Pythona, przejmuje pdb.

To powinno pozwolić ci przeskakiwać pomiędzy punktami przerwania C++ i Python bez potrzeby śledzenia przez interpreter.


Zastrzeżenie: ja w dużej mierze myśleć IDE są śmieci bloatware, więc jeśli Eclipse robi mieć dobry sposób na integrację tego, nie wiem o tym tak.

+1

Wielkie dzięki za tę przydatną wskazówkę. Wypróbuję to. Ponieważ oryginalne pytanie (dotyczące Eclipse) nie zostało jeszcze odebrane, nie zaznaczę tego jako odpowiedzi. Dzięki jeszcze raz! – Joel

Powiązane problemy