标签: procdump

procdump不倾销未处理的异常


我刚刚开始玩procdump并且我希望在发生无意义的第二次机会异常时完全转储应用程序.
根据我运行的文档,它喜欢这样:

procdump.exe -ma -e -x C:\CrashDumps C:\Code\CrashApp\CrashApp\bin\Debug\CrashApp.exe
Run Code Online (Sandbox Code Playgroud)

CrashApp.exe是一个简单的控制台应用程序,在启动时抛出异常.
这是我得到的输出:

ProcDump v7.0 - Writes process dump files
Copyright (C) 2009-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
With contributions from Andrew Richards

Process:               CrashApp.exe (6516)
CPU threshold:         n/a
Performance counter:   n/a
Commit threshold:      n/a
Threshold seconds:     10
Hung window check:     Disabled
Log debug strings:     Disabled
Exception monitor:     Unhandled
Exception filter:      *
Terminate monitor:     Disabled
Cloning type:          Disabled
Concurrent limit:      n/a
Avoid outage:          n/a
Number of dumps:       1
Dump folder:           C:\CrashDumps\
Dump …
Run Code Online (Sandbox Code Playgroud)

.net unhandled-exception procdump

10
推荐指数
2
解决办法
9445
查看次数

写入转储文件时出现Procdump错误:0x80070005错误0x80070005(-2147024891):访问被拒绝

最近,我们在尝试捕获2012 R2服务器上的各种IIS应用程序池的内存转储时遇到了问题.我已尝试使用任务管理器,但它会生成错误,以及在管理控制台中使用procdump:

PS C:\Users\_______\Downloads> procdump -mA 31016

ProcDump v7.1 - Writes process dump files
Copyright (C) 2009-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
With contributions from Andrew Richards

[19:59:22] Dump 1 initiated: C:\Users\____\Downloads\w3wp.exe_161008_195922.dmp
[19:59:25] Dump 1 writing: Estimated dump file size is 29278 MB.
[20:01:15] Dump 1 error: Error writing dump file: 0x80070005
Error 0x80070005 (-2147024891): Access is denied.

[20:01:15] Waiting for dump to complete...
[20:01:17] Dump count not reached.
Run Code Online (Sandbox Code Playgroud)

我已经尝试了-ma和-mA以及-64和procdump64的各种组合,但是对于使用超过~16GB内存的工作进程,它们都具有相同的Access被拒绝错误.

我还尝试添加-r来反映/克隆该过程,如下所述:快速获取ASP.NET应用程序池的内存转储但仍然得到与上面相同的错误消息.

更新:因此,默认情况下,如果IIS应用程序池在90秒内未响应正在进行的内部ping请求,则它们将被回收.您可以在高级设置中看到此信息:

90秒Ping最大响应时间

并且大约90秒后出现错误消息,因此可能是问题的原因.

iis procdump

7
推荐指数
1
解决办法
3357
查看次数

使用 ProcDump 获取服务的转储?

有谁知道是否可能/如何使用 ProcDump 获取 Windows 服务的转储?我想要运行的命令是这样的:

ProcDump -e -mp -x myservice.exe mydump.dmp
Run Code Online (Sandbox Code Playgroud)

但是,我收到“无法从命令行或调试器启动服务”消息。有谁知道是否有办法解决这个问题?

service windows-services procdump

5
推荐指数
1
解决办法
4004
查看次数

Windbg崩溃转储分析

我很难从使用ProcDump创建的崩溃转储中获取任何有意义的信息,但我很确定它与我一直看到的看似随机的崩溃有关.

我有一个在Windows 7 64位上运行的VB6应用程序.每隔一段时间,它就会崩溃,在错误日志中留下一个错误ntdll.dll的条目,但不提供更多信息.所以,我一直在运行SysInternals的ProcDump运行过程,为我自动创建故障转储.

我一直无法在内部重新制造崩溃,所以我很确定如果我有一个转储,它会告诉我问题是什么.但是,在运行一天的大部分时间之后,我看到ProcDump已经编写了几个转储,尽管该程序仍然正常运行.它似乎确实指向ntdll.dll的问题,但我不知道从哪里开始应用此修复程序.

!analyze -v在其中一个转储上运行会给我以下内容:

*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************


FAULTING_IP: 
+0
00000000 ??              ???

EXCEPTION_RECORD:  ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 00000000
   ExceptionCode: 80000003 (Break instruction exception)
  ExceptionFlags: 00000000
NumberParameters: 0

FAULTING_THREAD:  000007c8

PROCESS_NAME:  application.exe

ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION}  Breakpoint  A breakpoint has been reached.

EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid

NTGLOBALFLAG:  0

APPLICATION_VERIFIER_FLAGS:  0

APP:  application.exe

BUGCHECK_STR:  APPLICATION_FAULT_STATUS_BREAKPOINT_AFTER_CALL

PRIMARY_PROBLEM_CLASS:  STATUS_BREAKPOINT_AFTER_CALL

