我有一个使用ctypes和C-shared库(dll-file)的Python程序。作为IDE,我使用的是Eclipse,它将开发两个项目(C-shared库和使用它的python程序)。
我的想法是:当我在调试模式下启动Python程序时,我能以某种方式调试用C编写的共享库吗?含义:我可以设置断点,当Python程序到达共享库中的断点时,执行停止,我可以更改变量值等。
感谢您的帮助。
答案 0 :(得分:4)
实际上,在Eclipse中使用CDT和PyDev环境是一件相当简单的事情。
我假设您已经正确配置了项目,因此您可以单独构建和调试每个项目。
基本上,您只需要在Debug模式下启动Python项目,然后将CDT调试器附加到正在运行的python进程。为了使它更容易,我将尝试逐步描述它:
以调试模式运行Python项目。在使用ctypes加载dll之后的某处放置一个断点。记下创建的python进程的pid(你应该在控制台视图中看到第一行说明pid。例如:pydev debugger: starting (pid: 1234)
)
为CDT项目创建一个Debug配置,选择“C / C ++ Attach to Application”类型。您可以使用默认配置。
使用您创建的配置调试项目。应该出现一个窗口,询问您要附加到哪个进程。选择具有正确pid的python进程。
您现在可以向C代码添加断点。
您将在调试透视图中有两个调试器,就像它们是两个不同的进程一样。使用python调试器时,应始终确保C / C ++调试会话正在运行 - 只要C / C ++调试会话暂停,python调试器就会无响应。
答案 1 :(得分:2)
据我所知,不是在日食中。
然而,Visual Studio的Python工具具有以下功能:
https://pytools.codeplex.com/wikipage?title=Mixed-mode%20debugging
也可以免费获得。从Microsoft网站,您需要(以及Windows的副本)
1)Visual Studio(付费的Pro +版本或免费的Express版本(从2.1Beta开始))
2)PTVS扩展(这提供了VS Python支持)
3)Python解释器和Python库(这些不与PTVS捆绑在一起)
这意味着您可以并排调试python和c。调试器捕获用c编写的库的调用,前提是它们是由visual studio编译的符号。
请注意,混合模式调试的功能往往不太适合本机python,但它仍然能够使用常规本机调试器。