【问题标题】:How can I print debug a C++ Win32 DLL?如何打印调试 C++ Win32 DLL?
【发布时间】: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


【解决方案1】:

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

在 Debug 菜单中查找 Attach to process。

然后可以正常触发断点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多