gdb需要以root身份运行。emacs gdb-many-windows。

9

我作为普通用户在Emacs中使用gdb-many-windows。但是该程序需要以root身份运行。我能否在运行gdb-many-windows之前在Emacs中切换到root用户?还有其他解决此问题的方法吗?

更新:谢谢大家。

4个回答

5
当你执行Meta-X gdb时,emacs允许你更改它将调用的gdb命令。只需将其更改为sudo gdb --annotate=3 ...。更新:正如matt所评论的那样,这仍然相当不安全。最好做成
sudo /usr/bin/gdb -ex 'set auto-load-scripts no' --annotate=3 ...

一个更好的方法可能是改变您的设置,使得您正在调试的程序在第一次运行时不需要以root身份运行。也许您可以使用fakeroot代替?
更新2:sudo似乎会干扰emacs终端处理。特别是,它尝试从/dev/tty读取密码,并且没有从emacs mini-buffer获取输入。
解决方案是允许自己通过sudo调用GDB而无需密码。像这样(在/etc/sudoers中)应该可以工作:
your_user_id ALL = NOPASSWD: /usr/bin/gdb

不幸的是,以root身份运行gdb也是一个相当糟糕的想法(商标),因为像.debug_gdb_scripts部分这样的东西。您可能希望设置auto-load-scripts no。 - matt
@matt,感谢您的评论。我已经更新了答案以反映它。 - Employed Russian
1
@Employed Russian,当我在终端输入alt+x gdb,sudo gdb然后输入密码时,它就卡在那里了。我可以在终端中使用“sudo gdb”。 - louxiu

1
这里没有提到的解决方案是,在构建脚本中设置二进制文件的setuid位并将所有权设置为root。
chmod u+s binaryname
chmod g+s binaryname
chown root:root binaryname

那可能比这两个答案都更安全(尽管它会让任何拥有执行权限的人以root身份运行文件,但这可能不是你想要的...)

1
似乎有一种方法可以在不修改sudoers的情况下使用emacs 25来完成这个任务。您需要进入emacs中的任何缓冲区(我通常使用项目中的文件),执行'M-x cd'命令,选择'/sudo::/' - 这将更改默认目录。然后,当您运行'M-x gdb'时,gdb将在sudo下运行(系统会提示您输入密码)。请参考这里的链接:https://groups.google.com/forum/#!topic/gnu.emacs.help/DdAev2pWJMw

0

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


是的,这是我现在使用的方法。但它并不是很方便 :-( - louxiu
1
以 root 用户身份运行emacs是一个非常糟糕的想法(商标) - Employed Russian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接