Articles of 崩溃转储

我怎么知道哪个地址属于Crash Dump中函数的哪个参数

我是新来的崩溃转储分析。 这是我的vmcore的bt -f的输出,我想看看当时所持有的函数foo的参数值。 我有一个64位机器,浏览代码,我发现foo只接受一个参数。 无论如何,有没有办法知道哪个地址属于哪个参数。 #4 [ffff8807adfaf8c0] foobar at ffffffffa11c7c15 [foo] ffff8807adfaf8c8: ffff881033e1d800 ffff8807adfaf8e8 ffff8807adfaf8d8: ffff8807adfaf938 ffffffffa11c7ce1 这是最后的寄存器值 RIP: 00007fa64fdfb907 RSP: 00007fff2a187ca0 RFLAGS: 00010246 RAX: 00000000000000a6 RBX: ffffffff8100b072 RCX: 00007fa6506f7390 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00007fa6508fe910 RBP: 00007fa6508fe8f0 R8: 00007fa6508fe930 R9: 0000000000000000 R10: 00007fff2a1884b0 R11: 0000000000000246 R12: 0000000000000000 R13: 0000000000000000 R14: 0000000000000000 R15: 00007fa6508fe990 ORIG_RAX: […]

二进制代码在kern.log和

今天早上我们有一台服务器在两周内第二次坠毁。 在此之前,它跑了几个月的问题,afaik,没有改变。 奇怪的是,在kern.log和syslog中有一些奇怪的字符,这似乎是二进制代码的一些表示。 如果我grep为'错误',我得到'binay文件匹配',虽然这些文件应该是纯文本我相信。 任何想法可能发生或如何调查? 硬件故障/安全性/ …我们运行Ubuntu 12.04 LTS 该机器响应了上午11点左右,并在11.30左右重新启动,以便有一部分日志丢失。 来自kern.log的示例。 Sep 26 07:38:42 biominas002 kernel: [918855.467235] device vnet1 entered promiscuous mode Sep 26 07:38:42 biominas002 kernel: [918855.479364] br0: port 3(vnet1) entered forwarding state Sep 26 07:38:42 biominas002 kernel: [918855.479370] br0: port 3(vnet1) entered forwarding state ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ….. ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@Sep 26 11:23:37 biominas002 kernel: imklog 5.8.6, […]

这个数据是随机的还是意味着什么?

如果你看看屏幕,它似乎从汇编程序输出的东西。 这是我的Linux试图告诉我什么时候不想启动。 是否可以理解,还是只是随机的垃圾? 我不需要解决这个问题,因为它已经很老了,但是我很好奇这是不是垃圾,或者是一个有知识的人能够从所显示的数据中理解一些东西。

kdump磁盘大小的最佳做法是什么?

我们有一个redhat 6服务器和内存大约64GB ,我们正在计划configurationkdump ,我对我应该设置的磁盘大小感到困惑。 Redhat认为它会增加memory + 2% more (这意味着大约66GB的磁盘空间)。 我需要你的build议什么是我应该为kdump定义的最佳尺寸。

Windows应用程序崩溃在Visual Studio中的.dmp文件分析

要获取转储文件(对于崩溃),我使用userModeProcessorDumper.exe。 现在的问题是如何读取这个文件(查看堆栈信息)。 对此我有几个问题 是的,我知道我可以使用WinDbg(相关工具)来分析.dmp文件。 我的问题是 – 可以在Visual Studio中分析吗? 更具体地说 – 我有Visual Studio企业版6 – 在这个特定的包 – 可以打开.dmp文件进行分析。 如果是的话,请帮我一步。 我看到在Webbuild议使用Visual Studio 2XXX版本。 所以我觉得用VS企业版不能做到这一点。 应用程序build立在MinGW上,即使是这些应用程序 – 我们可以在Visual Studio中进行分析(什么是版本 – 即Visual Studio 2XXX或VS Enterprise Edition XY)? 我应该照顾任何额外的设置。 任何关于这个主题的材料链接都会对我很有帮助。 提前感谢您的build议。 PS:我的应用程序是一个基于C ++的应用程序。

