Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.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++ 调试延迟加载dll_C++_Debugging_Dll_Eclipse Cdt_Remote Debugging - Fatal编程技术网

C++ 调试延迟加载dll

C++ 调试延迟加载dll,c++,debugging,dll,eclipse-cdt,remote-debugging,C++,Debugging,Dll,Eclipse Cdt,Remote Debugging,我正在使用Eclipse和Cygwin GCC创建一个DLL文件。这个DLL然后由我没有源代码的第三方应用程序执行。我只是运行它,有时它会从我的DLL执行一个函数 是否可以使用Eclipse将Cygwin GDB附加到第三方进程以调试我自己的DLL文件? 据我所知,VisualStudio可以将其调试器附加到进程。VisualStudio能够在开箱即用的情况下做我想要的事情吗? Eclipse也能实现这一点吗 请帮助。回答您的部分问题:是的,Visual Studio可以在开箱即用的情况下做您想

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

是否可以使用Eclipse将Cygwin GDB附加到第三方进程以调试我自己的DLL文件? 据我所知,VisualStudio可以将其调试器附加到进程。VisualStudio能够在开箱即用的情况下做我想要的事情吗? Eclipse也能实现这一点吗


请帮助。

回答您的部分问题:是的,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;
}

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

回答您的部分问题:是的,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;
}

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

Thx。我会这样尝试,但仍然希望有一个Eclipse的方式来做。Thx。我会这样尝试,但仍然希望有一个Eclipse的方式来做。