質問: アップグレード後、gdbはプロセスにアタッチしません 私は最近10.04から11.04にアップグレードしましたが、gdbでプロセスに接続できなくなり、エラーが発生します プロセスにアタッチ10144プロセスにアタッチできませんでした。 uidがターゲットプロセスのuidと一致する場合は、/ proc/sys/kernel/yama/ptrace_scopeの設定を確認するか、rootユーザーとして再試行してください。詳細については、/ etc/sysctl.d/10-ptrace.conf ptrace:operation not allowedを参照してください。 sudoなしで再びデバッグできるようにするにはどうすればよいですか?
回答: /proc/sys/kernel/yama/ptrace_scopeをデフォルト値1に設定したままにする場合は、回避策として、gdbを使用してデバッグするプログラムを実行することを検討できます。 ^cを押すだけでデバッガを起動できます。たとえば、(退屈な)プログラムsleep 60をデバッグするには、次の手順を実行します。$ gdb -q sleep -ex 'run 60' 完全な例を次に示します。$ gdb -q sleep -ex 'run 60' reading symbols from sleep...(no debugging symbols found)...done. starting program: /bin/sleep 60 ^c program received signal sigint, interrupt. 0x00007ffff7ad5d60 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-template.s:81 81 ../sysdeps/unix/syscall-template.s: no such file or directory. (gdb) backtrace #0 0x00007ffff7ad5d60 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-template.s:81 #1 0x0000000000403cd7 in ?? () #2 0x0000000000403b88 in ?? () #3 0x00000000004016c9 in ?? () #4 0x00007ffff7a35ec5 in __libc_start_main (main=0x401540, argc=2, argv=0x7fffffffea08, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe9f8) at libc-start.c:287 #5 0x00000000004017d5 in ?? () (gdb) continue continuing. [inferior 1 (process 3531) exited normally] (gdb) quit /bin/sleepは(当然のことながら)デバッグ情報なしでコンパイルされたため、上記のバックトレースには最小限の情報が含まれています。