在开始前细说前,了解一下进程的状态
符号 | 说明 |
---|---|
D (TASK_UNINTERRUPTIBLE) | 不可中断的睡眠状态。 |
R (TASK_RUNNING) | 进程执行中。 |
S (TASK_INTERRUPTIBLE) | 可中断的睡眠状态。 |
T (TASK_STOPPED) | 暂停状态。 |
t (TASK_TRACED) | 进程被追踪。 |
w (TASK_PAGING) | 进程调页中,2.6以上版本的内核中已经被移除。 |
X (TASK_DEAD – EXIT_DEAD) | 退出状态,进程即将被销毁。 |
Z (TASK_DEAD – EXIT_ZOMBIE) | 退出状态,进程成为僵尸进程。 |
其他的就只能靠自行google
了
下面尝试一下gdb
后进程的状态差异:
/lib/x86_64-linux-gnu/ld-2.31.so /bin/ln -s /lib/x86_64-linux-gnu/ld-2.31.so /lib64/ld-linux-x86-64.so.2
ptrace
ptrace
函数是Linux
内核提供的一个用于进程跟踪的系统调用,通过它,一个进程(gdb
)可以读写另外一个进程(hello
)的指令空间、数据空间、堆栈和寄存器的值。而且gdb
进程接管了hello
进程的所有信号,也就是说系统向hello
进程发送的所有信号,都被gdb
进程接收到,这样一来,hello
进程的执行就被gdb控制了,从而达到调试的目的。
pstree
PREVIOUS23种设计模式和6大原则简述
NEXTunreal C盘缓存修改