问题标签 [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.
.net - 使用 VS 从不同的 PC 分析转储文件
我正在尝试使用 VS 在我的 pc 上分析在测试环境 pc 中生成的转储文件。当我在我的电脑上创建一个转储文件(使用 procdump )并在 VS 中打开它时,我可以在线程窗口中看到我的代码。但是当在不同的机器上运行相同的二进制文件并生成转储文件时,VS 没有在“线程”窗口中显示我的函数。
- 我正在使用.net 4
- 我的电脑是 Win8 64,测试电脑是 WinXp 32
debugging - 对应用程序的多个实例的第一次机会异常生成转储
我想为特定应用程序的第一次机会异常生成转储,该应用程序每天以随机间隔启动几次,一次运行多个实例。
我试过什么
过程转储
要使用 procdump,我必须知道 PID 或等待进程启动。随着多个实例的启动,这将无法开始监控所有启动的实例
标志
使用 gflags 我可以附加一个调试器,但我不想手动继续每个进程,我不知道如何自动化该进程。我尝试在 gflags 中使用 procdump 作为调试器,但我不知道如何将进程传递给 procdump。
debugging - ProcDump 是如何实现的?它本质上是一个调试器吗?
我对ProcDump(一个 Sysinternals 实用程序)的内部结构感兴趣:它本质上是一个调试器吗?它如何设法将进程转储到异常、首次机会异常甚至托管 (CLR) 异常?
我可以看到它有来自 kernel32.dll 的导入,例如 DebugActiveProcess。它的字符串还包含 CLR 库的名称,因此我假设它动态加载它们以使用 CLR 调试 API(尽管我在字符串中看不到 mscordbi.dll - 我应该吗?)。
.net - 如何破译由 procdump 生成的转储文件名
我使用以下命令设置 procdump 来收集故障转储
我现在看到以下转储文件。
此处附加的文件名有哪些不同的数字?由于进程已经崩溃,我无法确认,但我认为 150442 是 PID
c# - Procdump -e 在非致命异常上创建转储
我一直认为自己在捕获转储方面经验丰富,但这让我很困惑。我有一个 .net 进程定期崩溃......我不知道它崩溃的原因是什么,它是在本机代码还是托管代码中崩溃,甚至是进程本身遇到了异常还是第 3 方 DLL。我只知道它正在崩溃。我正在尝试使用 procdump 转储崩溃,但我真的很挣扎。我设置procdump如下:
procdump 进程名.exe -ma -e
问题是,在这样做的几分钟内,procdump 将生成一个转储并退出......即使该进程实际上从未崩溃过。如果我添加 -g,我仍然得到相同的结果......几分钟后,procdump 将生成转储并退出。如果我再次启动它,同样的事情会发生。我打开了它生成的一些转储,它们没有任何本机异常上下文。因此,我为任何托管线程转储了所有托管调用堆栈,并且(在我迄今为止检查的所有转储中)我发现了类似于此调用堆栈的内容:
我认为这个未处理的异常是导致 procdump 生成转储文件的原因。我做了一些搜索,找到了 UnhandledExceptionEventHandler 对象。所以我猜这个过程必须有一些东西来捕获未处理的异常。或者这只是标准的 SEH 东西?
无论哪种方式,我并不真正关心这些未处理的异常,我只关心导致崩溃的异常。有什么办法可以告诉 procdump 只在发生致命异常时创建转储?我认为 -t 不会起作用,因为它不会捕获异常,并且只会在进程正常终止时转储。我唯一的选择是转移到 DebugDiag 之类的其他东西吗?
提前感谢您的任何建议
iis - Procdump 写入转储文件时出错:0x80070005 错误 0x80070005 (-2147024891):访问被拒绝
最近,我们在尝试为 2012 R2 服务器上的各种 IIS 应用程序池捕获内存转储时遇到了问题。我试过使用任务管理器,但它会产生错误,以及在管理控制台中使用 procdump:
我尝试了 -ma 和 -mA 以及 -64 和 procdump64 的各种组合,但对于使用超过 ~16GB 内存的工作进程,它们都有相同的访问被拒绝错误。
我还尝试添加 -r 以按照如何:快速获取 ASP.NET 应用程序池的内存转储的建议来反映/克隆进程,但仍会收到与上述相同的错误消息。
更新:因此默认情况下,如果 IIS 应用程序池在 90 秒内没有响应正在进行的内部 ping 请求,它们将被回收。您可以在高级设置中看到这一点:
大约 90 秒后出现错误消息,因此很可能是问题的原因。
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 模块被加载(
windows - Procdump:将挂起触发时间增加到 5 秒以上
如果我想在我的进程等待超过 30 秒的情况下创建转储文件,有没有办法通过 procdump 来完成?目前它默认为 5 秒。但我没有看到任何地方可以增加那个时间。可能吗?
c# - 如何分析 c# 应用程序的调用堆栈信息,其中我的数据库说访问异常,尝试读取或写入内存已损坏
我的 C# WPF 应用程序定期运行,并且时不时地我不断收到此错误,尝试读取或写入受保护的内存,这通常表明其他内存已损坏 c#
这是我的代码。最初我认为一些外部应用程序正在干扰我的数据库,所以我添加了一个代码来检查数据库是关闭还是打开。但错误似乎是别的东西,这让我发疯。
我正在发布调用堆栈,我看到线程 17 有一些关于问题是如何引起的事实。
我共享整个转储文件的驱动器的链接请查看第 17 号线程 [ https://drive.google.com/open?id=0BzWisplLq-PqMlhzaVdFNTJiZjg ]
c# - 如何分析 C# prodump 故障转储文件,异常来自 CLR?
嗨,我是检查故障转储文件的新手,我需要帮助或方法。我可以看到异常来自 CLR,并且"clr exception - code e0434352(first chance)"
我已附加转储文件驱动器可以在此处下载
https://drive.google.com/open?id=0BzWisplLq-PqLXppb1IzMV9VVGs
任何帮助表示赞赏。