

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: 許可されていない操作です.

質問の内容としましては、以上の状況で、  
１．アタッチできない理由  
２．どうすればアタッチできるようになるのか  
が知りたいです。

ご教示お願い致します。


CC BY-SA 4.0
2018-11-01T10:16:29.787
49855
2018-11-01T15:44:27.580
30707
question
linux gdb
gdbのattachについて


コメントを参考にさせていただきながら、自己解決しました。

/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に編集して保存。

以上でアタッチできるようになりました。


CC BY-SA 4.0
2018-11-01T15:44:27.580
49870
2018-11-01T15:44:27.580
30707
49855
answer