与 CUDA 库链接时无法在 Qt 创建器下调试 cpp 代码
Can't debug cpp code under Qt Creator when linking with CUDA libs
我在调试一个简单的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创建者3.2.2
CUDA v6.5
CPP编译器:VC++2013速成版
调试器:C:\Program Files(x86)\Windows Kits\8.1\Deggers\x86\cdb.exe
Qt 5.3.2(由VC++2013编译,32位)
我试着用VC++2010 Profesional做同样的事情,得到了同样的结果。
有人能给我一个建议吗?问题出在哪里
非常感谢。
这可能是因为您使用的是Visual Express 2013。这里说,CUDA v6.5没有对VS 2013 Express的编译器支持(在表2中。CUDA 6.5中的Windows编译器支持)您需要安装Visual Studio的完整版本。
相关文章:
- 创建进行生产构建并创建调试信息的C++生成文件的最佳方法?
- 在qt创建器中调试时如何访问字符串变量的完整值?
- 我能否通过 JNI 调试在本机代码中创建的 JVM?
- 如何在 OpenGL 中创建调试标记
- 如何为String_view创建(VC14)调试可视化器
- 由procexp(MS process explorer)创建的VC10调试转储文件-只有堆栈信息,没有变量值
- 创建对象时调试断言失败
- 在 QT 创建器"This does not seem to be a Debug build."中调试
- Qt Creator在指定的调试文件夹中创建调试和发布文件夹
- 如何在 c++ 中创建一个可调试的文件作用域(静态?)类
- C++-创建虚拟函数以打印调试消息的最佳方式
- gdb在调试中的应用程序崩溃时创建一个文件
- 如何在没有调试符号和优化的情况下创建 cmake 构建配置
- QCreator:如何创建调试构建配置
- 在调试器中创建 std::string
- 为什么Qt在Qt内部运行时或调试时不会创建文本文件,而是直接从调试文件夹创建文本文件
- 与 CUDA 库链接时无法在 Qt 创建器下调试 cpp 代码
- 为什么每当我创建一个新的C++项目时,Eclipse都默认为调试模式
- 代码::阻止不创建调试构建
- 为属性表创建调试友好的枚举