質問: os : Linux version 4.15.0-38-generic (buildd@lcy01-amd64-023) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) ユーザーの入力待受状態になっている自作プログラムに対して、違うpts番号を持つ別の仮想端末からgdbでアタッチしようとしているのですが失敗します。 プログラムはgcc -gオプション付きでコンパイルしました。 gdb -p (pid)でアタッチしようとしています。 以下がメッセージとしてgdb起動時に出力されます。 Attaching to process 16458 Could not attach to process. If your uid matches the uid of the target process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf ptrace: 許可されていない操作です. 質問の内容としましては、以上の状況で、 1.アタッチできない理由 2.どうすればアタッチできるようになるのか が知りたいです。 ご教示お願い致します。
回答: コメントを参考にさせていただきながら、自己解決しました。 /etc/sysctl.d/10-ptrace.conf の記述と $ man 2 ptrace の記述を参照しました。 1.ubuntu環境では他のプログラムから制御を奪われることを避けるために、デフォルトではptace(2)でプロセスにアタッチすることができないように制約されている。 2.一時的にアタッチできるようにする(再起動でデフォルトの設定に戻る) $ echo 0 > /proc/sys/kernel/yama/ptrace_scope 永続的にアタッチできるようにする /etc/sysctl.d/10-ptrace.conf の最終行 kernel.yama.ptrace_scope = 1 の値を0に編集して保存。 以上でアタッチできるようになりました。