【问题标题】:how to debug a release如何调试发布
【发布时间】:2021-09-23 18:13:21
【问题描述】:

我有一个使用 libcurl 发送 HTTP 请求的调试 .dll 构建,一切正常。

随着发布,使用我的.dll的程序不喜欢它,程序制造商推荐 将 libcurl.dll 设为延迟加载,并调用 LoadLibrary

所以我这样做了 LoadLibrary(TEXT("C:\\Users\\user\\Documents\\VirtualDJ\\Plugins64\\SoundEffect\\libcurl.dll")); 并指出 Linker>input> 将加载的 dll 延迟到 libcurl.dll [字面意思]

它使插件再次兼容,但我不再获得通信。 我不确定如何继续。

我的 LoadLibrary 语法是否正确? 有人告诉我调试版本,我遵循了所有这些属性更改 https://docs.microsoft.com/en-us/cpp/build/how-to-debug-a-release-build?view=msvc-160 但我不明白您将如何运行该版本。

我对此很陌生,所以解释得越简单越好。 C++ Visual Studio 19

【问题讨论】:

  • 确保所有编译的 dll 都使用 abi 兼容选项(如调试迭代器)编译

标签: c++ visual-studio-debugging


【解决方案1】:

根据https://docs.microsoft.com/en-us/cpp/build/reference/linker-support-for-delay-loaded-dlls?view=msvc-160 的说法,延迟加载的 dll 有细微差别,您应该考虑这些细微差别。我没有使用这个,但我使用LoadLibrary/GetProcAdress/FreeLibrary 总是没有任何问题,所以我建议你尝试这种方式。 您可以尝试在 WinDbg 中调试版本。只需要设置源代码和 PDB 文件的路径。有时 WinDbg 可能比 Visual Studio 更有用。更多WinDbg详情https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-23
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多