CDB进程终止时在调试模式下崩溃,但是发布模式很好 关于释放模式为何起作用

问题描述

我的应用程序可以在 发布 模式下构建并正常运行。但是,在 Debug 模式下,我的应用程序崩溃了。尝试使用调试器查明崩溃原因时,会收到此类错误

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

Error screenshot

问题可能是什么原因造成的?

更新

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

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

我收到此消息:

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

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

Screenshot

更新

我正在使用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 +=
}

解决方法

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

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

关于释放模式为何起作用

我认为某些第三方应用程序已经向Maya PATH环境变量添加了tbb.dll。但是tbb_debug.dll不会由任何应用程序 添加到PATH。只是一个猜测...