如何在Visual Studio Code中通过CMAKE构建的CUDA程序调试?

发布于 2025-02-05 19:26:42 字数 1079 浏览 2 评论 0 原文

我正在尝试调试使用VS代码的测试程序,在Ubuntu 20中的Cmake。我主要提到CUDA调试器文档: https://docs.nvidia.com/nsight-visual-visual-studio-code-code-edition/cuda-debugger/index.htex.html 。 但是,我不确定如何在基于CMAKE的项目中编写正确的启动。 这是我的cmakelists.txt,

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

这是我的启动。当我按F5开始调试时,由VS代码生成的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"
        }
    ]
}

,弹出错误信息:

main.cu: 346262241346234211351202243344270252346226207344273266346210226347233256345275225.

I'm trying to debug a test program with VS CODE, CMake in Ubuntu 20. I referred mainly to the CUDA debugger document: https://docs.nvidia.com/nsight-visual-studio-code-edition/cuda-debugger/index.html.
However, I'm not sure about how to write a correct launch.json in a project based on CMake.
Here is my CMakeLists.txt

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

Here is my launch.json generated by VS CODE

{
    "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"
        }
    ]
}

When I press F5 to start debugging, an error information poped up:

main.cu: 346262241346234211351202243344270252346226207344273266346210226347233256345275225.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

潇烟暮雨 2025-02-12 19:26:42

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

         "program": "main.cu"

to

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

并选择VSCODE中的可执行文件(通常在底行,您还可以选择“构建目标”)。

还可以看一下:

I think you have to change the following line:

         "program": "main.cu"

to

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

and select the executable in VSCode (usually on the bottom row where you can also select build targets).

Have also a look here:

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

请止步禁区 2025-02-12 19:26:42

您可以尝试将CMAKE版本更新为高于3.10,不再需要使用 find_package(cuda)
这是一个用于使用CUDA-GDB
的VSCODE和CMAKE的模板
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"
 }

aumination.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"
        }
     ]
}

希望它可以帮助您:)

you can try to update your cmake version to higher than 3.10, which no longer need to use find_package(CUDA)
here is one template for vscode and cmake to use 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"
        }
     ]
}

wish it could help you :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文