热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【编译工具】VSCode混合调试C/C++和Node.js

目前经常使用的IDE工具有如下几种:VSCode,各种平台下的用户体验都是极好的,代码主题和显示效果都是最佳的,而且轻量级

目前经常使用的IDE工具有如下几种:

VSCode,各种平台下的用户体验都是极好的,代码主题和显示效果都是最佳的,而且轻量级的,资源消耗少;另外支持多种语言的开发,只需安装相应的插件,安装、配置、学习的成本都是很低的。

CLion,Jetbrains公司推出的一款专为开发C/C++所设计的跨平台IDE,不得不说Jetbrains出的产品就是让人信赖,用户体验也是很不错的,我喜欢使用clion调试cmake工程,只需简单的引入工程就可正常的开发调试,还是很爽歪歪的。另外使用过一段时间Intellij IDEA开发过JAVA程序,真的开发效率大大提升,真的是Java程序员的神兵利器!大爱!不过因为是基于Java虚机JDK开发运行的,所以资源消耗较多,这点体验不是很好。

Visual studio,经常使用VS在Windows下面调试大型程序,对于一个含有很多工程的大型程序来说,VS毋庸置疑是最佳的开发和调试工具,对于C++的初学者和开发者来说都是很不错的选择。就像一个小伙伴曾经说过的那样,使用VS追踪死锁问题都是非常方便的。对于打算开始入手学习WebRTC的童鞋还是建议从Windows VS工程开始搞起。

对于经常多语言开发的童鞋,VSCode绝对是明智的选择,我使用最多的还是C++、Node.js的混合开发调试以及go语言的开发,而且VSCode对与docker的支持也是体验很爽的。下面主要讲一讲 「Centos7下VSCode混合调试C/C++和Node.js工程」 。

本文以node.js开发Hello world addon为例

Node.js基于GYP(Generate Your Projects)构建C/C++插件的工具是node-gyp,它可以将C++插件代码编译成.node文件,其实质是一个动态库,可以自动生成make、cmake工程对应的Makefile和CMakeList.txt文件。

单独调试C/C++代码

launch.json文件如下:

{"version": "0.2.0","configurations": [{"type": "cppdbg","request": "launch","name": "Debug C/C++ Addon","preLaunchTask": "npm: build:dev","program": "node","args": ["${workspaceFolder}/index.js"],"cwd": "${workspaceFolder}","externalConsole": false}]
}

这样就可以在Start Debugging的时候,会依据launch.json执行,当给C++代码标记断点后,程序运行到断点处就会停住。此时js代码不处于调试状态。另外使用lldb插件也可以起到相同的效果,不过需安装lldb插件:

此时只需将type改为lldb即可。lldb是llvm的一个类似gdb的实现。这个插件是用来支持llvm编译器的。

混合调试C/C++和Node.js

先启动Node.js工程开始调试后,接着启动C/C++调试器,Attach到相应的进程上,这样在深入js代码的同时,还可以调试C++ Addons [1] 部分的代码,了解底层的调用逻辑。

launch.json文件如下:

{"version": "0.2.0","configurations": [{"name":"Launch","type":"node","request": "launch","preLaunchTask": "npm: build:dev","program": "${workspaceFolder}/index.js","args": [],"console": "integratedTerminal"},{"name": "Attach C/C++ Addon","type": "lldb","request": "attach","pid":"${command:pickMyProcess}" }]
}

配置中的第一项Launch是启动node.js代码调试,调试JS代码,需要先将Debugger面板切换到Launch。配置中的第二项是Attach C/C++ Addon,把Debug面板的Debugger切换到Attach C/C++ Addon,接着再启动即可。这里的request: "attach", 是让lldb链接到nodejs进程中去Debug,下面的pid字段就是启动后,会弹出下拉框,然后选择要链接的进程。一旦链接成功,就可以对 C/C++ 代码断点了。

遇到的问题:

centos7下直接启动code,UI界面一片白,菜单和窗口都无法渲染

解决方法: code --disable-gpu

默认情况下code以启动gpu的方式去渲染,虚拟机下工作不正常,disable后正常工作。

安装lldb插件,不能以安装数排名安装Native Debug,直接安装CodeLLDB即可。

使用cppdb attach工作不正常,而且需要processId和program,修改成lldb和pid的方式后工作正常。

安装lldb插件后报错:

解决方法:

strings /lib64/libc.so.6 |grep GLIBC_
wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar zxvf glibc-2.18.tar.gz
cd glibc-2.18/ && mkdir build/ && cd build/
../configure --prefix=/usr
make -j4
sudo make install

更新glib后依然遇到如下问题:

解决方法: sudo yum install python3

好了,本篇文章就为大家介绍到这里,觉得内容对你有用的话,记得支持一下哟!

如果你也喜欢编程,想好C/C++的话!如果你也想让自己成为一个具有真材实料的厉害的程序员,不妨从现在开始!

C语言C++编程学习交流圈子,QQ群:829164294点击进入】微信公众号:C语言编程学习基地

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

编程学习视频分享:

 

 


推荐阅读
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • libsodium 1.0.15 发布:引入重大不兼容更新
    最新发布的 libsodium 1.0.15 版本带来了若干不兼容的变更,其中包括默认密码散列算法的更改和其他重要调整。 ... [详细]
  • Node.js 中 GET 和 POST 请求的数据处理
    本文详细介绍了如何在 Node.js 中使用 GET 和 POST 方法来处理客户端发送的数据。通过示例代码展示了如何解析 URL 参数和表单数据,并提供了完整的实现步骤。 ... [详细]
  • 本文详细介绍了如何在Linux系统中安装和配置Node.js,包括从官方下载、编译安装到运行基本示例的全过程。 ... [详细]
  • Node.js中子进程的创建与管理详解
    本文深入探讨了Node.js中如何使用child_process模块来创建和管理子进程,包括exec、spawn和fork三种方法的具体应用及其实现细节。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文探讨了如何解决在使用CoffeeScript定义类时,实例化后对象为空的问题,并提供了解决方案。 ... [详细]
  • 腾讯视频 Node.js 服务国庆阅兵直播高并发实战
    本文分享了腾讯视频团队在国庆阅兵直播项目中,如何利用Node.js服务成功应对2.38亿次观看的高并发挑战。文章将从服务架构、可用性保障、缓存策略、日志与告警等方面详细解析。 ... [详细]
  • Node.js 开发入门:环境搭建与配置
    随着Node.js技术的日益成熟及其即将发布的1.0稳定版,越来越多的开发者开始关注并尝试这一高性能的服务器端JavaScript平台。本文将引导读者如何在Windows环境下安装配置Node.js,并介绍一些常用的开发工具和框架。 ... [详细]
  • 利用NVM实现Node.js多版本管理
    本文详细介绍如何使用NVM(Node Version Manager)进行Node.js的多版本管理,包括安装配置、版本切换等操作。 ... [详细]
  • 本文详细介绍了C++标准模板库(STL)中各容器的功能特性,并深入探讨了不同容器操作函数的异常安全性。 ... [详细]
author-avatar
九天0307_963
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有