Procexp工具使用及案例说明
2020-07-15 10:41:08    253    0    0
janhui

【工具概述】

        Procexp,即process explorer,进程浏览器。用来查看计算机上运行的进程的状态。(CPU、内存、句柄、加载dll、线程及堆栈等)

【功能介绍】

1. 查看进程CPU、内存

        打开工具主界面就能看到PID、CPU、内存使用等情况,和资源管理器类似。

2. 查看进程挂载的DLL文件、句柄

        在上方菜单栏或者工具栏打开show lower pane。如下:

 

        打开后选定某进程,可在下方界面看到指定的进程所加载的所有DLL,如下:

       点击View Handles,显示该进程的句柄信息。

 

        点击右边的望远镜查找所有进程、DLLs、Handle等信息,比如,我查找Cryptnetwork.dll。结果如下:

        这里有所有加载了该库文件的进程。点击可跳转到该进程的对应信息。这个功能在查找自己的目标进程是否成功加载自己的dll时很好用。

3. 查看进程线程及堆栈

        在主界面上,双击某进程,可打开该进程的属性页,如下:

        这里可以看到,进程的模块信息、资源占用、线程、网络监听等。下面主要说线程及堆栈。

        要看程序的线程及堆栈信息,需要有该进程及下属DLL模块的PDB符号文件。将对应文件拷贝到文件夹如:C:\mysymbol 。然后打开option。如下:

 

 

        将刚才的pdb文件目录填在里面。其中前半段是微软的库文件的符号文件,他会在指定网站下载存在C:\symbols。后半段是我们配置的。

        完成后打开进程查看,就能看到进程下的线程信息。(如果不配置也能看到,但对应不到线程名等,下面有对比)

 

        配置好了,会有如上显示,正在加载符号文件。稍等后显示出来了,如下:

 

        如果不配置符号文件,只能看到对应的模块名和线程ID,如下:

 

        然后,我们点击某线程进去可以看到对应的堆栈信息。如下:

 

        栈信息从下向上看,看到该线程,调用了ws2_32的Accept,然后就是线程等待。这一定是监听了端口,在等待连接。

【注意事项】

        Procexp工具一定要以管理员权限运行,否则看不到部分SYSTEM进程信息,影响问题定位。

【案例一  查看堆栈信息定位进程崩溃】

        之前用该工具定位了一个偶现的进程崩溃的问题,因为之前的截图找不到了,我自己写了几句简单的代码,来复现这个崩溃。如下:

 

        上面的fseek函数的第一个参数不能为空,之前我们的进程崩溃就是因为多个进程访问文件时,打开文件失败了,文件句柄为NULL,但是没有判断,直接送给fseek,导致了进程崩溃。这次我直接写个错误的,让他崩溃,然后我们来定位一下。

        运行编译出的工具,出现崩溃界面,如下:

 

        这时不要关闭该窗口,因为关闭了之后,进程就会关闭,他的栈也会释放掉,现在打开procexp,配置好symbols path(pdb文件在编译的时候就一起生成了,拷贝到指定目录即可),找到ffff.exe,然后双击打开属性,查看线程信息,如下:

 

        找到主线程,双击进入,查看堆栈信息。如下:

 

        发现,程序在执行tmain进入后,执行fseek,然后就开始报错。所以直接怀疑此处代码,先找到主线程,然后找到主线程下的所有fseek函数,就能锁定问题原因了。

【案例二  小工具锁定广告来源】

        电脑右下角经常会弹出很多小广告,也不知道是哪些进程弹出来的,很是烦人,在procexp上,有个小工具,能锁定该广告所属进程,这样就能关闭删除之。

        操作如下:

        点击图示按钮,拖动到广告页面,放开鼠标,工具会自动定位到广告的来源进程,找到后,删除进程或删除进程文件即可。

        Procexp工具就介绍到这里,还有很多没有说的功能大家去探索。好的工具能帮助我们很快分析定位问题。

上一篇: 口型参考图

下一篇: Windows10电脑查看IP地址的方法

253 人读过
立即登录, 发表评论.
没有帐号? 立即注册
0 条评论
文档导航