WinDbg禁止错误对话框

我使用WinDbg从一些Windows应用程序parsing崩溃报告。 我使用批处理脚本parsing它,它工作正常。 崩溃报告由WinDBGparsing并进程终止。 但有一些损坏的崩溃报告导致WinDbg显示错误对话框“打开故障转储时失败”。 这导致WinDBG继续工作,因此批处理脚本冻结。 我想避免这一点。 我已经使用了标志[-Q | -QY] [-QS | -QSY。 他们不压制我的错误信息。 我能以另一种方式parsing我的崩溃报告以避免这个问题吗?

什么是创build崩溃报告string的一个好方法反映了崩溃的原因的Win32 C ++?

我们正在使用Fogbugz来跟踪问题,并且正在为Fogbugz的XML API编写一个C ++包装器。 最好的做法似乎是使用“ 侦察 ”字段,以便类似/相同的崩溃计数,但不再报告。 要做到这一点,我们需要一个独特的string为崩溃的特定原因。 在Win32中 – 得到一个dmp文件或其他崩溃处理程序之后,为崩溃创build唯一string的好方法是什么? (我们将创build一个dmp文件并将其发送到fogbugz服务器) 在之前的post/文章/等等Joel已经提出了各种build议,但很多计数在像C#这样的语言使用reflection,并有很多信息,要么难以或不可能获得。 有没有其他人得到像堆栈痕迹或其他东西的东西,使侦察员进入fogbugz? 编辑为了澄清 – 我们不想要每个事件的唯一ID – 有可能崩溃具有相同的代码path。 我们想抓住这一点。 我想我们会得到我们代码中的最后几个堆栈调用(不是来自win32 DLL的调用),但不知道如何去做。 将每次崩溃报告为唯一是不对的。 在相同情况下报告所有崩溃是不正确的。 不同的用户重复导致崩溃的场景应映射到相同的事件。 编辑 我想我们想要的是崩溃的一般性“签名” – 基于堆栈上的内容。 类似的堆栈应该有相同的签名。 例如 – 拿我们的应用程序中的前5个方法,然后第一个调用(如果有的话),我们做成一个MS DLL。 这可能足以用于签名,并且可能与“相同”的崩溃相关联。 那么如何获得堆栈中的方法列表呢? 你怎么知道,如果他们是从你自己的应用程序或另一个DLL? 编辑 – 注意我们希望在exception处理程序中创build“bucket id”/签名,以便我们可以创buildminidump并将其作为侦察器描述发送给fogbugz。 或者,我们可以在下一次启动应用程序时加载转储,然后发送一个我们生成的签名。

应用程序崩溃开始 – 如何获得崩溃转储文件?

我的winform应用程序一旦启动就会崩溃。 这个问题只发生在客户端电脑之一。 适用于所有其他客户。 我正在考虑使用ADPlus来获得崩溃转储,但问题是为了在崩溃模式下configurationADPlus,debugging器需要先连接到正在运行的应用程序。 这意味着当我configurationADPlus时,应用程序必须正在运行,但是,正如我所说的,我的应用程序一旦启动就会崩溃。 它没有给我一个运行ADPlus的机会。 任何想法,如果ADPlus可以在这种情况下使用? 在这种情况下是否还有其他可用的工具生成过程转储?

关于编译器选项“Assembly,Machine Code and Source(/ FAcs)”

我正在维护使用VS6.0构build的遗留应用程序,但现在它被移动到VS2005,在编译过程中它创build了很多.COD文件,我发现这个“汇编,机器码和源(/ FAcs)”编译器开关负责为了这。 谁能告诉我这些.COD文件有什么用处,这怎么用呢? 这是否有任何作用是崩溃转储分析? 谢谢Tom

如何确保转储文件由C ++应用程序编写,以防未处理的exception

如何确保转储文件是由C ++应用程序编写的,如果没有处理的exception。 例如,如果除零处理不被处理,那么如何确保转储被写入。 另外这将是伟大的有windbg教程我试图寻找,但不是一个很好的发现。