高效工具实战指南:Procexp64进程资源管理器

目录

1.下载Procexp64进程资源管理器

2.使用Procexp64进程资源管理器


前言

本篇博客主要讲解的是Procexp64进程资源管理器,这是Sysinternals套件里一个加强版的任务管理器",它把Windows自带任务管理器只能给的粗粒度CPU / 内存 / 磁盘数据,往下详细到了进程级、线程级甚至句柄级,你能直接看到某个进程打开了哪些文件句柄、加载了哪些DLL、占了哪个TCP端口、哪个线程正在跑什么调用,这对开发调试文件占用、端口冲突、句柄泄漏是救命的;它还能挂符号表把线程栈还原成函数名,排查死锁或高 CPU 线程时不用开WinDbg就能先粗定位,进程树模式能看清谁spawn了谁。而且能实时看GPU、I/O、私有工作集这些更细的指标,比任务管理器那点信息深得多,算是Windows下开发者和运维排障的标配。


下载Procexp64进程资源管理器

Procexp64进程资源管理器下载链接如下:

Procexp64进程资源管理器下载链接https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer

点击下载链接跳转至下载网站后,点击Download Process Explorer即可下载Procexp64进程资源管理器。如下图:

图1.下载Procexp64进程资源管理器


使用Procexp64进程资源管理器

下载成功以后,解压压缩包双击procexp64.exe可执行文件即可打开Procexp64进程资源管理器。

图2.打开Procexp64进程资源管理器

打开Procexp64进程资源管理器以后,如图3我们能看到主界面分为以下几个模块:
1.菜单栏:包含File/Options/View/Process/Find/Users/Handle/Help,用于设置视图、查找进程、查看句柄等。

2.性能小图:顶部的小型实时曲线,用来快速观察CPU、内存、I/O等资源变化。

3.进程树:左侧按父子关系展示进程,例如多个msedge.exe是Edge的多进程结构。

4.资源列:例如CPU代表当前的CPU占用,PrivateBytes代表进程私有虚拟内存,WorkingSet代表当前实际驻留物理内存,PID代表进程ID。

5.下方面板标签:Handle/DLLs/Threads,用于查看选中进程的句柄、加载 DLL、线程。

6.状态栏:底部显示全局资源状态。

图3.Procexp64主界面

接下来我们使用Weixin.exe举例,点击下方的DLLS既能查看Weixin.exe加载的一些动态链接库的信息。

图4.进程加载的DLL信息

也可以通过调整为Threads查看当前Weixin.exe创建的线程状态和性能数据。

图5.进程创建的线程信息和性能数据

在主界面中,我们也可以对进程右键来手动创建Dump文件,这与资源管理器的操作是一致的。

图6.创建Dump文件

如果我们需要查看更详细的进程当前详细,则需要双击选中的进程打开子窗口即可查看详细数据,如下图:

图7.查看详细的进程信息

在进程的详细信息窗口中,我们可以在Threads页下查看以下信息:
1.Count:线程总数

2.进程创建的线程信息:PID代表线程ID,CPU代表该线程当前的CPU使用率,CyclesDelta代表线程近期的CPU周期变换,SuspendCount代表线程被挂起的次数,StartAddress代表线程入口或者当前符号的位置,可以用来判断线程来自哪一个DLL或者模块

3.所选线程运行状态:State代表线程当前所处的状态,KernelTime和UserTime分别表示内核态和用户态的累计执行时间,ContextSwitches代表线程上下文的切换次数,BasePriority和DynamicPriority分别代表线程基础优先级和动态优先级,IdealProcessor代表系统倾向于把当前线程调度到哪一个CPU

图8.进程详细信息窗口

而我们在进程详细详细窗口中双击选中的线程,可以弹出线程当前调用的堆栈信息,这些信息可以帮助我们分析线程泄露等问题。

图9.线程调用堆栈窗口

除去Threads标签以外,我们可以在Performance标签页中查看到以下信息:
1.CPU信息:当前进程的优先级和累计消耗的CPU时间

2.虚拟内存信息:当前经常提交内存大小

3.物理内存信息:当前经常占用的物理内存大小

4.进程I/O信息:当前进程的IO信息

5.进程句柄信息:当前进程的句柄信息,如果句柄数持续上涨则代表句柄泄露

图10.Performance标签页

在GPU Graph标签页中,我们可以查看到以下信息:
1.GPU Usage:当前进程调用GPU渲染和计算的使用率

2.Dedicated GPU Memory :当前进程占用的独立显存信息

3.System GPU Memory :当前进程使用的共享系统内存空间

4.Committed GPU Memory :当前进程提交的GPU内存总量

图11.GPU Graph标签页

在Image标签页中,我们可以重点关注以下信息:
1.Version:当前进程的版本信息

2.Path:当前进程的可执行文件路径

图12.Image标签页

在Environment标签页中,我们可以查看当前进程的环境变量信息,如图13。

图13.Environment标签页

在Performance Graph标签页中,我们可以观察到当前进程CPU相关的信息,具体如下:
1.CPU Usage:当前进程的CPU使用率

2.Private Bytes:当前进程提交的私有内存大小

3.I/O:当前进程的IO使用率

图14.Performance Graph标签页

相关推荐
·薯条大王6 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
hansang_IR11 小时前
【题解】LC:倍增 / 区间并查集(Range Parallel Unionfind)
c++·算法·并查集
东东最爱敲键盘11 小时前
day7.c++继承
c++
沫璃染墨11 小时前
《从零入门Linux系统篇(十五):系统工具篇·六——GDB调试器详解:从程序执行控制到高级调试技巧》
linux·运维·服务器·c语言·c++
吃着火锅x唱着歌12 小时前
Effective C++ 学习笔记 条款40 明智而审慎地使用多重继承
c++·笔记·学习
醉城夜风~12 小时前
(超详细)C++ STL list容器详解:从使用方法到双向链表底层原理全面解析
c++·windows
烟花落o13 小时前
C++ 从 C 到进阶 ②:引用、inline 、nullptr
c++·引用·inline·nullptr·c++入门
liulilittle13 小时前
MOE路由:路由(logits: top-k/8)
c++·人工智能·算法·机器学习·llm
旖旎夜光13 小时前
LeetCode 11:盛最多水的容器(双指针问题) —— 题解
数据结构·c++·算法·leetcode·双指针
凤山老林13 小时前
在 Apple 芯片的 Mac 上通过 VMware Fusion 使用 Windows 11
windows·macos·vmware·虚拟机