完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
为什么需要一个图形化调试环境?
使用通过打印 log 的方法进行调试,调试效率不高且不容易定位问题, 而通过 SSH 连接 Linux 终端直接使用gdb调试,不仅需要记命令,而且在使用体验上也没有这么好,效率也不高,这时我们就需要搭建一个图形化调试环境来让调试程序变得更加方便。 通过 SSH 连接 Linux 终端直接使用gdb调试: VScode 图形化调试: 开始时需要安装的软件和插件 在 Windows 上需要安装 VScode。 在安装好 VScode 之后,还需安装Remote Development插件。 安装好以上软件和插件后,就可以使用 VScode 远程连接到 Linux 上了。 远程连接 SSH 的连接方式有两种,一种是账户密码,另一种是公私钥连接。这里推荐使用公私钥连接,因为后面远程调试过程会多个地方连接,需要多次输入密码比较麻烦,使用公私钥的话只需要配置一次就可以了,非常方便。 在远程 Linux 上生成公私钥对: # 生成一对密钥, 在哪个机器生成都行ssh-keygen -t rsa# 公钥需要放到 Linux 执行环境里# 假设生成的公钥是 "vscode_rsa.pub"cat /root/.ssh/vscode_rsa.pub >> /root/.ssh/authorized_keyschmod 644 /root/.ssh/authorized_keys# 私钥需要留在 VSCode 一端 Windows 机器里# 假设路径是 "D:/.ssh/vscode_rsa" 然后打开 VScode,点击侧边栏中的远程资源管理器图标,选择SSH Targets,点击加号: 按照username@ip的格式添加,然后根据提示会看到远程连接的配置文件。或者直接在下面界面上加号旁边的齿轮,直接打开配置文件,按照下面的格式添加,在 IdentityFile 后面添加私钥的路径: Host hostname HostName xxx.xxx.x.xx User username IdentityFile "D:.sshvscode_rsa" 配置好后就可以点击右侧图标进行连接了: 问题 如果在配置好进行连接的时候,VScode 的终端报错了: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: UNPROTECTED PRIVATE KEY FILE! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Permissions for 'vscode_rsa' are too open.It is required that your private key files are NOT accessible by others.This private key will be ignored.Load key "vscode_rsa": bad permissions 解决办法: 在私钥上右击选择属性,然后选择【安全】选项卡,然后点击下面的【高级】按钮,然后在新弹出的窗口下方点击【禁用继承】,然后点击继承那个按钮上面的【添加】按钮重新将当前 Windows 登录用户设置为私钥的所有者,并勾选所有权限。最后跟下面一样即可: 远程调试 安装插件 VScode 远程连接后需要在 ssh-linux上安装拓展:C/C++插件。 安装完后需重新加载或重新打开 VScode。 然后点击 VScode 菜单栏,【文件】 => 【打开文件夹】,打开需要调试的程序所在的文件夹即可。 配置调试脚本 在菜单栏里选择【运行】=>【添加配置】,会弹出提示选择调试环境,这是选择【C++ GDB/LLDB】那个即可自动生成launch.json文件。 ${workspaceFolder}是指刚才打开的远程文件夹,鼠标在配置文件属性字段停留可以查看该属性的意思。 launch.json: { "version": "0.2.0", "configurations": [ { "name": "Demo UI 启动", "type": "cppdbg", "request": "launch", "cwd": "${workspaceFolder}", "program": "${workspaceFolder}/release/bin/demoui", "args": [], "stopAtEntry": false, "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", "miDebuggerArgs": "", "miDebuggerServerAddress": "localhost:2333", // 调试会话开始前要运行的任务:这个在后面有用到 "preLaunchTask": "demoui gdbserver start", "logging": { "moduleLoad": false, "engineLogging": false, "trace": false }, "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] } 为了更方便地进行调试,还需要配置开启gdbserver的任务,在菜单栏里选择【终端】=>【配置任务】=>【使用模板创建 task.json 文件】,即可自动生成task.json文件。 如果调试程序需要 sudo 权限,那就需要 sudo 打开 gdbserver: task.json: // gdbserver localhost: { "version": "2.0.0", "tasks": [ { "label": "demoui gdbserver start", "detail": "启动 gdbserver", "type": "shell", // 执行的任务是否保持活动状态并在后台运行,这个必须开启 "isBackground": true, "command": "echo", "args": [ // 密码 "xxxxxx", "|", "sudo", "-S", "gdbserver", "localhost:2333", "${workspaceFolder}/release/bin/demoui", ], "presentation": { "echo": false, "reveal": "always", "focus": false, "panel": "shared", "showReuseMessage": true, "clear": false } } ] } 运行这个任务相当于在 Linux 终端上运行以下命令: echo xxxxxx | sudo -S gdbserver localhost:2333 ./release/bin/demoui 如果不需要 sudo 权限,则将以上脚本部分更改为: "command": "gdbserver", "args": [ "localhost:2333", "${workspaceFolder}/release/bin/demoui", ], 相当于在 Linux 终端上运行以下命令: gdbserver localhost:2333 ./release/bin/demoui 配置好这两个脚本后就可以在 VScode 中直接按 F5 进行调试了。 参考 VScode配置远程调试Linux程序及问题解决 |
|
|
|
只有小组成员才能发言,加入小组>>
791 浏览 0 评论
1151 浏览 1 评论
2527 浏览 5 评论
2860 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2710 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1070浏览 3评论
193浏览 2评论
455浏览 2评论
368浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
453浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 00:33 , Processed in 1.461580 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号