Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何打印调试C++;Win32 DLL?_C++_C_Windows_Debugging_Winapi - Fatal编程技术网

C++ 如何打印调试C++;Win32 DLL?

C++ 如何打印调试C++;Win32 DLL?,c++,c,windows,debugging,winapi,C++,C,Windows,Debugging,Winapi,我目前正在从事一个依赖于将DLL注入另一个进程的项目,因此(AFAICT)标准调试工具无法工作。我一直在使用的是#define DEBUG(_msg)MessageBoxA(nullptr,_msg,“DEBUG”,MB_OK) 问题是,它会阻止当前线程,直到我单击消息框,消息框会在某些地方将我的代码搞砸和/或冻结我将DLL注入的进程 那么,我应该如何使用Win32 API打印调试消息,以便在别处查看,并立即继续运行代码?在Visual Studio中,可以调试正在运行的进程 在“调试”菜单中,

我目前正在从事一个依赖于将DLL注入另一个进程的项目,因此(AFAICT)标准调试工具无法工作。我一直在使用的是
#define DEBUG(_msg)MessageBoxA(nullptr,_msg,“DEBUG”,MB_OK)

问题是,它会阻止当前线程,直到我单击消息框,消息框会在某些地方将我的代码搞砸和/或冻结我将DLL注入的进程


那么,我应该如何使用Win32 API打印调试消息,以便在别处查看,并立即继续运行代码?

在Visual Studio中,可以调试正在运行的进程

在“调试”菜单中,查找“附加到进程”


然后可以像正常情况一样触发断点

将它记录到一个文件中,并跟踪该文件……我是个傻瓜,标准调试工具实际上可以很好地工作,只需使用注入的进程作为调试目标,而不是DLL。不要打印到常规控制台,而是打印到调试器的跟踪窗口(在最低级别使用OutputDebugString,尽管msvc对此有帮助的包装)。使用
OutputDebugString()
,并在目标进程未在调试器内运行时查看其消息