【问题标题】:Crash in debug mode along with CDB process termination, but release mode is fine调试模式下崩溃以及 CDB 进程终止,但发布模式很好
【发布时间】:2020-10-03 07:58:26
【问题描述】:

我的应用程序在 Release 模式下构建并运行良好。但是,在 Debug 模式下,我的应用程序崩溃了。尝试使用调试器查明崩溃原因时,收到这样的错误:

Qt Creator 意外退出 CDB CDB 进程终止

问题可能是什么原因?

更新

我在 Debug 模式下构建并部署了应用程序,然后尝试通过以下命令运行可执行文件:

C:\Users\m3\Documents\deployment_folder>.\application.exe

我收到了这条消息:

无法继续执行代码,因为找不到tbb_debug.dll。重新安装程序可能会解决此问题。

由于某种原因,tbb.dll 可以在 Release 模式下找到,但 tbb_debug.dlldebug 模式下找不到。尽管所有 TBB DLL 都在同一个目录中。不知道为什么...

更新

我正在使用 QMake 将 TBB 添加到我的项目中,如下所示:

INCLUDEPATH += deps/tbb-2020.3-win/tbb/include

# Looks like absolute path works for LIBS, but NOT relative path
win32: CONFIG (release, debug|release): {
    LIBS += -LC:\Users\m3\repos\myapp\deps\tbb-2020.3-win\tbb\lib\intel64\vc14 \
            -ltbb \
            -ltbb_preview \
            -ltbbbind \
            -ltbbmalloc \
            -ltbbmalloc_proxy \
            -ltbbproxy
} else: win32: CONFIG (debug, debug|release): {
    LIBS += -LC:\Users\m3\repos\myapp\deps\tbb-2020.3-win\tbb\lib\intel64\vc14 \
            -ltbb_debug \
            -ltbb_preview_debug \
            -ltbbbind_debug \
            -ltbbmalloc_debug \
            -ltbbmalloc_proxy_debug \
            -ltbbproxy_debug
} else: unix: { # Linux and mac
    # TODO: add correct path to LIBS +=
}

【问题讨论】:

    标签: qt qt-creator release-mode debug-mode


    【解决方案1】:

    问题已通过手动复制应用程序可执行文件旁边的 TBB DLL 得到解决。

    ... /tbb-2020.3-win/tbb/bin/intel64/vc14/*.dll 复制到可执行位置。

    为什么发布模式有效

    我认为某些 3rd 方应用程序已经将 tbb.dll 添加到可能的 PATH 环境变量中。但是tbb_debug.dll没有被任何应用程序添加到 PATH 中。只是猜测......

    【讨论】:

    • 您没有将文件添加到 PATH 环境变量中,而是添加了一个文件夹。如果两个 dll 都在同一个文件夹中,但没有找到调试 dll,那么我唯一能想到的就是应用程序是由具有不同 PATH 的不同用户启动的。如果您想确定根本原因,请从 sysinternals 下载 procmon 并让它监视您的发布和调试构建。您应该能够找到发布构建 dll 的加载位置以及它搜索调试 dll 的位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    相关资源
    最近更新 更多