Mac系统中vscode用root调试rust代码

886 阅读1分钟

起因

要在mac中开发一个rust网络程序,编辑器用的vscode。

里面涉及的系统级别的socket连接,直接用户身份执行cargo test会报权限问题,sudo cargo test可以通过。

而想debug程序使用rust analyzer或code lldb插件启动的terminal没有root权限,这边有个类似的issue。折腾了好久才用了个奇葩方法曲线救国,如果有人有更好的方案欢迎留言👏🏻

过程

尝试各种方案未果,以下是失败的方案

  1. sudo code . --user-data-dir xx
  2. 在.bash_profile alias
alias code_root="echo \" run vscode as root \" && sudo open /Applications/Visual\ Studio\ Code.app --args --user-data-dir=/Users/xxx/VsCodeRoot/ --extensions-dir=/Users/xxx/VsCodeRoot/extensions --only-same-user=false --no-sandbox"
  1. sudo su以管理员身份登录了之后code .
  2. 恢复模式下关闭sip csrutil disable
  3. launch.json加一些配置
  4. 重命名lldb执行sudo

解决方案

搞了大半天没搞定,有篇文章讲到了remote可以用root,尝试可用,所以最终采用vscode远程登录的方案

1. 普通账号生成私钥

cd ~/.ssh
ssh-keygen -t rsa

修改~/.ssh/config添加

Host self
    HostName 127.0.0.1
    User root
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa

2. root账号修改密码,添加公钥

sudo su
passwd root
cat /Users/xxx/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

3. 开启ssh服务

【系统偏好设置】 -> 【共享】 -> 【选中 远程访问】

4. vscode安装插件

插件列表搜ssh,第一个就是Remote - SSH, 安装好就行

5. 远程连接

点击左侧远程资源管理器

选到self(刚刚我们.ssh/config加的)

连接进去就是root身份了