进程与线程

来源:互联网 发布:win10关于windows在哪 编辑:程序博客网 时间:2024/06/17 20:31

  3 进程与线程

  既可以显示进程和线程列表,又可以显示指定进程或线程的详细信息。调试命令可以提供比taskmgr更详尽的进程资料,在调试过程中不可或缺。

  3.1 进程命令

  进程命令包括这些内容:显示进程列表、进程环境块、设置进程环境。

  进程列表

  多个命令可显示进程列表,但一般只能在特定情况下使用,它们是:|、.tlist、!process和!dml_proc。

  竖线命令显示当前被调试进程列表的状态信息,这个命令在本章开头已作过介绍,命令格式如下:

  | [进程号]

  请注意这里的定语:被调试进程列表。大多数情况下调试器中只有一个被调试进程,但可以通过.attach或者.create命令同时挂载或创建多个调试对象。当同时对多个进程调试时,进程号是从0开始的整数。下图中显示了两个被调试的进程。

  如何在多个进程间进行切换呢?使用s参数即可,这一点前文已然讲过。

  .tlist [选项] [模块名]

  .tlist命令显示当前系统中的进程列表,他是目前唯一可在用户模式下显示系统当前进程列表的命令。它有两个可选项:-v显示进程详细信息,-c只显示当前进程信息。

  内核模式下同样可以使用.tlist,但更好的命令是!process。!process在内核模式下显示进程列表,和指定进程的详细信息,也能显示进程中的线程和调用栈内容。典型格式如下:

  !process: 显示调试器当前运行进程信息

  !process 0 0: 显示进程列表

  !process PID: PID是进程ID,根据进程ID显示此进程详细信息。

  此外,还有一个DML版本的进程列表命令,如下:

  !dml_proc [进程号|进程地址]

  此命令可以看成“|”和“!process”命令的DML合并版本,可在用户与内核模式下使用。显示的进程信息偏重于线程和调用栈。用户模式下此命令和“|”一样,只能显示被调试进程的信息。右图是内核模式下使用此命令的效果:

  进程信息

  进程环境块(Process Enviroment Block)是内核结构体,使用!peb命令参看其信息,但也可以用dt命令查看完整的结构体定义。格式如下:

  !peb [地址]

  如果未设置PEB地址,则默认为当前进程。内核模式下可通过!process命令获取PEB结构体地址;用户模式下只能显示当前进程的PEB信息,故而一般不带参数。

  dt nt!_peb 地址

  此命令显示系统nt模块中所定义的内核结构体PEB详细内容。使用之前必须先熟悉结构体定义。

  进程切换

原创粉丝点击