gdb需要以root用户身份运行。emacs gdb许多窗口

gdb需要以root用户身份运行。emacs gdb许多窗口,emacs,gdb,Emacs,Gdb,我在emacs中使用gdb许多窗口作为普通用户。但是程序需要以root用户身份运行。在运行gdb多个窗口之前,我可以在emacs中更改为root吗?还有别的办法解决这个问题吗 更新:谢谢大家。一个可能的解决方案是以root身份运行emacs,这将导致gdb(以及您生成的任何其他进程)以root身份运行。当您执行Meta-X gdb时,emacs允许您更改它将调用的gdb命令 只需将其更改为sudogdb--annotate=3… 更新:正如马特评论的那样,这仍然很不安全。最好能做到 sudo /

我在emacs中使用gdb许多窗口作为普通用户。但是程序需要以root用户身份运行。在运行gdb多个窗口之前,我可以在emacs中更改为root吗?还有别的办法解决这个问题吗


更新:谢谢大家。

一个可能的解决方案是以root身份运行emacs,这将导致gdb(以及您生成的任何其他进程)以root身份运行。

当您执行
Meta-X gdb
时,
emacs
允许您更改它将调用的
gdb
命令

只需将其更改为
sudogdb--annotate=3…

更新:正如马特评论的那样,这仍然很不安全。最好能做到

sudo /usr/bin/gdb -ex 'set auto-load-scripts no' --annotate=3 ...
更好的方法可能是更改设置,这样您正在调试的程序就不需要首先以root用户身份运行。也许你可以用它来代替

更新2:sudo似乎会干扰emacs终端处理。特别是,它尝试从
/dev/tty
读取密码,而不从emacs迷你缓冲区获取输入

解决方案是允许您自己通过sudo调用GDB而无需密码。类似的东西(在
/etc/sudoers
中)应该可以工作:

your_user_id ALL = NOPASSWD: /usr/bin/gdb

这里没有提到的解决方案是让构建脚本在二进制文件上设置setuid位,并将所有权设置为root

chmod u+s binaryname
chmod g+s binaryname
chown root:root binaryname

这可能比这两个答案中的任何一个都更安全(尽管它可以让任何具有执行权限的人以root身份运行文件,但这可能不是您想要的…

似乎有一种方法可以在不修补sudoers的情况下使用emacs 25实现这一点。您需要访问emacs中的任何缓冲区(我通常使用项目中的文件),执行“M-x cd”,选择“/sudo::/”-这将更改默认目录。然后,当您运行“M-xgdb”时,gdb将在sudo下运行(系统将提示您输入密码)。另请参见此处:

是的,这是我现在使用的方式。但是它不是很方便:-(将emacs作为root运行是一个非常糟糕的主意(TM)不幸的是,将gdb作为root运行也是一个相当糟糕的主意(TM)由于类似.debug\u gdb\u scripts部分的原因,您可能需要设置自动加载脚本no@matt,谢谢你的评论。我已经更新了答案以反映它。@使用俄语,当我键入alt+x gdb时,sudo gdb然后键入passwd。它只是停留在那里。我可以在终端中使用“sudo gdb”。