前言: linux
本文以ceph osd部分为例,为您演示经过第三方社区提供的vscode 编辑软件,对ceph osd进行进行图形化单步调试以及配置操做。c++
vscode是微软公司一个开源的编译器具有轻量的特色,经过插件安装方式提供了丰富的调试功能。一般 Linux环境的c/c++软件开发使用GDB进行命令行调试,命令行操方式极其不方便。使用vscode 的图形化界面可替代gdb 命令行 ,整个开发调试过程更加便捷。redis
1. 下载安装windows的vscodeshell
在如下地址下载json
https://code.visualstudio.com/windows
安装openssh (通常状况不用本身手动安装)服务器
若是须要远程开发,Windows机器也须要支持openssh,若是本机没有,会报错ssh
报错信息相似以下:编辑器
The terminal process command 'cmd.exe /c (type & exit /b 0' failed to launch
能够到微软官网上下载ssh。ui
如下内容中,ceph源码路径在~/ceph_soft/ceph目录下,其编译运行文件在~/ceph_soft/ceph/build/bin当中。启动调试前须要中止本地的osd运行服务。
Windows10新版本会自带,可是有的没有自带的就须要安装
在安装完成以后,点击左侧的Remote-SSH选项卡,再将鼠标移向CONNECTIONS栏,点击出现的configure:
填写linux服务器的ssh端口和用户名(若是是默认的22端口可不用填写)
按下ctrl + s 保存 而后链接
输入密码,总共有屡次输入密码的流程留意窗口变化
打开远程服务器的文件夹
2. 远程链接遇到的问题以及技巧
由于ceph工程文件数量众多会出现 没法在这个大型工做区中监视文件更改。请按照说明连接来解决此问题的问题
缘由:工做区很大而且文件不少,致使VS Code文件观察程序的句柄达到上限。
解决方法
编辑linux服务器中的 /etc/sysctl.conf
将如下一行添加到文件末尾,能够将限制增长到最大值
fs.inotify.max_user_watches=524288
保存以后 输入sysctl -p可解决,在最左上栏查看(V) -> 终端能够调出终端窗口对Linux服务器输入命令。
3. 远程调试
首先前提Linux服务器已经安装了GDB,不然会提示出错。
在ceph工程目录下添加launch.json文件。在最左上栏运行(R) -> 添加配置 ,注意必定要在ceph当前工程目录。
修改配置launch.json中的program、args选项。
{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "osd-debug", //名字随便 "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/bin/ceph-osd", //这里要修改 "args": ["-d", "--cluster", "ceph","--id", "0", "--setuser", "root", "--setgroup", "root"], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
按照下图点击就能够开始调试之路
4. 免密码登陆方法
1.以管理员模式打开powershell 输入ssh-keygen 生成一对密钥对
2.拷贝C:\Users\用户名.ssh目录下的id_rsa.pub到服务器上除了.ssh/目录的任意地方。注意:不要覆盖服务器下的.ssh/id_rsa.pub
3.在服务器上执行cat id_rsa.pub >> ~/.ssh/authorized_keys 当前服务器用户目录的的.ssh
简单来讲就是把电脑上的id_rsa.pub 添加到服务器下的authorized_keys文件中。
结束
设置vscode 远程链接到Linux 服务器环境并不复杂,简单几个步骤即可从GDB黑框框界面中解脱,图形界面编辑器的调式方法使从代码上分析cpeh、redis 这类大型C/C++工程更加驾轻就熟。