崩溃生成转储

发布于 2024-11-08 20:37:41 字数 89 浏览 3 评论 0原文

我的应用程序运行 3-4 天后偶尔会在客户计算机上崩溃。是否可以在应用程序启动时自动将应用程序附加到 ADplus 等调试器?这是为了在应用程序崩溃时生成转储文件。

My application crashes occasionally at customer machine after running for 3-4 days. Is it possible to attach the application to a debugger like ADplus automatically when the application starts? This is for generating the dump file whenever the application crashes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冷夜 2024-11-15 20:37:41

由于您想使用 ADPlus,我假设仅 Windows 解决方案可以做到这一点。
在这种情况下,您可以安装事后调试器。一旦您的应用程序崩溃,它就会弹出。我通常使用windbg。

Since you want to use ADPlus I assume a windows only solution will do it.
In this case you could install a post mortem debugger. It will pop up as soon as your app crashes. I usually use windbg.

北方的韩爷 2024-11-15 20:37:41

您可能需要查看 SetUnhandledExceptionFilter< /code>函数。

You may want to look at the SetUnhandledExceptionFilter function.

瀟灑尐姊 2024-11-15 20:37:41

IMO 当进程启动时,您不必附加到调试器。当进程终止并设置位置时,Windows 会查找调试器 AeDebugRegistryKey

在 x86 计算机上,它是 \\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug

CDB 可以设置为事后调试器

将事后调试器更改为
CDB,运行 cdb -iae 或 cdb -iaec
密钥字符串。当-iaec参数为
使用时,KeyString 指定一个字符串
附加到命令行末尾
用于启动事后分析
调试器。如果 KeyString 包含
空格,它必须包含在
引号。该命令将
如果成功则不显示任何消息,但是
如果出现以下情况,将显示失败消息
失败。当CDB进行事后分析时
调试器,它将被激活
每当应用程序崩溃时。

我会使用诸如 cdb -iaec ".dump /ma /u crashedapp.dmp;q" 之类的东西来在进程终止时获取内存转储。

如果操作系统是 Vista SP1+,则可以将注册表配置为使用 WER

IMO you wouldn't have to attach to the debugger when the process starts. Windows would look for a debugger when the process terminates and the location is set AeDebug RegistryKey

On x86 computer it is \\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug

CDB can be set as Postmortem debugger

To change the postmortem debugger to
CDB, run cdb -iae or cdb -iaec
KeyString. When the -iaec parameter is
used, KeyString specifies a string to
be appended to the end of command line
used to launch the postmortem
debugger. If KeyString contains
spaces, it must be enclosed in
quotation marks. This command will
display no message if it succeeds, but
will display a failure message if it
fails. When CDB is the postmortem
debugger, it will be activated
whenever an application crashes.

I would have something like cdb -iaec ".dump /ma /u crashedapp.dmp;q" to get a memory dump when the process terminates.

And if the OS is Vista SP1+ then registry can be configured to get a full memory dump using WER http://msdn.microsoft.com/en-us/library/bb787181(VS.85).aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文