TASK_TRACED是被跟踪的状态,进程会停下来等待跟踪它的进程对它进行进一步的
操作。如何才能制造出处于TASK_TRACED状态的进程呢?最简单的例子是用gdb调试
程序,当进程在断点处停下来时,此时进程处于该状态。
下面用一个最简单的hello程序来验证gdb停下来的程序的确处于TASK_TRACED的
状态。
代码如下:
编译:
在一个终端,gdb将程序停下,停在断点处:
在另一个终端查看进程的状态:
显示为T的那个进程处于TASK_TRACED状态,进程号为2252
也可以用cat命令查看其状态,如下:
TASK_TRACED状态是处于暂停状态,它不会被SIGCONT信号唤醒。只有调试进程
通过ptrace系统调用,下达PTRACE_CONT、PTRACE_DETACH等指令,或者调试
进程退出,被调试的进程才能恢复TASK_RUNNING的状态。
TASK_TRACED是被跟踪的状态,进程会停下来等待跟踪它的进程对它进行进一步的
操作。如何才能制造出处于TASK_TRACED状态的进程呢?最简单的例子是用gdb调试
程序,当进程在断点处停下来时,此时进程处于该状态。
下面用一个最简单的hello程序来验证gdb停下来的程序的确处于TASK_TRACED的
状态。
代码如下:
编译:
在一个终端,gdb将程序停下,停在断点处:
在另一个终端查看进程的状态:
显示为T的那个进程处于TASK_TRACED状态,进程号为2252
也可以用cat命令查看其状态,如下:
TASK_TRACED状态是处于暂停状态,它不会被SIGCONT信号唤醒。只有调试进程
通过ptrace系统调用,下达PTRACE_CONT、PTRACE_DETACH等指令,或者调试
进程退出,被调试的进程才能恢复TASK_RUNNING的状态。