Nếu bạn muốn /proc/sys/kernel/yama/ptrace_scope
đặt thành giá trị mặc định của nó 1
, thì như một cách giải quyết bạn có thể cân nhắc sử dụng gdb
để chạy chương trình bạn muốn gỡ lỗi. Sau đó, bạn có thể đưa ra trình gỡ lỗi chỉ bằng cách nhấn ^C
. Ví dụ, để gỡ lỗi cho chương trình (nhàm chán) sleep 60
, hãy làm như sau:
$ gdb -q sleep -ex 'run 60'
Dưới đây là một ví dụ đầy đủ.
$ 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
Vì /bin/sleep
được (không có gì đáng ngạc nhiên) được biên dịch mà không có thông tin gỡ lỗi, nên phần nền phía trên chứa thông tin tối thiểu.