【问题标题】:Can't debug cpp code under Qt Creator when linking with CUDA libs与 CUDA 库链接时无法在 Qt Creator 下调试 cpp 代码
【发布时间】:2014-11-28 03:08:52
【问题描述】:


我在调试一个简单的 cpp 代码时遇到了问题(它调用了一些 CUDA 函数,如 cuInit()、cuDeviceGetCount()..)。当我在 CPP 代码中设置断点并开始调试时,我收到以下消息:

这似乎不是“调试”版本。

当我删除所有 CUDA 调用并且不将程序与 cuda.lib 和 cudart.lib 链接时,代码是可调试的(可以在断点处停止程序并且不显示错误消息)。

这是我的 CPP 代码:

#include <QtCore/QCoreApplication>
#include <QDebug>
#include <cuda.h>
#include <builtin_types.h>

int main(int argc, char* argv [])
{
    QCoreApplication(argc, argv);
    int deviceCount = 0;
    int cudaDevice = 0;
    char cudaDeviceName [100];
    cuInit(0);
    cuDeviceGetCount(&deviceCount);
    cuDeviceGet(&cudaDevice, 0);
    cuDeviceGetName(cudaDeviceName, 100, cudaDevice);
    qDebug() << "Number of devices: " << deviceCount;
    qDebug() << "Device name:" << cudaDeviceName;
}

这是我的 .pro 文件:

QT       += core
QT       -= gui

TARGET = cudatest
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app
SOURCES += main.cpp    

#################################
# Begin CUDA configuration

win32 {
    CUDA_PATH = "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v6.5"
    CUDA_INC_DIR = $$CUDA_PATH/include
    contains(QMAKE_TARGET.arch, x86_64) {
        SYSTEMNAME = x64
        SYSTEMTYPE = 64
    } else {
        SYSTEMNAME = Win32
        SYSTEMTYPE = 32
    }
    CUDA_LIB_DIR = $$CUDA_PATH/lib/$$SYSTEMNAME
    QMAKE_CXXFLAGS_RELEASE -= -MD
    QMAKE_CXXFLAGS_RELEASE += -MT
    QMAKE_CXXFLAGS_DEBUG -= -MDd
    QMAKE_CXXFLAGS_DEBUG += -MTd
}

INCLUDEPATH +=  $$CUDA_INC_DIR
LIBS += -L$$CUDA_LIB_DIR -lcuda -lcudart

#End CUDA configuration
########################

环境:

Qt Creator 3.2.2
CUDA v6.5
CPP 编译器:VC++ 2013 Express
调试器:C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\cdb.exe
Qt 5.3.2(VC++ 2013编译,32位)

我尝试对 VC++ 2010 Proffesional 执行相同的操作,但结果相同。

谁能给我一个建议,可能是哪里出了问题?
谢谢。

【问题讨论】:

    标签: c++ qt debugging cuda


    【解决方案1】:

    这可能是因为您使用的是 Visual Express 2013。它说here 没有编译器支持 VS 2013 Express for CUDA v6.5(在表 2 下。CUDA 6.5 中的 Windows 编译器支持)您需要安装Visual Studio 的完整版本。

    【讨论】:

    • 现在我正在尝试在 Qt Creator 3.3 + VC++2010 Professional 和 VC++2013 Community 下编译,结果相同:(
    • 你的问题是cuda根本无法编译,还是无法调试?
    • 我的问题是,我无法在 Qt Creator 下调试。
    • 我尝试在 VC++2013 社区下直接编译和调试,它可以工作。我的 Qt Creator 使用 VC++2013 编译器和 MS 调试器(C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\cdb.exe)。
    • 在我看来,当它已被弃用时,您正在尝试编译 32 位。在我上面发布的同一链接上:“不推荐使用在 x86_32 上使用 CUDA 工具包进行本地开发。仍然支持在 x86_32 上使用 CUDA 驱动程序部署和执行 CUDA 应用程序。要创建 32 位 CUDA 应用程序,请使用交叉开发功能x86_64 上的 CUDA 工具包。”
    猜你喜欢
    • 2010-11-10
    • 2023-03-25
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    相关资源
    最近更新 更多