问题标签 [crash-dumps]

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 投票
2 回答
490 浏览

winforms - .NET WinForms 启动崩溃

在某些客户端上,我们的 WinForms 在启动时会崩溃。有些我的意思是非常非常罕见。在一种情况下,我们发现 Arial 系统字体已损坏并导致 InitializeComponents 在启动时崩溃。发现我们很辛苦,唯一的线索是 System.Drawing 模块导致崩溃的事件日志条目。

现在我又遇到了这种情况,但是这次故障模块是“未知的”,我想知道人们是如何处理/调试此类崩溃的。我试图在 InitializeComponents 周围包装一个异常处理程序,但它没有捕获任何东西。

任何建议如何处理这些崩溃?

0 投票
2 回答
1575 浏览

c++ - 如何在 minidump 中更改模块的校验和?

我编写(和销售)的软件在分发之前经过压缩和加密。每次发布新版本时,我都会在压缩和加密之前保留所有 .map 文件和生成的二进制文件,包括 exe。

当它在客户的机器上崩溃时,我会得到一个小型转储。我在 Visual Studio 中打开这些小型转储并在那里进行探索。

通过在 .map 文件中搜索地址,我充分利用了这些小型转储。这通常会让我进入代码的正确区域,并且我通常可以推断崩溃发生的原因并修复它,但这非常耗时。

如果我可以在调试 minidump 时使用从原始构建中保存的符号,那将会很有帮助。

我的问题是我收到有关无法找到正确符号的警告。我的研究让我相信这是因为客户端机器上 exe 的校验和与 Visual Studio 构建的 exe 的校验和不匹配。我明白为什么,它已被压缩和加密。当然校验和不匹配。

我想我可以手动编辑小型转储或更改已保存二进制文件的校验和以匹配可分发的校验和。我更愿意操作存储的副本,这样我就不必修改每个进入的转储,但我会很高兴。

所以,我的问题是:我怎样才能找到这些校验和并找出我应该用什么来替换它们?作为一个辅助问题:有没有更好的方法?

0 投票
2 回答
29142 浏览

jvm - 是否可以指定 JVM 的故障转储去哪里?

我们有一个使用 JNI 的桌面应用程序,它偶尔会导致 JVM 崩溃。幸运的是,JVM 生成了一个hs_err_pidXXXX.log文件,该文件在调试此类错误时非常有用。但是,它似乎总是进入当前工作目录,从那里挖掘它很烦人,因为我们的其他日志文件都转到特定的“日志文件位置”。

是否可以为这些“故障转储”文件指定不同的位置?如何?

0 投票
1 回答
1944 浏览

iphone - 诊断崩溃日志(针对与 UIKit 相关的一系列崩溃)?

希望能有一些见解来隔离这一点,中等复杂度的 iPhone 应用程序中的一些半可重复的崩溃......

当在应用程序的特定屏幕上按下 UIButton 时,会发生有问题的崩溃(有时,但并非始终如此)。

(目前还不确定,尽管在内存较低的情况下问题可能会更多地表现出来。)

下面摘录了一个典型的崩溃日志。

在这一点上不涉及很多不必要的细节 - 基于下面的日志,这是几个典型的 - 任何人都会对发生的问题有任何见解,以及在哪里查看和/或如何进一步排除故障?

很感谢任何形式的帮助!

谢谢。

~~~

~~~

0 投票
1 回答
4307 浏览

visual-studio-2008 - WINDOWS 调试符号加载问题。我无法在 Visual Studio 中加载 WINDOWS 操作系统二进制文件 .pdb

我在一家软件公司工作,开发系统软件产品。前天该产品崩溃并显示核心。

为了找出确切的问题,我想知道带有函数名称的完整核心堆栈(kernel32.dll、ntdll.dll .. 不显示函数名称)。我已经从 Microsoft 站点下载了 WINDOWS 调试符号。 http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx#f

下载了以下三个包 1. WindowsServer2003-KB933548-v1-ia64-symbols-NRL-ENU.exe 2. WindowsServer2003-KB933548-v1-x86-symbols-NRL-ENU.exe 3. WindowsServer2003-KB933548-v1-x86-symbols- NRL-ENU-DEBUG.exe。

尝试为 WINDOWS 操作系统二进制文件加载调试符号,但我无法成功。示例:对于 ntdll.dll,我尝试加载相应的 ntdll.pdb,但 Visual Studio 出现错误,即“符号文件 ntdll.pdb 与模块不匹配”

操作系统:我使用的是 WINDOWS 2003 SP2 。

请帮助获得带有函数名称的完整堆栈。

我的系统软件崩溃后的核心堆栈。

