如何本地附加到python进程?

时间:2019-01-03 20:08:57

标签: python c++ windows debugging breakpoints

通过ctypes从Python进行C互操作使用了一个C ++ DLL。在某个时候,C ++程序意识到需要对其进行调试。在这种情况下,我试图调用__debugbreak(),但是Python进程只是终止了。

我该如何调试Python使用的C ++ DLL?

有很多细节,我不确定还能提供什么-请在评论中提问。

更新:当前目标平台是Windows。我不能简单地通过Visual Studio附加到Python进程,因为一切都会很快发生。因此,也许我需要在Python进程中引入一个暂停...但是,这看起来并不是一个很好的选择。我宁愿解决Python在调用__debugbreak()

后终止的问题

1 个答案:

答案 0 :(得分:0)

在@RbMm的评论之后,这是一个对我来说似乎最方便的解决方案。

在C ++代码中编写以下函数,并使其可从Python调用:

#include <windows.h>
#include <string>

__declspec(dllexport) void debug_break() {
    if(!IsDebuggerPresent()) {
        std::string message("The application has requested a debug for process ID=");
        message += std::to_string(GetCurrentProcessId());
        MessageBoxA(nullptr, message.c_str(), "Attach Debugger", 0);
    }
    __debugbreak();
}