【发布时间】:2018-05-10 04:35:46
【问题描述】:
我目前正在处理一个依赖于将 DLL 注入另一个进程的项目,因此 (AFAICT) 标准调试工具不起作用。我一直使用的是#define DEBUG(_msg) MessageBoxA(nullptr, _msg, "Debug", MB_OK)。
这有一个问题,它会阻止当前线程,直到我单击消息框,这会在某些地方搞砸我的代码和/或冻结我将 DLL 注入到的进程。
那么,我应该如何使用可以在其他地方查看的 Win32 API 打印调试消息,并立即继续运行代码?
【问题讨论】:
-
将其记录到一个文件中,并尾随该文件。
-
...我是个白痴哈哈
-
标准调试工具实际上可以正常工作,只是代替您的 DLL 使用注入的进程作为调试目标。而不是打印到常规控制台打印到调试器的跟踪窗口(在最低级别使用 OutputDebugString,尽管 msvc 对此有帮助)。
-
使用
OutputDebugString(),当目标进程不在调试器中运行时,使用SysInternals DebugView查看其消息
标签: c++ c windows debugging winapi