linux – 为什么gdb需要root权限来调试用户程序?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 为什么gdb需要root权限来调试用户程序?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1523字,纯文字阅读大概需要3分钟。
内容图文
我已经成功使用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.
内容总结
以上是互联网集市为您收集整理的linux – 为什么gdb需要root权限来调试用户程序?全部内容,希望文章能够帮你解决linux – 为什么gdb需要root权限来调试用户程序?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。