由来:在日常程序问题排查过程中,我们经常会用到一款大名鼎鼎的工具:Process Explorer(简称:Procexp),这款产品可以让我们很直观的看到一个线程的CPU、内存、线程堆栈、模块加载信息等等有用的信息,对于日常问题的排查提供了很大的方便。但这款软件依旧不能获取我们需要的部分信息,比如缺少获取进程死锁信息、堆栈对应的代码行号信息等。在做助手死锁检测功能的时候我顺便也做了款可视化的问题排查工具:processInfo,这款软件具有显示任意进程的线程运行状态信息,以及显示相应堆栈(可直接匹配代码行号)信息等功能,一定程度上弥补了Procexp功能上的不足。
工具的实用:工具沿用了Procexp的使用习惯,具体ProcExp的使用方法这里不做过多赘述。这里对ProcessInfo的使用做简单介绍:
- 主界面:
- 符号设置:
ProcExp不能设置符号信息,所以回溯的堆栈就没有相应的代码行号,这对于堆栈的分析是不太方便的一个点 - 查看堆栈信息:
同样用ProcExp回溯同一个线程的堆栈:
不足和需要改进的地方:
- 64位的ProcessInfo无法查看32位目标进程的堆栈信息,这个问题暂时没有解决,有好的方法劳烦告诉我。所以暂时如果需要查看32位的目标进程堆栈,请用32位的ProcessInfo,如果需要查看64位的目标进程堆栈,请用64位的ProcessInfo。
欢迎来下载使用:
工具下载地址: https://download.csdn.net/download/liaozhilong88/11444864
注:代码主要来源于《Windows核心编程代码》中的《04-ProcessInfo》以及《09-LockCop》章节 《windows核心编程》源码下载