VS远程调试权限不足的问题

1.远程调试的需求

自从2015年之后,微软对linux的支持越来越完善了,使用VS进行远程linux开发也越来越好用了。VS最大的优点是调试功能强大,能极大提升发现bug的效率。
但有时候,编写的程序需要用sudo权限运行,这时候VS的调试功能无法附加至进程,提示错误!
在这里插入图片描述

2.环境配置

远程linux机器是ubuntu 16.04 LTS,自带gdb。

3.解决办法

3.1常规办法(很奇怪,在我的系统上失效)

错误提示也很清楚了,要么使用root账户ssh登录,要么修改ptrace的值
使用root登录当然可以调试,但是很多时候我们没法获得root账号,另外要使用root登录,还必须给root账户配置一个密码,是比较麻烦的,也不利于后续管理(毕竟如果你把root账号的密码忘记了就有的麻烦了)。
网上有很多修改ptrace的方法,列举一下,核心思想就是让ptrace_scope的值为0。这个看/etc/sysctl.d/10-ptrace.conf的解释也就清楚了。
在这里插入图片描述
修改ptrace为0的操作方法:

sudo gedit /etc/sysctl.d/10-ptrace.conf
kernel.yama.ptrace_scope = 0
reboot
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
sudo sysctl -w kernel.yama.ptrace_scope=0
sysctl -p

但是!!! 此方法在我的linux上失效了!!!修改完成之后,依然无法使用VS远程调试,还是报权限不足的问题。

3.2修改gdb权限

因为VS远程调试的原理,是利用远程gdb进行的操作,于是想着在本地试试gdb,发现普通用户直接用gdb调试root程序,一样报权限不足的错误,不管ptrace是不是0。这个不知道是不是系统bug。
经过两天两夜的努力尝试,最后终于找到办法了:修改gdb的权限。还是最原始的方法最好用。

sudo chmod +s /usr/bin/gdb

修改gdb权限,改完以后状态出现‘s’。

XXX@Nuvo-3100-Series:/usr/bin$ ll gdb
-rwsr-sr-x 1 root root 6546408 6月  10  2017 gdb*

在使用VS调试中的“附加到进程”功能,可以成功调试root权限运行的程序。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值