在开始前细说前,了解一下进程的状态
| 符号 | 说明 |
|---|---|
| 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盘缓存修改