13018.CUDA工程配置GDB调试

文章目录

  • 1 工程CMakeLists.txt
  • 2 vscode配置launch.json,settings.json,tasks.json文件

1 工程CMakeLists.txt

cmake_minimum_required(VERSION 3.8) # 根据你的CMake版本调整
# 设置项目名称
project(ez_compower_upward VERSION 0.1  LANGUAGES CXX CUDA)

find_package(CUDA REQUIRED)
# 查找并链接需要的库,例如对于标准库之外的依赖
find_package(Threads REQUIRED) # 例如,如果需要链接线程库


# 设置C++标准,这里使用C++14
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")



include_directories(${CMAKE_SOURCE_DIR}/config)
include_directories(${CMAKE_SOURCE_DIR}/interfaces)
include_directories(${CMAKE_SOURCE_DIR}/algorithm/point_process/include)
include_directories(${CMAKE_SOURCE_DIR}/algorithm/pixel_process/include)
include_directories(/usr/local/cuda/include)
# include_directories(${CMAKE_SOURCE_DIR}/interfaces/pixel_process/include)

# 指定项目源文件
set(SOURCE_FILES
    main.cpp
    #${CMAKE_SOURCE_DIR}/algorithm/point_process/src/point_read.cpp
    ...
    ${CMAKE_SOURCE_DIR}/algorithm/pixel_process/src/pixel_algo.cu
)

message(STATUS "CMAKE_SOURCE_DIR: ${CMAKE_SOURCE_DIR}")
foreach(file ${SOURCE_FILES})
  message(STATUS "SOURCE_FILE: ${file}")
endforeach()

# 添加可执行文件目标
CUDA_ADD_EXECUTABLE(ez_compower_app 
    ${SOURCE_FILES}
)

target_include_directories(ez_compower_app PRIVATE /usr/local/cuda/include)

# 如果你的项目需要链接其他库,可以在这里添加,例如
target_link_libraries(ez_compower_app pthread pcap ${CUDA_LIBRARIES}) # 对应于Linux下的线程库

# 或者针对特定库的链接命令,比如
# target_link_libraries(ez_compower_upward SomeThirdPartyLib)

# 可选:设置编译选项,比如警告等级
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -g")
endif()

# 如果你的项目包含测试,可以使用CTest
enable_testing()
# 添加测试用例的示例
# add_test(NAME MyTest COMMAND MyTest)
# include(CTest)

