繁体   English   中英

如何在 VIsual Studio Code 中调试 cmake 构建的 CUDA 程序?

[英]How to debug a CUDA program built by cmake in VIsual Studio Code?

我正在尝试在 Ubuntu 20 中使用 VS CODE、CMake 调试测试程序。我主要参考了 CUDA 调试器文档: https ://docs.nvidia.com/nsight-visual-studio-code-edition/cuda-debugger /index.html 但是,我不确定如何在基于 CMake 的项目中编写正确的 launch.json。 这是我的 CMakeLists.txt

cmake_minimum_required(VERSION 3.2)
project(cudaDebug CXX CUDA)
find_package(CUDA REQUIRED)
add_executable(main main.cu)

这是我的 VS CODE 生成的 launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "CUDA C++: Launch",
            "type": "cuda-gdb",
            "request": "launch",
            "program": "main.cu"
        },
        {
            "name": "CUDA C++: Attach",
            "type": "cuda-gdb",
            "request": "attach"
        }
    ]
}

当我按F5开始调试时,弹出错误信息:

main.cu: 346262241346234211351202243344270252346226207344273266346210226347233256345275225.

我认为您必须更改以下行:

         "program": "main.cu"

         "program": "${command:cmake.launchTargetPath}"

并在 VSCode 中选择可执行文件(通常在底行,您也可以在其中选择构建目标)。

也看看这里:

https://vector-of-bool.github.io/docs/vscode-cmake-tools/debugging.html

您可以尝试将您的 cmake 版本更新到 3.10 以上,不再需要使用find_package(CUDA)
这是 vscode 和 cmake 使用 cuda-gdb 的一个模板
CMakeLists.txt

cmake_minimum_required(VERSION 3.16)
project(your_project_name CUDA CXX C)  # enable cuda language
set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc)
set(CMAKE_CUDA_STANDARD 11)
set(CMAKE_CUDA_FLAGS ${CMAKE_CUDA_FLAGS} "-g -G")  # enable cuda-gdb

add_executable(${PROJECT_NAME})
target_sources(${PROJECT_NAME} PRIVATE your_source_files)
set_target_properties(${PROJECT_NAME} PROPERTIES CUDA_SEPARABLE_COMPILATION ON)

tasks.json

{
    "options": {
       "cwd": "${workspaceFolder}/build"  
    },
    "tasks": [
       {
          "label": "cmake",  
          "command":"cmake",  
          "args": ["-DCMAKE_BUILD_TYPE=Debug", ".."]  
       },
       {
          "label": "make",  
          "command":"make",  
       },
       {
          "label": "cmake build", 
          "dependsOn":[  
             "cmake",
             "make"
          ],
       }
    ],
    "version": "2.0.0"
 }

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "CUDA C++: Launch",
            "type": "cuda-gdb",
            "request": "launch",
            "program": "${workspaceFolder}/build/your_executable_file",
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "preLaunchTask": "cmake build"
        }
     ]
}

希望它可以帮助你:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM