wsl 环境下的gdb无法attach的解决方案 vscode

gdb attach 失败解决方案

1. 失败信息

ptrace:Operation not permitted

2. 原因分析

默认情况下Linux只允许attach和启动gdb的用户相同的进程,比如A用户启动gdb,但某个程序是由B启动的,则gdb无法attach。

3. 解决方案

  1. 有yama的Linux发行版
    echo 0| sudo tee /proc/sys/kernel/yama/ptrace_scope
  2. 无yama的Linux发行版
    sudo setcap cap_sys_ptrace=eip /usr/bin/gdb
  3. 通法
    用root用户登录,可以无视上边的限制

4. wsl下的解决方案

wsl1可以用方案1,3来解决,wsl2可能没有yama,需要用方案2解决

参考资料

  1. https://github.com/Microsoft/MIEngine/wiki/Troubleshoot-attaching-to-processes-using-GDB
  2. https://www.kernel.org/doc/html/v4.15/admin-guide/LSM/Yama.html
posted @ 2021-06-30 22:03  deepwzh  阅读(1044)  评论(1编辑  收藏  举报