【问题标题】:dbgeng - load extension dlls in c++?dbgeng - 在 C++ 中加载扩展 dll?
【发布时间】:2011-05-12 10:43:08
【问题描述】:

我编写了一个应用程序,其中我使用 dbgeng.dll 加载了一个系统范围的故障转储。我想使用一些 WinDbg 命令,如 (!vad) - 为此我需要其他 dll,如 exts.dll、ext.dll、kext.dll、kexts.dll。我有所有这些 dll 并正确设置了我的 _NT_DEBUGGER_EXTENSION_PATH。当我使用 WinDbg GUI 时 - .chain 命令告诉我所有这些 dll 都已加载,但是当我尝试从我的代码中执行此操作时 - 我看不到这些 dll 已加载。此外,当我尝试使用 Execute (.load....) 加载这些 dll 时 - 它会引发错误 - “对 LoadLibrary('...') 的调用失败,Win32 错误 0n193”。我也试过 !load - 它们都在我的代码中不起作用。但一切都在 GUI 中完美运行。我无法弄清楚如何在我的 c++ 代码中加载所有这些 dll。

有人可以帮我吗? 非常感谢您的帮助!

-套利

【问题讨论】:

    标签: dll load windbg dbgeng


    【解决方案1】:

    错误 193 如果您收到错误 193,通常意味着您正在尝试在 32 位应用程序中加载 64 位 dll(反之亦然)。

    确保从安装 windbg 的同一目录加载 dbgeng.dll。然后你就可以通过IDebugControl::Execute使用所有windbg命令了

    【讨论】:

    • 谢谢约翰。我正在尝试强制从该文件夹加载 dll,但它仍然从我不想要的系统文件夹加载。如果我在我的代码中使用 SetDllDirectory .. 该 dll 仍然从​​系统目录加载... 因为在设置 dll 目录之前加载了 dll - 你有什么解决方案吗??
    • 使用 LoadLibrary 动态加载,并使用 GetProcAddress 获取 DebugCreate。
    • John,我正在尝试使用 dbgeng.dll(64 位)在 Windows Server 2008 R2 中调试 32 位 win7 故障转储。我在处理符号文件时遇到问题。每当我这样做时!vad - 它无法读取 VAD 树,因为它无法找到符号,尽管我已将 ntdll.pdb 和 ntkrpamp.pdb 从 VM 复制到服务器的本地目录并且我指向它.你知道可能是什么问题吗?我将衷心感谢您的帮助。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多