xmo*_*oex 62
sudo visudo<youruser> ALL=(root) NOPASSWD:/usr/bin/gdbgdb中sudo -u <youruser> gdb更新(和警告!):
在他的评论中,nategoose指出这个答案应该带有警告:
使用户使用sudo的gdb像我的回答表明实际上给管理权限给他/她在许多情况下可能是不希望的副作用.因此,我认为答案适用于不假设用户会试图损害系统的环境(例如,它是您自己的个人计算机或虚拟机)
对于多(非信任)用户环境,我认为这可能是一个更好的idead利用UNIX"文件的能力,使gdb而不需要管理员权限来调试应用程序
nat*_*ose -2
从包含可执行文件的目录中的控制台:
sudo gdb ./my_program
Run Code Online (Sandbox Code Playgroud)
如果 eclipse 支持远程调试,那么即使它在本地运行,您也可以这样做。
从控制台:
sudo gdbserver localhost:<port_number> ./my_program
Run Code Online (Sandbox Code Playgroud)
然后告诉 Eclipse 地址(localhost 和您选择的端口号)。
哦,是的,你说你这样做的原因是因为你正在使用libpcap,所以你可能不想使用 TCP 上的远程调试,因为除了其他网络流量之外,你最终可能还会捕获调试连接数据包。
在这种情况下,您可以通过串行端口进行远程(但实际上是本地)调试。我从未在本地计算机上这样做过,但您可以使用两个实际的串行端口(通过空调制解调器连接它们)或尝试使用伪终端:
sudo gdbserver /dev/ptmx ./my_program
Run Code Online (Sandbox Code Playgroud)
这将在下面创建伪终端,/dev/pts/但您必须弄清楚它的名称,并且它也可能会使用限制性权限创建它。你可以绕过这些。除非您以 root 身份运行大量终端窗口,否则您不太可能有许多/dev/pts属于 root 的条目,因此请记下运行上述命令后执行的操作,然后sudo chmod将sudo chown其用于正常情况用户,然后告诉您的调试器使用它作为与远程调试目标的串行连接。