![](/img/trans.png)
[英]How to attach a value to the multiprocessing.current_process() in 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.