kernel32.dll!77e4bef7() Asm [下面的帧可能不正确和/或丢失,没有为 kernel32.dll 加载符号] Asm kernel32.dll!77e4bef7() Asm kernel32.dll!77e46cfd() Asm ntdll.dll!7c827d29( ) Asm ntdll.dll!7c83d266() Asm ntdll.dll!7c83d2b1() Asm ntdll.dll!7c82d308() Asm ntdll.dll!7c82d30f() Asm ntdll.dll!7c82f380() Asm ntdll.dll!7c82d30f() Asm ntdll.dll!7c82f557() Asm ntdll.dll!7c82a501() Asm ntdll.dll!7c82daee() Asm ntdll.dll!7c82f51a() Asm ntdll.dll!7c82f2c3() Asm kernel32.dll!77e6518d() Asm ntdll。 dll!7c829cc2() Asm ntdll.dll!7c829de7() Asm ntdll.dll!7c829e02() Asm ntdll.dll!7c827899() Asm ntdll.dll!7c82ec4a() Asm msvcr80.dll!781787e4() Asm msvcr80.dll! 78178823() Asm sal.dll!SAL_DebugOutput(const char * fmtstr=0x66009318, ...) 第 643 行 C++ sal.dll!MapSystemError(unsigned long dwerr=0x00000040) 第 130 行 + 0xb 字节 C++

sal.dll!MapLastError() 第 146 行 + 0xc 字节 C++

sal.dll 是我的软件二进制文件,我能够为 sal.dll 加载调试符号。

我在等你的建议。

0 投票
4 回答
1162 浏览

crash - 这个 Windows 故障转储是什么意思?

昨天我的系统软件在WINDOWS 2003 服务器上崩溃了。核心如下图。

注意:sal.dll 是我的软件模块。它从我们的函数 SktBind() 调用系统调用 bind()

能否请教一下,为什么会崩溃?以及如何解决这个问题。

如果您有任何意见或建议,请与我分享。

0 投票
2 回答
786 浏览

c# - c#故障转储不存在

我有一个 C# 应用程序,它有时会因为未知原因而崩溃。因此,我想找到故障转储文件但它不存在。我还编写了一个引发DivideByZero异常(未处理)的小应用程序。这样做的后果:在一个系统上程序在没有任何消息的情况下关闭,在另一个系统(VM)上,我得到一个简单的崩溃报告,它想要将数据发送给 Microsoft。

我配置drwtsn.exe和注册表设置。我也尝试使用WinDbg没有成功。

有人知道我如何强制系统写入转储文件吗?

最好的问候, 埃尔

0 投票
1 回答
1576 浏览

.net - .net 应用程序挂起。奇怪的崩溃转储

生产服务器有一个 24x7 运行的应用程序,有时它开始消耗近 50% 的 CPU。我无法在本地复制它,但我用 adplus 做了一个内存转储。该服务器具有 Windows 2008 Server 64 位、.NET 3.5。该应用程序侦听 MSMQ 并有一个线程池来执行操作,当我进行内存转储时,它应该什么都不运行,但它仍然在消耗 CPU。

下面是转储。你知道会发生什么吗??奇怪的是,慢线程还说 GC Disabled!那是什么?

奇怪的是,我在同一台服务器上有一个 ASP.NET 应用程序,有时会发生同样的事情。

0 投票
5 回答
18820 浏览

linux - Linux 中的核心转储

每当我的进程崩溃时,我想创建一个核心转储。目前我正在遵循这种方法:

  1. 使用 gcc/g++ 的“-g”构建程序的特殊“调试”版本。
  2. 执行“ulimit -c 无限制”
  3. 现在,每当程序崩溃时,我们都会得到核心转储。

但我想尽量减少步骤数,以便:

  • 应该始终创建核心转储。即使它是“发布”构建。不应要求用户ulimit -c unlimited手动执行命令“”。
  • 该核心转储的回溯应该能够提供调用的文件、函数、行号。那是人类可读形式的堆栈跟踪。
  • 我不想将程序构建为带有“-g”的调试版本。或者至少它不应该包含生成人类可读堆栈跟踪不需要的任何其他调试信息。因为这将是该程序的发布版本。

所以我有两个问题:

  1. 如何在程序的“发布”版本中创建核心转储?
  2. 总是。无需手动执行“ ulimit -c unlimited
0 投票
1 回答
140 浏览

browser - 浏览器供应商是否公开提供崩溃统计信息?

Mozilla 有http://crash-stats.mozilla.com

其他供应商有这样的网站吗?是否可以查看特定 url/域的崩溃统计信息?