DEFAULT_BUCKET_ID:  STATUS_BREAKPOINT_AFTER_CALL

LAST_CONTROL_TRANSFER:  from 7754431f …
Run Code Online (Sandbox Code Playgroud)

vb6 windbg crash-dumps windows-7 procdump

5
推荐指数
1
解决办法
9887
查看次数

如何使用procdump -t - 转储进程终止 - 使用?

这个问题可能有点尴尬,但这是我的详细问题:

目前我正在考虑设置SysInternals的procdump.exe以监控我们的应用程序,它显示虚假消失 - 也就是说,用户报告应用程序在应用程序的短暂可见挂起之后简单地"消失"而没有任何痕迹窗口.

我的第一个想法是运行procdump -e -x . MyApp.exe,当应用程序遇到未处理的异常时会记录崩溃转储,但后来我发现还有一个-t开关, -

-t - 进程终止时写入转储.

进程终止时自动生成转储.

现在问题

我已经使用我们的应用程序测试了-t开关,方法是在我可以触发它的已定义位置插入ExitProcessTerminateProcess调用.

虽然应用程序的行为符合预期,即TerminateProcess立即"杀死"正在运行的应用程序并ExitProcess需要一段时间,因为全局清理运行,这种方式生成的转储在这两种情况下都是无用的.

我得到的转储-t总是只包含一个sinlge线程(应用程序在终止时运行超过20个线程),并且callstack甚至不在一个有用的位置.(它似乎是终止应用程序中的一个随机线程.)

难道我做错了什么?我是否可以有效地用于procdump -t跟踪进程退出函数的意外调用?

windows crash-dumps terminate visual-c++ procdump

5
推荐指数
1
解决办法
6409
查看次数

即使PID更改,当达到CPU阈值时自动生成w3wp.exe进程转储文件

我正在尝试解决我们的一个网站问题导致CPU间歇性地出现问题.该站点位于Web服务器场中,并且在不同时间间歇性地跨所有服务器发生.导致峰值的过程是w3wp.exe.我检查了所有显而易见的事情,现在想要为w3wp.exe分析多组转储文件,这会导致峰值.

我正在尝试在指定的时间内达到指定的CPU阈值时自动生成w3wp.exe进程的转储文件.

我可以使用ProcDump.exe来执行此操作,并且它可以在PID(进程ID)更改之前触发它.

例如:( procdump -ma -c 80 -s 10 -n 2 5844其中5844是PID)

  • -ma写入包含所有进程内存的转储文件.默认转储格式包括线程和句柄信息.
  • -c CPU阈值,用于创建进程转储.
  • -s连续秒秒必须在转储写入之前命中CPU阈值(默认值为10).
  • -n退出前要写入的转储数.

上面的命令将监视w3wp.exe,直到CPU达到80%,持续10秒,并且至少需要两次迭代才能完全转储.

问题:

我有多个运行w3wp.exe的实例,所以我不能使用进程名称,我需要指定PID.每次回收App Pool时,PID都会更改.这会导致PID在我可以捕获多个转储文件之前更改.然后我需要在每个Web服务器上再次启动procdump.

我的问题:

即使在PID更改后,如何自动生成转储文件?

pid w3wp procdump

5
推荐指数
1
解决办法
1534
查看次数

运行ProcDump时出错

这里有一个ProcDump教程:http://drdobbs.com/blogs/parallel/229300328

我有一个崩溃的应用程序,所以我想看看ProcDump是否可以提供帮助.该应用程序是C:\Program Files\MyCompanyName\thebadapp.exe这样我将ProdCump.exe复制到C:\并打开它像这样:

C:\procdump -e C:\Program Files\MyCompanyName\thebadapp.exe
Run Code Online (Sandbox Code Playgroud)

......但是Prodcump正在回归:

目录C:\ Files\MyCompanyName \不存在

我做错了什么?

谢谢.

c# debugging procdump

3
推荐指数
1
解决办法
1342
查看次数

procdump 不为 StackOverflow 异常创建转储

我正在尝试为 .Net C# 应用程序创建故障转储。为此,我编写了一个代码,它会使应用程序因堆栈溢出异常而崩溃:

namespace Crashme
{
    class Program
    {


        static void Main(string[] args)
        {
            for (int i = 0; i < 10; i++)
            {
                System.Threading.Thread.Sleep(2000);
            }

            Console.WriteLine("Calling text");

            crash obj = new crash();
            obj.sMyText = "abc";

        }
    }

    class crash
    {
        public string sMyText
        {
            get { return sMyText; }
            set { sMyText = value; }
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用的 procdump 命令:

.\procdump.exe -ma -e crashme.exe crash_dump1.dmp
Run Code Online (Sandbox Code Playgroud)

应用程序按预期崩溃,procdump 也在捕获它。我可以在 procdump 监控控制台上看到打印。但是没有创建转储。

猜猜我没有使用正确的 procdump 命令。有人可以帮忙吗?

.net c# sysinternals procdump

1
推荐指数
1
解决办法
4211
查看次数