linux – 为什么gdb需要root权限来调试用户程序?
发布时间:2020-12-14 00:34:32 所属栏目:Linux 来源:网络整理
导读:我已经成功使用gdb了一段时间,但我最近升级了我的Ubuntu版本,现在看来如果我以root身份运行,我只能获得gdb才能成功运行我的程序.那是, ~ % gdb -q sleep -ex 'run 60'Reading symbols from /bin/sleep...(no debugging symbols found)...done.Starting progr
我已经成功使用gdb了一段时间,但我最近升级了我的Ubuntu版本,现在看来如果我以root身份运行,我只能获得gdb才能成功运行我的程序.那是,
~ % gdb -q sleep -ex 'run 60' Reading symbols from /bin/sleep...(no debugging symbols found)...done. Starting program: /bin/sleep 60 tcsh: Permission denied. During startup program exited with code 1. (gdb) 失败,而 ~ % sudo gdb -q sleep -ex 'run 60' Reading symbols from /bin/sleep...(no debugging symbols found)...done. Starting program: /bin/sleep 60 Running .tcshrc warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7ffff7ffa000 ^C Program received signal SIGINT,Interrupt. 0x00007ffff7adada0 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-template.S:82 82 ../sysdeps/unix/syscall-template.S: No such file or directory. (gdb) 作品.一个线索是,在第一种情况下,gdb启动不运行我的.tcshrc文件,而在第二种情况下它运行. 这似乎是一个简单的权限问题,我必须一次修复,因为在过去,我从来不需要以root身份运行gdb.然而,经过大量的谷歌搜索,我无法找到我可能做过的事情(如果我确实做了一些事情).一个可能的解决方案 – 设置ptrace permissions – 似乎不起作用. 有没有什么需要做的,以允许gdb运行没有root权限的程序?我知道在OSX中,gdb必须经过编码. Ubuntu / Linux有类似的东西吗? 解决方法
这里有一些调试gdb问题的想法.评论对于这样的事情并不可行,所以我把它们放到了答案中.
尝试-n选项以确保没有加载init文件. 使用echo程序而不是sleep 60来使调试更简单(示例中的SIGINT事物可能特定于睡眠程序. 运行gdb -batch并将其余部分放入?/ .gdbinit: file /bin/echo run 添加set verbose. 完成后不要忘记清理?/ .gdbinit. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |