最近工作环境几乎完全变成了在服务器上开发,加上 vscode 的远程开发插件已经比较完善了,不管是在服务器上还是 WSL 上面用都挺舒服。把遇到的问题写一下做个记录。
装插件
首先保证服务器能联网,然后本地安装 Remote Development
全家桶,可以直接编辑 远程服务器/本地WSL/本地容器 上面的代码。左下角多一个按钮,首次连接后会在服务器自动下载 vscode-server
到家目录,之后每次连接就可以正常用了。
好处就是如果手头有服务器,本地开发机可以不用配置任何环境,全在服务器上搞,一次配置好就可以很多人一起共用一个环境。
调试 C/C++
打开项目文件夹后,要调试需要配置一下项目的 launch.json
命令面板里面直接输 launch 有条命令可以直接生成一个模板,然后改一改
例如
{
"version": "0.2.0",
"configurations": [
{
"name": "g++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "/home/xxx/a.out", // 要运行的程序
"args": ["xxx"],
"stopAtEntry": false,
"cwd": "/home/xxx/", // 运行目录
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "",
"miDebuggerPath": "/usr/bin/gdb1" // debugger 程序
}
]
}
root 权限调试
遇到的一个问题是现在写的东西编译完了必须要 root 权限运行,而我又不想总是用 root 账号。其实是可以的,参考了这个issue里的评论
方法是:
首先建一个
sh
脚本,在里面sudo
运行gdb
, 例如一个叫gdb1
的脚本,给它运行权限sudo chmod 0755 gdb1
, 脚本内容是:#!/bin/sh sudo gdb $@
在
launch.json
里面将调试命令改为这个脚本运行
sudo sysctl -w kernel.yama.ptrace_scope=0
这是从那个 issue 看到的,不然权限还是有问题随便执行个 sudo 啥,让自己处在 sudo 暂时不用输密码的状态。我也不知道这里是不是做的不太对,我这里如果不这样做的话调试器打开后不会等着输密码而是会退出,这样做能避免。
这样应该就可以远程以 root 权限调试程序了
然后
其他有什么问题看到再补充。