通过ctypes
从Python进行C互操作使用了一个C ++ DLL。在某个时候,C ++程序意识到需要对其进行调试。在这种情况下,我试图调用__debugbreak()
,但是Python进程只是终止了。
我该如何调试Python使用的C ++ DLL?
有很多细节,我不确定还能提供什么-请在评论中提问。
更新:当前目标平台是Windows。我不能简单地通过Visual Studio附加到Python进程,因为一切都会很快发生。因此,也许我需要在Python进程中引入一个暂停...但是,这看起来并不是一个很好的选择。我宁愿解决Python在调用__debugbreak()
答案 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();
}