Process Monitor 是一款 Windows 平台的高级监控工具。它可以记录系统中注册表、文件和进城、线程的活动。功能上集合了 Sysinternals 组件中 FileMon 和 RegMon 的功能并添加了很多方便排查问题的实用功能,如过滤条件并且提供了丰富的事件属性,如 Session IDs 、用户名、进程信息、调用栈等等。这些特性使 Process Monitor成为 Windows 平台中不可或缺的神兵利刃。
Procmon 强大的功能集
强大的条件过滤功能,方便我们快速定位;
捕获每个操作的线程堆栈;
可靠捕获进程详细信息,如映像路劲、命令行、用户、加载的模块和会话 ID等;
进程树可以详细的列举进程的父子关系;
PML格式支持保存所有日志信息,以便在不同的 Process Monitor实例中加载;
支持引导启动,方便排查启动过程中的错误;
Process Monitor 的缺点
日志缓存在虚拟内存中,长时间抓取时会导致内存不足;一般情况下我们建议每隔一小时启停一次,可以配合脚本或者定时任务来完成;
条件设置的逻辑关系无法自定义;
如何开启Process Monitor数据收集
启动Process Monitor工具.
点击
图标清空日志。
点击
图标,之后该图标会变为
表示此时正在收集数据。
如何保存Process Monitor收集到的数据
点击
图标,之后该图标变为
表示数据收集工作已经停止。
点击
图标保存日志,选择“All events”,格式选择为PML,如下图所示:
如需要排查某应用的问题,则可以先添加 Process Name 条件为某应用的名称;
如需要定位注册表,则可以尝试设置可能的 Path 路径条件 或者可能的关键字;
如需要定位 FileNotFound 的问题,则可以设置 Result 为 FileNotFound;
添加合适条件后尝试使用二分法定位具体位置,可以结合对应的事件属性,如调用栈;
如何抓取系统启动时的事件
在 Option 中选择 Enable Boot Logging 功能,如下图:
配置 Symbol 路径,可以在 Process Monitor –> Option –> Configure Symbols 中配置或者设置系统环境变量,可以参考文章
Specify symbol file locations from the command line
双击事件并选择 Stack 列,则可以看到对应的调用栈,该功能部分场景下只有 public symbol 时意义不大,但如果有 private symbol 则如虎添翼;
本文作者:
Robin Chen
本文链接:
https://crushonme.github.io/2018/09/10/How-To-Use-Process-Monitor/
版权声明:自由转载-非商用-非衍生-保持署名(
创意共享4.0许可证
)
Document Information
Author :
Robin Chen
Link :
https://crushonme.github.io/2018/09/10/How-To-Use-Process-Monitor/