当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
The breakpoint will not currently be hit. No executable code of the debugger's target code type is associated with this file
调试一个cuda内核时遇到问题。然而,内核函数中的断点永远不会被触及。我试着删除这个项目并使用CMake重新生成,但它仍然不起作用。核心代码如下:
__global__ void testKernel(int val)
{
printf("[%d, %d]:ttValue is:%dn",
blockIdx.y*gridDim.x + blockIdx.x,
threadIdx.z*blockDim.x*blockDim.y + threadIdx.y*blockDim.x + threadIdx.x,
val);
}
我认为这个问题与核心代码无关,而是与这个项目的配置有关。因为这个内核可以在CUDA Samples项目中进行调试。
我使用Debug
->Windows
->Modules
,发现我的目标.lib
未加载。当我选择CUDA Thread
时,Break Mode
显示:
您的应用程序已进入中断状态,但当前没有所选调试引擎支持的代码在执行(例如,只有一个本地运行时代码在执行)。
这是因为使用nvcc
编译器编译.cu
文件时缺少-g
。CMakelists.txt中的原始CUDA_NVCC_FLAGS
为:
SET(CUDA_NVCC_FLAGS${CUDA_NVC_FLAGS};-gencode arch=compute_75,code=sm_75;)
修正后:
SET(CUDA_NVCC_FLAGS${CUDA_NVC_FLAGS};-g;-g;-gencode arch=compute_75,code=sm_75;)
现在,我们可以使用Nsight来调试内核函数。
相关文章:
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 类没有命名C++代码中的类型错误
- 当无法使用模板和宏时,生成类型变体C++代码的最简单方法是什么?
- 扩展C++生成的代码的模板参数类型名称
- 有没有办法通过使用十进制 ASCII 代码自动类型扣除来获取字符?
- 我在 C++ 代码中遇到错误警告:控制到达非空函数 [-Wreturn 类型] 的末尾
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- 提供对不同类型的数据(建议、代码审查)的线程安全访问的类
- 当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
- 我的代码中是否有任何类型的错误,因为它没有给出正确的输出
- 用于C++代码的 API 监视器类型定义 (XML)
- 避免使用 std::any 编写相同的重复类型检查代码
- turbo 为什么我的C++代码中出现错误类型名称预期"错误?
- 具有相同数据类型代码的相同逻辑代码在 Java 中传递,但不在 C++ 中传递?
- 如何在数组类型的模板代码中计算std::size_t
- 将-Wtype限制与类型泛型代码一起使用
- 将fwrite转换为C++类型代码以写入二进制文件
- 当没有浮点数据类型时,为什么此代码会出现浮点异常
- 该文件中的代码类型*.cpp #define mdTyVzgFy4_0UFy9GimmM
- C++ 代码类型替换失败