繁体   English   中英

如何本地附加到python进程?

[英]How to attach to a python process natively?

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

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

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

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

在@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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM