Почему GDB не может прикрепить к серверному приложению, вызванному с INETD?

StackOverflow https://stackoverflow.com/questions/1586812

  •  22-09-2019
  •  | 
  •  

Вопрос

У меня есть серверное приложение, которое можно вызвать для клиента, используя INETD. Однако, если я попытаюсь прикрепить к серверному процессу, который был запущен с INETD, я получаю следующий ответ: PTRACE: Операция не разрешена.

gdb --annotate=3 /my/app/here <processId>

Current directory is /usr/local/bin/
GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
Reading symbols from /usr/local/bin/flumed...done.
Using host libthread_db library "/lib/tls/libthread_db.so.1".
Attaching to program: /my/app/here, process <processId>
ptrace: Operation not permitted.
/usr/local/bin/<processId>: No such file or directory.
(gdb) 
Это было полезно?

Решение 2

По -видимому, все становится причудливым с inetd, где пользователь не является корнем. Вы получите процесс со странными разрешениями. Например, вы не можете прочитать/proc/self/exe, даже если разрешения 777. Я подозреваю, что эта проблема более такая же. Несмотря на то, что я изнася в процессе, у меня нет разрешений. Использование Root для GDB - это обход.

Другие советы

Решением для меня было следующее:

echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

Дальше, что сказал Tgoodhart, другие ptrace Пользователям нравится /usr/bin/strace также будет блокировать gdb.

Я также видел, как эта проблема возникает, когда несколько экземпляров GDB работают одновременно, обычно потому, что я не смог правильно закрыть GDB. Закрытие этих просочившихся экземпляров исправило проблему.

Пожалуйста, запустите следующую команду, чтобы решить вашу проблему:

sudo chmod +s/usr/bin/gdb

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top