问题标签 [postmortem-debugging]

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 投票
1 回答
1709 浏览

c - 仅从程序计数器获取代码行信息?

首先,我不能使用调试器[1]。但是我可以访问程序的程序计数器,也可以用我需要的所有标志编译二进制文件(用 C 编写)。我什至可以更改代码(尽管我不想这样做)。给定一台 PC,我希望能够知道它对应的是哪条线路。

我确信必须有一种自动化的、实用的、快速的方法来做到这一点。但我没有成功。

编辑:忘了提:Lin​​ux系统,二进制文件是PPC,主机是i386。我确实可以使用 PPC 硬件。

[1] 正在模拟应用程序,并且它是交叉编译的,我在主机模拟器中有一个 gdb。但我无法在模拟的来宾应用程序上连接 gdbserver。而且真正的硬件不是一个选择,我正在尝试基于模拟器构建一个模拟器。

0 投票
1 回答
1084 浏览

c++ - 静态链接系统库、libc、pthreads,以帮助调试

我试图避免这个 Stackoverflow 条目中描述的情况: Debugging core files generated on a Customer's box。如果我静态编译所有库,我会避免在核心转储时始终收集共享库吗?我基本上想处于这样一种情况,我可以使用 gdb 加载核心文件并检查崩溃的应用程序。

如果我走静态链接我们需要的所有库的路线,我应该注意什么。我认为 glib 和 pthreads 可能会导致最大的问题。

Valgrind 会不再有用吗?如果我针对所有静态编译的二进制文件加载 Valgrind,它会发现错误吗?或者我们应该维护一个非静态编译的二进制文件,以便 Valgrind 继续工作。strace 怎么样?

我们经常崩溃,因为我们拥有庞大的安装基础,而且它也是一个遗留应用程序。收集所有共享库变得棘手 - 我需要另一个解决方案。

编辑:修正错字。

0 投票
1 回答
1441 浏览

c++ - 从核心转储中识别 auto_ptr 后面的具体对象类型

我有一个auto_ptr<IFoo>, whereIFoo是一个只有纯虚拟方法的接口。

我现在在分段错误之后也有一个核心文件,我真的很想知道这个 auto_ptr 背后的具体子类是什么。作为dynamic_cast项目中的工作,我认为 RTTI 必须以某种方式可用,但我不知道我将如何通过gdb

我得到的输出如下:

我真正想知道的是,如果指针属于 anIBar或 an IBaz

谢谢你的帮助!

0 投票
3 回答
1709 浏览

windows - 我可以将 windbg 用作 Windows 服务的事后调试器吗?

我将 Windbg 设置为默认的事后调试器。我通过运行来做到这一点windbg -I。但是,这似乎只能从我登录的用户运行的应用程序中捕获未处理的异常,而不是 Windows 服务。有谁知道我如何配置windbg来捕捉这些?

0 投票
1 回答
488 浏览

c# - 使用 Visual Studio 事后调试 C# 应用程序

我正在努力调试.dmp包含 .NET 代码 (C#) 的文件,它还包含调用本机代码的托管 C++

.dmp文件是“完整转储”

如果我.pdb使用 SOS 在 WinDBG 中加载,生活会很好 - 但是如果我加载到 Visual Studio 2010 中,我无法获得 CLR 堆栈?感觉 VS 没有将应用识别为托管应用

有诀窍吗?我应该改用windbg吗(我真的更喜欢VS)

VS2012性能更好吗?

0 投票
1 回答
361 浏览

c++ - ds:0023:003a3000=?? drwatson FAULT 结尾的东西?

我在 Dr Watson 日志中有以下条目。“ds:0023:003a3000=??”的意义是什么 FAULT 行右侧的条目的一部分?

0 投票
0 回答
453 浏览

c++ - 使用 gdb 分析 linux 上的多线程核心文件

我目前正在调查 linux 上的多线程程序的问题。我可以使用 gdb 查看每个线程的作用以及崩溃的原因。尽管如此,我确实错过了一种简单地打印所有线程概述的方法,包括线程状态、线程正在等待的互斥体等数据。

有没有办法从核心文件中获取这些数据?或者至少在程序运行时是可能的(/proc?)?

0 投票
3 回答
1611 浏览

delphi - 收到 WM_PAINT 后,VCL/comctl32.dll/USER32.dll/GDI32.dll 中偶尔出现 EAccessViolation

我需要一些建议来调试 Delphi XE2 应用程序中的崩溃。我自己从未见过崩溃——事实上它很少发生,并且不能按需重现。

我们确实有一组来自 MadExcept 的 10 个崩溃报告。这些表明主线程当时正在主窗体的列表视图中处理 WM_PAINT 消息。每种情况下的调用堆栈都没有显示对我自己代码的引用,只有 VCL 代码和 comctl32.dll、ntdll.dll 和 USER32.dll 中的函数。

有问题的列表视图是 TColorListView,它派生自 TCustomListView,并处理 OnCustomDrawItem 和 OnDeletion 事件。但正如我所说,当崩溃发生时,我的 TColorListView 代码都不在调用堆栈上。

在每种情况下,崩溃的实际位置各不相同,但导致崩溃的调用顺序(从早到晚)始终是:

之后,它进入 StdWndProc/SendMessageW/TControl.Perform 之一,从那里每次路径都不同。最终它以 comctl32.dll、USER32.dll、GDI32.dll 或 TControl.WndProc 之一结束,并引发 EAccessViolation。遗憾的是,我没有关于用户当时尝试做什么的信息,因为用户没有填写错误报告的那部分。

您能否建议我可以使用任何“心理调试”技术来尝试确定这次崩溃的原因(并因此修复它)?


更新以回答以下评论中的问题:

在(仅)一个崩溃报告中,它似乎进入了 TListItem.GetIndex 并进一步崩溃了几个堆栈帧。不过,这可能是一个红鲱鱼。

“执行”的消息是什么?对不起,我不知道。MadExcept 没有给我方法参数值;只是方法名称。


5月31日

尽管我更愿意仅从我拥有的信息中找出故障,但我也欢迎对我可以添加到程序中的任何新诊断提出建议,以便如果在下一个版本之后再次发生这种崩溃,我将有更多工作要做. 我很茫然,因为在崩溃时,我可以修改的代码都没有在调用堆栈上。


6月13日

我在 MadExcept 报告中添加了一行,告诉我异常发生时应用程序处于什么状态 - 启动/活动/空闲/ModalDlg/终止。(感谢 Chris Thornton 的评论建议这一点。)我认为在关机期间发生异常的可能性是合理的。不幸的是,直到 2014 年我们才会发布新版本,并且有可能通过新诊断获取错误报告。

0 投票
1 回答
1760 浏览

php - How do you debug a LONG RUNNING php script?

The problem is that the script hangs up after some long time. strace returns something like this and nothing else:

Putting here'n'there debug messages is left as a last resort..

I can run the script with xdebug attached but is there a way to send some POSIX signal to php process which would trigger xdebug to dump current context/stacktrace/localvars?

Is it possible to get 'postmortem dump' of php script?

0 投票
3 回答
1601 浏览

c++ - 在 GDB (C++) 中查找指向单例事后分析的指针

我正在对崩溃的程序进行事后分析。我在 Linux(Ubuntu 12.04,x86)上,代码是用 C++ 编写的。该程序正在使用一些可能包含有价值信息的单例。如果它是这样创建的,是否可以找到指向单例实例的指针:

如果它是可能的,它是如何在 GDB 中完成的?