【Procdump神技能】轻松设置进程转储规则,解锁故障排查新姿势!

1. 概要:

        ProcDump是一个命令行实用工具,其主要用途是监视应用程序的CPU峰值,并在出现峰值期间生成故障转储,管理员或开发人员可以使用这些转储来确定出现峰值的原因。 ProcDump还支持挂起窗口监视(使用与Windows和任务管理器使用的窗口挂起相同的定义)、未处理的异常监视,并且可以根据系统性能计数器的值生成转储。它还可用作可嵌入到其他脚本中的常规进程转储实用工具。

可以通过以下链接下载ProcDump工具

ProcDump - Sysinternals | Microsoft Learn

本文介绍了使用Procdump指定转储文件的相关规则与方法。

2. 详细信息:

若要定期创建一系列转储,可配合使用-s和-n选项,也无需指定任何转储条件。

  • -s指定了上一次捕获结束后和下一次捕获开始前的秒数。如果忽略-s选项,默认时间周期将为10秒。
  • -n指定了进程退出前要捕获的转储数量。捕获多个范本可以防止第一个转储是某些顺变条件导致,而非试图追踪的原因导致的。

例如,下列命令可立刻为Testapp进程捕获转储,并在5秒后再次创建,再过5秒再次创建,共创建3个转储文件:

Procdump -s 5 -n 3 testapp

监视CPU用量

-c CPU用量超过指定阈值并持续指定长度的时间后自动创建转储文件。

-cl CPU用量低于指定阈值并持续同样长度的时间后自动创建转储文件。

例如,testapp使用CPU用量持续超过90%,5秒,procdump创建转储文件并退出:

Procdump -c 90 -s 5 testapp

如下命令在testapp进程CPU占用超过80%并维持3秒后创建一个转储文件,直到总共创建3个转储。

Procdump -c 80 -s 3 -n 3 testapp

在多内核系统中,单一线程无法消耗所有处理器的全部时间。双核系统中,单一线程最多消耗50%的处理时间;四核系统中,最多消耗25%,以此类推。为了在多个内核的CPU系统中针对-c和-cl阈值进行等比放大,可在命令行中使用-u(单处理选项)。例如:

Procdump -c 90 -u testapp

可在testapp的CPU用量超过45%且维持10秒的情况下创建转储,双内核45%的用量相当于单内核90%的用量。而16核系统中,触发器法制将被调整为5.6525%。

提示:-c和-cl需要使用整数值,而-u选项可以为多核系统指定更为精准的阈值。

注意:CPU密集型用户模式线程通常会设计为通过多个CPU运行,除非处理器相关性被设置为仅允许使用一个CPU。-u选项并不能实现“如果进程超过单一CPU阈值后创建转储”类似的效果。

监视内存用量

  • -m 超出指定阈值时创建转储
  • -ml 低于指定阈值时创建转储

所指定的内存阈值以MB为单位统计。Procdump每秒一次检查该进程的内存计数器,但只能在检查的一刻发现进程的内存用量相对于系统提交限制(页面文件总量+大部分RAM)超出或低于阈值时才能创建转储。如果用量的尖峰或低谷只持续很短暂的时间,Procdump可能无法检测到。

例如,下面命令可以在testapp内存用量超过200MB后创建一个转储,并且在内存用量低于200MB之前,每隔五秒创建一个转储,直到10个。

Procdump -m 200 -n 10 -s 5 testapp

使用性能计数器触发转储

-p 后跟计数器名称及条件超出的阈值。

-pl 后跟计数器名称及条件低于的阈值。

注意:如果计数器名称中包含空格,需要将名称放在引号内。

机制与内存用量监视相同,每秒检测一次,可配合-n和-s选项定期创建更多转储文件。例如下列命令,可以检测系统进程数量超过750个之后,为taskmgr.exe创建转储,随后如果进程数量依然多于750,会每秒一次额外创建2个转储(共3个)。

Procdump -p "\System\Processes" 750 -s 1 -n 3 taskmgr.exe

  • -e 在进程遇到unhandle exception之后创建转储。
  • -e 1 在每次异常后创建转储,包括第一轮异常。
  • -h 监视目标进程挂起(停止响应)的顶层窗口,之后创建转储。不响应定义:如果某个被监测的窗口无法响应窗口消息五秒,则会认为窗口不响应。
  • -n 创建多个转储。除非-s指定不同的间隔,否则首次创建转储后,每间隔10秒创建一个转储
  • -l 监视目标仅此创建的调试输出。如果不使用-f筛选选项,Procdump会在每次创建调试输出后创建一个转储。借助筛选,可以指定哪些输出触发转储,哪些仅汇报给Procdump控制台输出。
  • -t 可在进程终止时创建转储。用于找出非由unhandled-exception导致的进程非预期退出。
  • -f 指定哪些异常或调试输出可触发转储,或仅输出值Procdump控制台输出。如果只希望查看所有调试输出和第一轮异常但不创建转储,可使用-f "",或其他绝对不会出现在输出结果中的任何文本,例如-f "THISWILLNEVERHAPPEN"