2 vscode配置launch.json,settings.json,tasks.json文件

  • launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) CUDA Debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/ez_compower_app", // 调试程序的完整路径
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}", // 当前工作目录
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build", // 构建任务,确保与tasks.json中定义的task label名称匹配
            "miDebuggerPath": "/usr/bin/gdb", // gdb的完整路径
            "internalConsoleOptions": "neverOpen"
        }
    ]
}
  • tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "make",
            "args": [], // 如果你的Makefile中有默认目标,这里可以不填写参数
            "options": {
                "cwd": "${workspaceFolder}/build" // 这里指定了make应该在哪个目录下执行
            },
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared",
                "showReuseMessage": true,
                "clear": false
            },
            "problemMatcher": []
        }
    ]
}
  • setting.json
{
    "files.associations": {
        "cctype": "cpp",
        "clocale": "cpp",
        "cmath": "cpp",
        "csignal": "cpp",
        "cstdarg": "cpp",
        "cstddef": "cpp",
        "cstdio": "cpp",
        "cstdlib": "cpp",
        "cstring": "cpp",
        "ctime": "cpp",
        "cwchar": "cpp",
        "cwctype": "cpp",
        "array": "cpp",
        "atomic": "cpp",
        "strstream": "cpp",
        "*.tcc": "cpp",
        "bitset": "cpp",
        "chrono": "cpp",
        "complex": "cpp",
        "cstdint": "cpp",
        "deque": "cpp",
        "list": "cpp",
        "unordered_map": "cpp",
        "vector": "cpp",
        "exception": "cpp",
        "algorithm": "cpp",
        "functional": "cpp",
        "ratio": "cpp",
        "system_error": "cpp",
        "tuple": "cpp",
        "type_traits": "cpp",
        "fstream": "cpp",
        "initializer_list": "cpp",
        "iomanip": "cpp",
        "iosfwd": "cpp",
        "iostream": "cpp",
        "istream": "cpp",
        "limits": "cpp",
        "memory": "cpp",
        "mutex": "cpp",
        "new": "cpp",
        "ostream": "cpp",
        "numeric": "cpp",
        "sstream": "cpp",
        "stdexcept": "cpp",
        "streambuf": "cpp",
        "thread": "cpp",
        "cfenv": "cpp",
        "cinttypes": "cpp",
        "utility": "cpp",
        "typeindex": "cpp",
        "typeinfo": "cpp",
        "valarray": "cpp",
        "*.ipp": "cpp",
        "string": "cpp",
        "bit": "cpp",
        "codecvt": "cpp",
        "condition_variable": "cpp",
        "map": "cpp",
        "iterator": "cpp",
        "memory_resource": "cpp",
        "optional": "cpp",
        "random": "cpp",
        "string_view": "cpp",
        "__nullptr": "cpp"
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/754465.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【语言模型】深入探索语言模型中的神经网络算法:原理、特点与应用

随着人工智能技术的飞速发展,神经网络算法在语言模型中的应用日益广泛,为自然语言处理领域带来了革命性的变革。本文将深入探讨当前语言模型中常用的几种神经网络算法,包括全连接神经网络、卷积神经网络、循环神经网络、长短期记忆网络、门控…

ffmpeg使用png编码器把rgb24编码为png图像

version #define LIBAVUTIL_VERSION_MAJOR 58 #define LIBAVUTIL_VERSION_MINOR 12 #define LIBAVUTIL_VERSION_MICRO 100 note 不使用AVOutputFormat code void CFfmpegOps::EncodeRGB24ToPNG(const char *infile, const char *width_str, const char *height_str, c…

【学习笔记】爱立信SPO 1400 CRAFT软件基础知识4——图形用户界面之通知列表和状态栏

一、前期准备 提示:下面所有学习内容都是基于以下条件完成的 条件1.已经正确安装并正常运行SPO 1400 CRAFT软件(以下简称LCT) 条件2.确认已正确使用爱立信SPO 1400 CRAFT软件通过网络登录设备(以下简称NE) 具体登录…

嵌入式应用开发屏幕教程8080并口通信

目录 #8080相关概念介绍 #8080并行通信硬件连接部分 #并行通信硬件电路连接图 #并行通信读数据规定 #并行通信写数据规定 #8080相关概念介绍 通信协议分为串行通信协议,并行通信协议,而本章所讲的8080是一种并行通信协议,并行通信协议 Pa…

Git使用过程中涉及的几个区域

一. 简介 Git 是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,也是 Linus Torvalds 为了帮助管理 Linux内核开发而开发的一个开放源码的版本控制软件。 本文简单了解一下 git涉及的几个部分,以及git 常…

老无忧,成熟人士都在玩的社交app

随着互联网向不同年龄群体的进一步渗透,越来越多大龄人士逐步在传统以年轻人为主的平台中搭建起自己的空间,对缔结社交关系的需求也变得强烈起来。老无忧无忧交友app应运而生,于2024年6月1日正式上线(以下简称“老无忧”&#xff…

step6:改用单例模式

文章目录 文章介绍codemain.cppSerialPort.qmlSerialPortHandler.h 文章介绍 案例MF改为单例模式 参考之前写过的关于单例模式的文章单例模式1、单例模式2 code main.cpp qmlRegisterSingletonType(“com.example.serialport”, 1, 0, “SerialPortHandler”, SerialPortHan…

c++ 设计模式 的课本范例(上)

( 0 ) 这里补充面向对象设计的几个原则: 开闭原则 OCP : 面向增补开放,面向代码修改关闭。其实反映到代码设计上就是类的继承,通过继承与多态,可以不修改原代码,又增加新的类似的功能。 依赖倒置原则 Depen…

JavaSE:多态

向上转型: 先看一段代码: 为何Animal animalnew Dog这个代码不报错。就是因为使用了向上转型:父类引用引用子类对象 向上转型一共有三种方式可以实现向上转型:1.直接赋值,2.通过传参,3.返回值 1.直接赋值…

virtualbox安装win10

等到安装完成 设备下选择安装增强功能

【教程】几种不同的RBF神经网络

本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com 目录 一、经典RBF神经网络1.1.经典径向基神经网络是什么1.2.经典径向基神经网络-代码与示例 二、广义回归神经网络GRNN2.1.广义回归神经网络是什么2.2.广义回归神经网络是什么-代码与示例 三、概率…

Redis 5 种基础数据结构?

Redis 5 种基本数据结构(String、List、Hash、Set、Sorted Set)在面试中经常会被问到,这篇文章我们一起来回顾温习一下。 还有几种比较特殊的数据结构(HyperLogLogs、Bitmap 、Geospatial、Stream)也非常重要,我们后面下次再聊! 下面是正文。…

双减期末考试成绩怎么公布?

考试一直是衡量学生学习成果的重要手段。不过,随着"双减"政策的实施,我们就不得不重新审视传统的成绩公布方式。期末考试成绩,这个曾经让无数学生心跳加速的数字,如今该如何以一种更加合理、公正的方式呈现给学生和家长…

广和通 OpenCPU 二次开发(一) —— 串口

广和通 OpenCPU 二次开发(一) —— 串口 1.port,端口号2.引脚序列号对应芯片引脚图找,也可以对照GPIO功能复用表找3.要复用的pin脚对应的功能mode根据GPIO功能复用表选择 一、核心配置## 标题代码 int port 1; fibo_gpio_mode_s…

力扣SQL50 员工的直属部门 子查询 双重

Problem: 1789. 员工的直属部门 👨‍🏫 参考题解 Code select employee_id, department_id from Employee where primary_flag Y # Y 表明是直属部门 or employee_id in (select employee_idfrom Employeegroup by employee_idhaving count(employee…

国外的Claude3.5 Sonnet Artifacts和国内的CodeFlying孰强孰弱?

在Claude 3.5 Sonnet发布后,最受大家关注的问题应该就是它在编写代码能力上的变化。 要知道在Claude3.0发布以来的这几个月就因为它的编写代码能力而一直受到人们的诟病。 那Anthropic这次终于是不负众望,在Claude 3.5 Sonnet中更新了一个叫做Artifact…

ETAS工具导入DEXT生成Dcm及Dem模块(一)

文章目录 前言Cfggen之前的修改ECU关联DcmDslConnectionDiagnostic ProtocolDiagnostic Ecu Instance PropsCommonContributionSetEvent修改communication channel总结前言 诊断模块开发一般是先设计诊断数据库,OEM会释放对应的诊断数据库,如.odx文件或.cdd文件。如果OEM没有…

go~缓存设计配合singleFlight

一个缓存设计,配合go的singleFlight 最开始的设计如下 添加分布式缓存 上线后分布式缓存上涨的流量并不等于下游下降的流量,而是下游下降的流量 * 2~3 究其原因,就是采用了go的singleFlight,假定请求缓存时长10ms&a…

LabVIEW网络开发资源

在LabVIEW开发中,利用网络资源进行学习和查找资料是提高技能和解决问题的重要途径。以下几个国内外优质资源可以帮助开发者获得丰富的技术支持和交流机会: 1. NI Community (NI社区) 简介: National Instruments官方运营的社区,提供丰富的资…

浅谈:冒烟测试

在软件开发的生命周期中,测试阶段是确保产品质量的关键环节。冒烟测试作为软件测试的一种快速而有效的初步验证方法,重要性不言而喻。 冒烟测试源自制造业,尤其是电子行业。当一块电路板被制造出来后,工程师们会首次通电&#xf…