【问题标题】:Debug delayed load dll调试延迟加载dll
【发布时间】:2021-05-06 14:37:59
【问题描述】:

我正在使用 Eclipse 和 Cygwin-GCC 创建一个 DLL 文件。然后,这个 DLL 由我没有来源的第三方应用程序执行。我只是运行它,有时它会从我的 DLL 中执行一个函数。

是否可以使用 Eclipse 将 Cygwin-GDB 附加到第三方进程以仅调试我自己的 DLL 文件? 据我所知,Visual Studio 可以将其调试器附加到进程。 Visual Studio 能够开箱即用地做我想做的事吗? 这也可以通过 Eclipse 以某种方式实现吗?

请帮忙。

【问题讨论】:

    标签: c++ debugging dll eclipse-cdt remote-debugging


    【解决方案1】:

    回答您的部分问题:是的,Visual Studio 可以开箱即用地做您想做的事情...前提是您在执行代码之前附加到进程。我不是 Eclipse 的忠实粉丝,所以我不使用它,也无法告诉你它是否能够附加到已经运行的进程。

    无论您使用什么调试器...由于它会延迟加载,您可以在入口点添加一些内容,例如:

    BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
    {
        switch (ul_reason_for_call)
        {
            case DLL_PROCESS_ATTACH:
    #if ALERT_ATTACH_DEBUGGER
                ::MessageBox("Attach debugger now!", "Debug Alert", MB_OK);
    #endif
            case DLL_THREAD_ATTACH:
            case DLL_THREAD_DETACH:
            case DLL_PROCESS_DETACH:
                break;
        }
    
        return TRUE;
    }
    

    当您的消息框出现时,在列表中找到主机进程并附加...之后,您在代码中设置的任何断点都将起作用。

    【讨论】:

    • 谢谢。我会尝试这种方式,但仍然希望使用 Eclipse 的方式来做到这一点。
    猜你喜欢
    • 2010-11-26
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    相关资源
    最近更新 更多