问题标签 [procdump]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
82 浏览

.net - 使用 VS 从不同的 PC 分析转储文件

我正在尝试使用 VS 在我的 pc 上分析在测试环境 pc 中生成的转储文件。当我在我的电脑上创建一个转储文件(使用 procdump )并在 VS 中打开它时,我可以在线程窗口中看到我的代码。但是当在不同的机器上运行相同的二进制文件并生成转储文件时,VS 没有在“线程”窗口中显示我的函数。

  • 我正在使用.net 4
  • 我的电脑是 Win8 64,测试电脑是 WinXp 32
0 投票
2 回答
2642 浏览

debugging - 对应用程序的多个实例的第一次机会异常生成转储

我想为特定应用程序的第一次机会异常生成转储,该应用程序每天以随机间隔启动几次,一次运行多个实例。

我试过什么

过程转储

要使用 procdump,我必须知道 PID 或等待进程启动。随着多个实例的启动,这将无法开始监控所有启动的实例

标志

使用 gflags 我可以附加一个调试器,但我不想手动继续每个进程,我不知道如何自动化该进程。我尝试在 gflags 中使用 procdump 作为调试器,但我不知道如何将进程传递给 procdump。

0 投票
1 回答
311 浏览

debugging - ProcDump 是如何实现的?它本质上是一个调试器吗?

我对ProcDump(一个 Sysinternals 实用程序)的内部结构感兴趣:它本质上是一个调试器吗?它如何设法将进程转储到异常、首次机会异常甚至托管 (CLR) 异常?

我可以看到它有来自 kernel32.dll 的导入,例如 DebugActiveProcess。它的字符串还包含 CLR 库的名称,因此我假设它动态加载它们以使用 CLR 调试 API(尽管我在字符串中看不到 mscordbi.dll - 我应该吗?)。

0 投票
2 回答
637 浏览

.net - 如何破译由 procdump 生成的转储文件名

我使用以下命令设置 procdump 来收集故障转储

我现在看到以下转储文件。

此处附加的文件名有哪些不同的数字?由于进程已经崩溃,我无法确认,但我认为 150442 是 PID

0 投票
1 回答
831 浏览

c# - Procdump -e 在非致命异常上创建转储

我一直认为自己在捕获转储方面经验丰富,但这让我很困惑。我有一个 .net 进程定期崩溃......我不知道它崩溃的原因是什么,它是在本机代码还是托管代码中崩溃,甚至是进程本身遇到了异常还是第 3 方 DLL。我只知道它正在崩溃。我正在尝试使用 procdump 转储崩溃,但我真的很挣扎。我设置procdump如下:

procdump 进程名.exe -ma -e

问题是,在这样做的几分钟内,procdump 将生成一个转储并退出......即使该进程实际上从未崩溃过。如果我添加 -g,我仍然得到相同的结果......几分钟后,procdump 将生成转储并退出。如果我再次启动它,同样的事情会发生。我打开了它生成的一些转储,它们没有任何本机异常上下文。因此,我为任何托管线程转储了所有托管调用堆栈,并且(在我迄今为止检查的所有转储中)我发现了类似于此调用堆栈的内容:

我认为这个未处理的异常是导致 procdump 生成转储文件的原因。我做了一些搜索,找到了 UnhandledExceptionEventHandler 对象。所以我猜这个过程必须有一些东西来捕获未处理的异常。或者这只是标准的 SEH 东西?

无论哪种方式,我并不真正关心这些未处理的异常,我只关心导致崩溃的异常。有什么办法可以告诉 procdump 只在发生致命异常时创建转储?我认为 -t 不会起作用,因为它不会捕获异常,并且只会在进程正常终止时转储。我唯一的选择是转移到 DebugDiag 之类的其他东西吗?

提前感谢您的任何建议

0 投票
1 回答
7229 浏览

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

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

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

我还尝试添加 -r 以按照如何:快速获取 ASP.NET 应用程序池的内存转储的建议来反映/克隆进程,但仍会收到与上述相同的错误消息。

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

90 秒 Ping 最大响应时间

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

0 投票
1 回答
609 浏览

debugging - ProcDump 是否使用调试堆?

当我们在 Visual Studio 2013 或 WinDbg 等调试器下启动应用程序时,Windows 将为其使用调试堆。但是,似乎可以关闭该行为,就像在 Visual Studio 2015 或 WinDbg 中使用-hd命令行开关启动时所做的那样。

现在有了ProcDump,它的行为就像一个调试器;事实上,它可以安装为带有-i开关的 AE 事后调试器。

如何确定使用 ProcDump 的-x开关运行应用程序是否会使用调试堆?似乎没有命令行选项来更改行为,我不确定它是否会尊重 _NO_DEBUG_HEAP 环境变量。

我认为调试器将使用IDebugClient5::CreateProcess2()IDebugClient5::CreateProcessAndAttach2()启动一个进程。它将通过_DEBUG_CREATE_PROCESS_OPTIONS哪个CreateFlags可以DEBUG_CREATE_PROCESS_NO_DEBUG_HEAP设置标志。

所以我使用了WinDbg,在WinDbg下启动了ProcDump。sxe ld dbgeng然后我等待 Debugger Engine 模块被加载(

0 投票
1 回答
181 浏览

windows - Procdump:将挂起触发时间增加到 5 秒以上

如果我想在我的进程等待超过 30 秒的情况下创建转储文件,有没有办法通过 procdump 来完成?目前它默认为 5 秒。但我没有看到任何地方可以增加那个时间。可能吗?

0 投票
1 回答
165 浏览

c# - 如何分析 c# 应用程序的调用堆栈信息,其中我的数据库说访问异常,尝试读取或写入内存已损坏

我的 C# WPF 应用程序定期运行,并且时不时地我不断收到此错误,尝试读取或写入受保护的内存,这通常表明其他内存已损坏 c#

这是我的代码。最初我认为一些外部应用程序正在干扰我的数据库,所以我添加了一个代码来检查数据库是关闭还是打开。但错误似乎是别的东西,这让我发疯。

我正在发布调用堆栈,我看到线程 17 有一些关于问题是如何引起的事实。

我共享整个转储文件的驱动器的链接请查看第 17 号线程 [ https://drive.google.com/open?id=0BzWisplLq-PqMlhzaVdFNTJiZjg ]

请帮我找到问题?我是新来的。在此处输入图像描述

0 投票
1 回答
915 浏览

c# - 如何分析 C# prodump 故障转储文件,异常来自 CLR?

嗨,我是检查故障转储文件的新手,我需要帮助或方法。我可以看到异常来自 CLR,并且"clr exception - code e0434352(first chance)" 我已附加转储文件驱动器可以在此处下载 https://drive.google.com/open?id=0BzWisplLq-PqLXppb1IzMV9VVGs

任何帮助表示赞赏。