3. 示例与演示:

范例1:Procdump附加至Word实例并回报遇到的第一轮异常信息,但不会创建转储文件

Procdump.exe -e 1 -f "" winword.exe C:\temp

范例2:随后10次遇到该第一轮异常后,每次创建完整转储并存储至C:\Temp目录,该异常代码为C0000005,代表“访问冲突”

Procdump.exe -ma -n 10 -e 1 -f c0000005 winword.exe C:\Temp

范例3:多选项配合使用。下列命令会在Testapp应用超过CPU阈值或内存用量阈值且维持3秒后,窗口不响应,或遇到unhandled-exception的异常后创建转储,其他情况则会自动退出。

Procedump.exe -m 200 -c 90 -u -s 3 -h -t -e testapp

演示:利用性能监视器配合procdump监视进程内存使用。

1)运行perfmon,性能监视器添加memory - committed bytes计数器。

2)右键点击刚刚添加的计数器 – 属性,查看计数器的名称。

3)找到想要监控进程的PID,并运行如下命令监控对应的进程,如果超出限额后自动创建转储:

Procdump -p "\Memory\Committed Bytes" 200000 892

4. 参考资料:

    《Windows Internals实战指南》

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 微软procdump32是一款用于生成进程转储文件的实用工具。通过使用procdump32,用户可以捕获正常运行或崩溃的进程的内存快照,以便进一步调试和分析。以下是procdump32的一些重要特点: 1. 进程转储procdump32可以将进程的完整内存转储保存到一个文件中。这个文件包含了进程的当前内存状态,包括堆栈、寄存器以及其他关键信息。这个文件可以在之后由开发人员用于分析和调试。 2. 异常转储:如果一个进程发生异常或崩溃,procdump32可以自动捕获崩溃信息并生成转储文件。这个转储文件可以被用于分析程序为什么崩溃的原因,并帮助开发人员修复错误。 3. 高度可配置:procdump32提供了丰富的配置选项,例如指定进程异常时自动触发转储的阈值、转储文件的位置和格式等。这使得开发人员可以根据特定的需要调整工具的行为。 4. 命令行界面:procdump32支持命令行使用,可以通过命令行参数指定要转储进程PID或名称。这使得工具可以很容易地集成到自动化脚本或其他调试工具中。 总的来说,微软procdump32是一个功能强大的进程转储工具。它可以帮助开发人员捕获进程的内存状态,使得调试和分析变得更加方便有效,从而提高开发效率和软件质量。 ### 回答2: Procdump32是微软开发的一款用于抓取进程的崩溃转储信息的实用工具。该工具可以在Windows操作系统上运行,并且提供了命令行界面,易于使用。 Procdump32的主要作用是在指定的进程崩溃时生成转储文件,用于分析程序崩溃的原因。它可以捕获进程的崩溃堆栈、寄存器以及其他相关信息,并将其保存在转储文件中。这些转储文件可以被开发人员或调试人员用于故障排除和问题分析。 除了捕获进程崩溃时的转储信息外,Procdump32还支持针对特定的性能指标、异常条件或CPU利用率等情况生成转储文件。用户可以根据需要配置这些转储规则,并在指定的条件满足时生成转储文件,以便进一步分析和调试问题。 Procdump32可以用于分析各种类型的进程崩溃,包括应用程序、驱动程序等。它是一个非常强大和实用的工具,特别适用于开发人员和系统管理员在诊断和解决应用程序崩溃问题时使用。 总之,微软的Procdump32是一款功能强大的工具,可以帮助用户捕获和分析进程崩溃的转储信息。它是一个重要的故障排除工具,可以提高应用程序的稳定性和可靠性。 ### 回答3: 微软procdump32是一款用于Windows操作系统的实用工具,它主要用于生成进程转储文件(Dump File)。进程转储文件是指在程序崩溃或出现异常时,记录下进程的内存状态、栈信息及其他相关的调试信息,以便后续进行分析和调试。 使用procdump32可以方便地监视和生成指定进程转储文件。它提供了多种配置选项,通过命令行参数可以定义转储文件生成的条件和规则。例如,可以设置转储文件生成的触发条件,如进程崩溃、CPU占用、内存占用等;还可以设置生成转储文件的路径、文件名及格式;另外,它还支持生成多个目标进程转储文件。 生成的转储文件可以在后续调试过程中使用。也可以使用procdump32配合其他调试工具,如WinDbg进行分析和诊断。这样可以在程序出现问题时,更方便地进行故障排查和问题定位。 微软procdump32工具的使用非常灵活且功能丰富,是许多开发人员和系统管理员进行故障排查的重要辅助工具。无论是定位内存泄漏、处理崩溃问题还是进行性能优化,都可以借助procdump32生成的转储文件来帮助快速定位问题根源和进行深入分析。 总而言之,微软procdump32是一款强大的进程转储文件生成工具,它在故障排查和开发调试中具有重要作用,可以帮助开发人员更快速地定位和解决各种问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值