vscode跨语言调试

news2024/12/23 18:33:12

所谓“工欲善其事,必先利其器”,作为一个程序员,调试在项目开发过程中的重要性自然是不言而喻的。

最近项目中遇到的项目是由python和cpp完成的,python端会调用到cpp的库。由于做二次开发需要进行跨语言联调,所以在这里对调试的配置做个记录。

整个项目是在Linux环境下进行调试的,代码使用vscode进行编辑的,这里就记录了vscode下远程跨语言调试过程。

首先vscode项目下的配置,都会在项目下生成一个隐藏的.vscode文件夹,这个文件夹下是项目的配置,相关的基础部分可以看我的这篇文章记录vscode远程lldb调试Linux下程序_笑傲江湖的小白的博客-CSDN博客

整个项目上层使用python端写的,底层采用cpp。这里先给出.vscode文件夹下的结构。.env文件是配置项目的环境变量的;c_cpp_properties.json是配置cpp项目的编译器,以及搜索头文件路径的;launch.json是配置项目调试执行。

 

这里python的环境采用了conda的环境和本地编译后的python文件共同组成的。在.vscode文件中设置的,这里给出.vscode的配置,这里的/home/wzy/tvm-sycl/git-tvm-sycl/tvm/python是本地项目需要用到的二次开发使用的python库。

PYTHONPATH="/home/wzy/tvm-sycl/git-tvm-sycl/tvm/python:${PYTHONPATH}"

下面给出c_cpp_properties.json文件

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/home/wzy/sycl_workspace/build-cuda-2022-09-debug/include/sycl/",
                "/home/wzy/app/googletest-build-release-1.10/include/",
                "/usr/local/cuda-11.2/include/**"
            ],
            "defines": [],
            "compilerPath": "/home/wzy/sycl_workspace/build-cuda-2022-09-debug/bin/clang++",
            "cStandard": "gnu17",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "linux-clang-x64"
        }
    ],
    "version": 4
}

这里面包含了头文件搜索路径,C和Cpp使用标准,以及要使用的平台-编译器-架构模式,以及编译器路径。

下面给出launch.json内容

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "python":"/home/wzy/anaconda3/envs/tvm/bin/python",
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": true,
        },
        {
            "type": "lldb",
            "request": "attach",
            "name": "Attach-TVM-lldb",
            "pid":"${command:pickMyProcess}",
        }
    ]
}

这个launch.json可以采用vscode界面添加自动生成再做细节调整,可以通过添加配置来生成模板,模板选项如下图所示。

 

 这里第一个配置是python的配置,里面主要设置了python的编译器路径。request这里标明了执行类型,vscode的执行类型有两种launch和attach,launch一般是直接运行调试的,attach是通过进程管理方式进行调试。program定义的"${file}"是制定目前选中的执行文件去执行。

这里的第二个配置是cpp的配置,里面采用attach by PID的方式来调试,通过attach进行的方式进行调试,这里的pid就是进程的id号,需要在调试的时候指定。

下面简述一下调试过程。首先从python端调试器,开始点击绿色开始按钮后启动调试,程序会进入到python端的断点处。

然后通过调试控制台来获取python端调试程序的进程id号,即cpp需要attach的pid,这里我通过

python命令在调试控制台获取到了pid,如下pid为20683

import os
os.getpid()

 

 接下来如果要进入到cpp端的断点处,需要将编译器切换至lldb编译器,然后打断点,点击启动调试按钮。

 这个时候会跳出输入选择进程的界面,把我们刚才获取的进程pid号输入进去,回车后等待一阵,就会进入到lldb调试器中去。

 等待片刻后,可能会有点慢,会发现调用堆栈这里会有两个debug控制折叠栏,等到Attach-TVM-lldb前面有了箭头,说明lldb调试调用就绪了。

下面要注意将断点里面C++:on throw 选中按钮给取消掉,然后按跳过,就可进入cpp的断点处。

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QList与QVector遍历方法与性能比较

目录 一、 性能测试 二、 QList与QVector耗时对比分析 三、QList遍历方式对比分析 四、QVector遍历方式对比分析 一、 性能测试 最近使用opengl画点云数据时发现比较卡顿,原因是我使用了QList数据结构,后面改为QVector改善很多,速度提升1倍。…

什么是数学思维

什么是数学 数学 [英语:mathematics,源自古希腊语μάθημα(mthēma);经常被缩写为math或maths],是研究数量、结构、变化、空间以及信息等概念的一门学科。 数学 是人类对事物的抽象结构与模式进行严格…

大学生影视主题网页制作 HTML+CSS+JS仿360影视网站 dreamweaver电影HTML网站制作

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

数据结构:排序

目录 插入排序 插入排序 希尔排序 选择排序 选择排序 堆排序 交换排序 冒泡排序 快速排序 递归实现: ●hoare版本 ●三数取中小区间法优化 ●挖坑版本 ●双指针版本 非递归 ●用栈实现 ●用队列实现 归并排序 ● 递归 ●非递归 总结 来了朋友&a…

slot的理解

