我已经相当成功地使用 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权限 https://askubuntu.com/questions/41629/after-upgrade-gdb-wont-attach-to-process- 似乎不起作用。
是否需要做一些事情才能让 gdb 在没有 root 权限的情况下运行程序?我知道在 OSX 中,gdb 必须进行协同设计。 Ubuntu/Linux 有类似的东西吗?
我将登录 shell 更改为 bash,并且 gdb 不再需要 root 权限来调试。这是最新的:
My .gdbinit
file:
(bash) ~ % more .gdbinit
show environment SHELL
file /bin/echo
run 'running .gdbinit'
(bash) ~ %
以及运行结果gdb
:
(bash) ~ % gdb -q -batch
SHELL = /bin/bash
running .gdbinit
[Inferior 1 (process 3174) exited normally]
(bash) ~ %
不过,我仍然不明白为什么 tcsh 不起作用,并且很想知道。因此,如果有人有可能的解释,请发表评论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)