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

再谈VSCode中C++的Debug方法

VSCode是真正的生产力工具,尤其是前一阵子推出的remote-SSH功能,让远程轻量调试服务器代码效率有了质的飞越。不过本文不谈VSCode的remote-ssh功能。今天主要





VSCode是真正的生产力工具,尤其是前一阵子推出的 remote-SSH 功能,让远程轻量调试服务器代码效率有了质的飞越。不过本文不谈VSCode的 remote-ssh 功能。今天主要继续聊一下VSCode的对C++代码的debug功能。



之前的文章中,

利用VScode和cmake编译构建C++工程代码


如何对Pytorch进行“深入”的DEBUG 这两篇文章已经或简单或深入地讲解了VSCode的debug特性,而本文则对此进行补充,聊一些需要注意的地方。


不是每次都需要tasks.json


如果我们仅仅是想要借助VSCode的debug窗口,去debug我们已经生成的可执行文件,那我们 完全 不需要 tasks.json ,这个文件是提供编译时的帮助文件,设置好 tasks.json 参数后通过执行其设置好的gcc命令等等去编译。如果我们已经有编译好的,就不需要这个东西了。


我们只需要 launch.json 文件,以下是我配置好的一个example:


{
"version": "0.2.0",
"configurations": [
{
"name": "debug",
"type": "cppdbg",
"request": "launch",
"program": "path/to/bin",
"args": [
"--model-repository=/test_model_repository_debug/centernet-trt-ensemble",
"--http-port=8007",
"--cuda-memory-pool-byte-size=0:134217728"
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [{"name":"LD_LIBRARY_PATH", "value":"${LD_LIBRARY_PATH}:/usr/local/cuda/lib64:/home/re2/obj/so"},
{"name":"CUDA_VISIBLE_DEVICES","value": "4"}],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"miDebuggerPath": "/usr/bin/gdb",
"logging": { "engineLogging": true }
}
]
}

以下分析一下我们常用的几个地方:



  • 去掉 preLaunchTask": "g++" ,因为我们不需要 tasks.json

  • "request": "launch" 一般都是 launch ,如果需要捕获进程进行attach则设置为 attach ,可以看 如何对Pytorch进行“深入”的DEBUG

  • "program": "path/to/bin" 编译出来的可执行文件地址

  • "args": [ ], 命令行参数,具体怎么写看上头的

  • "environment": [{"name":"CUDA_VISIBLE_DEVICES","value": "4"}], 环境变量,如果我们的可执行文件需要设置环境变量则修改这个,修改格式具体看上头的例子


其他的不常用,就不介绍了,还想要了解的看官方文档 https://code.visualstudio.com/docs/editor/debugging 。




最后总结一句,使用VSCode中的debug调试窗的原因,无非就是原始的gdb的命令行模型操作起来比较麻烦,所以借助VSCode中可视化调试窗会更方便一些。如果自己对gbd命令比较熟练,更喜欢用命令行的方式,那么直接使用gdb也是可以的。




推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
author-avatar
wangbiao少爷
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有