首先,大概了解一下插槽: 插槽是什么 ![在这里插入图片描述](https://img-blog.csdnimg.cn/90b04660769e49c286ee2e1821d2a2bb.png 插槽:在HTML中 slot 元素 ,作为 Web Components 技术套件的一部分,是Web组件内的一个占…

HashMap1.8也会发生死循环

在网上搜资料时候然后发现网上都说1.7版本的HashMap会发生死链也就是死循环&#xff0c;但是在HashMap中也会产生死循环&#xff0c;接下来直接看代码吧 代码 类名字我忘记改了这是我以前看park时候弄的但是这不重要 当你运行 public class parkAndUnpark {static Map<…

微服务守护神-Sentinel-降级规则

引言 书接上篇 微服务守护神-Sentinel-流控规则 &#xff0c;上面介绍了Sentinel流控规则&#xff0c;本篇继续来Sentinel的降级规则。 降级规则 那啥为降级呢&#xff1f;降级可以理解为下降等次&#xff0c;比如&#xff1a;你从广州到北京&#xff0c;有钱时&#xff0c;…

Kafka的认证

Kafka支持基于SSL和基于SASL的安全认证机制。 基于SSL的认证主要是指Broker和客户端的双路认证。即客户端认证broker的证书&#xff0c;broker也认证客户端的证书。 Kafka还支持通过SASL做客户端认证。SASL是提供认证和数据安全服务的框架。Kafka支持的SASL机制有5种&#xff…

Docker容器化技术入门(一)Docker简介

Docker容器化技术入门&#xff08;一&#xff09;Docker简介前言&#xff08;一&#xff09;Docker简介1 Docker是什么&#xff1f;1.1 Docker的出现1.2 Docker的理念1.3 一句话2 容器与虚拟机比较2.1 容器发展简史2.2 传统虚拟机技术2.3 容器虚拟化技术2.4 对比3 Docker能干什…

华硕编程竞赛11月JAVA专场 D题飞机大战 题解

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发&#xff08;Vue、SpringBoot和微信小程序&#xff09;、系统定制、远程技术指导。CSDN学院、蓝桥云…

org.eclipse.e4.core.di.InjectionException: Unable to proces

eclipse RCP 项目在eclipse 插件程序中正常运行&#xff0c;导出eclipse product后运行报错。路径&#xff1a;【项目名称】–>workspace–>.metadata–>.log 报错信息如下&#xff1a; !SESSION 2022-12-08 17:19:22.227 ------------------------------------------…

MATLAB、R用改进Fuzzy C-means模糊C均值聚类算法的微博用户特征调研数据聚类研究...

全文链接&#xff1a;http://tecdat.cn/?p30766本文就将采用改进Fuzzy C-means算法对基于用户特征的微博数据进行聚类分析。去年&#xff0c;我们为一位客户进行了短暂的咨询工作&#xff0c;他正在构建一个主要基于微博用户特征聚类研究的分析应用程序&#xff08;点击文末“…

从零开始带你实现一套自己的CI/CD(二)Jenkins+Sonar Qube

目录一、简介二、Sonar环境搭建2.1 下载Docker镜像2.2 使用docker-compose部署三、Sonar Qube基本使用3.1 Maven实现代码检测3.2 Sonar-scanner实现代码检测四、Jenkins集成Sonar Qube4.1 下载插件4.2 SonarQube生成Token4.3 Jenkins配置Sonar Token信息4.4 Jenkins全局工具配置…

word如何设置页码?一分钟教你设置Word文档的页码!

你知道Word怎么设置页码吗&#xff1f;可能你还找不到页码在何处。相信有很多人也会遇到这些类似的问题。如何在Word文档里面的任意一页设置页码呢&#xff1f;word如何设置页码&#xff1f;现在小编就把设置页码的过程和截图分享出来&#xff0c;本文仅供参考使用。有需要的朋…

算法刷题打卡第40天:打家劫舍

打家劫舍 难度&#xff1a;中等 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。…

全解一款六面体结构化网格划分利器-NUMECA IGG

作者 |卢工FunRun 仿真秀优秀讲师 导读&#xff1a;前不久&#xff0c;VIP群有人提问&#xff1a;“老师&#xff0c;NUMECA如何计算带蜗壳叶轮机呢”&#xff1f;笔者使用NUMECA FINE/Turbo&#xff08;以下简称Turbo&#xff09;软件解决叶轮机械气动性能仿真计算已有三年多&…

nRF Connect的使用

一、工具简介 nRF Connect是NORDIC开发的一款低功耗蓝牙测试APP&#xff0c;仅支持安卓。可以扫描和探索低功耗蓝牙设备并与它们通信。 蓝牙通信的核心是向硬件发送数据和接收硬件传回来的数据。 二、准备项 Android手机 蓝牙硬件 三、使用简介 1、进入界面 &#xff08;1&…

某科技公司防火墙配置与管理

目录 杭州继保南瑞电子科技有限公司… 1 公司简介…2需求分析… 错误!未定义书签。公司网络拓扑图…4IP 地址规划 …4设备选型…5技术介绍…6 6.1 DMZ …6 6.2 VPN …6 6.3 NAT …6 6.4 ACL …7项目实施…7 7.1 DMZ 区域配置及结果测试 …7 7.1.1 防火墙基本配置…8 7.1.2 内网…

粉笔通过上市聆讯:上半年营收14.5亿 腾讯经纬高瓴是股东

雷递网 雷建平 12月7日职业教育平台粉笔科技今日通过聆讯&#xff0c;准备在港交所上市。花旗、中金&#xff08;香港&#xff09;和美银证券为其联席保荐人。粉笔科技此次募资用途为丰富课程内容、扩大学员群体、加强内容及技术开发能力等。上半年营收14.51亿粉笔科技成立于20…

# spring-security(一)

一、权限管理简介 1、什么是权限管理 基本上涉及到用户参与的系统都要进行权限管理&#xff0c;权限管理属于系统安全的范畴&#xff0c;权限管理实现对用户访问系统的控制&#xff0c;按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。 ​ 权限管理…