【问题标题】:Is there a crash reporting service that supports mixed C++ and C# applications?是否有支持混合 C++ 和 C# 应用程序的崩溃报告服务?
【发布时间】:2017-10-28 02:59:47
【问题描述】:

我目前正在使用 Windows 操作系统中内置的 Windows 错误报告服务。它在很多方面都存在不足,包括自动提交新构建以进行崩溃收集和分析实际崩溃。

我发现了一些选项,包括用于 C++ 应用程序的 Dr DumpCrashRpt

我发现最吸引人的选项是HockeyApp。我的团队已经使用 HockeyApp 来托管移动应用程序以及构建我们的桌面应用程序。此外,它似乎比其他服务更受支持且功能更丰富。它似乎只支持 .NET 应用程序的崩溃报告。

我试图为其收集崩溃报告的应用程序是一个混合的 C++ 和 C# 应用程序。我不确定是否有可以处理两种语言的崩溃报告服务。

在不深入细节的情况下,我的应用程序主要是 .NET 封装在一个原生 C++ 应用程序中。我假设这意味着我需要一项服务来支持 C++ 崩溃报告。

总结一下:

  1. 如果我的应用程序主要基于 .NET,但包含在本机 C++ 应用程序中,我是否需要仅支持 C++ 应用程序的崩溃报告服务?
  2. 是否有支持使用混合 C++ 和 C# 代码的应用程序的崩溃报告服务?

【问题讨论】:

  • .NET 支持 C++,您的 C++ 应用程序不是 C++.NET 应用程序吗?如果没有,有什么理由不能做到吗?我认为这会让你更容易解决这个问题。
  • 这是一个基于 MFC 的遗留应用程序已有大约几十年的历史。我们已经慢慢地用 C# / .NET / WPF 替换了大部分 UI,但是那种包含所有东西的窗口和许多底层逻辑仍然是 C++。我们确实有一些 C++ CLI / C++ .NET 代码,但这主要是允许 C++ 本机代码和 C# .NET 代码相互通信的互操作粘合剂。

标签: c# c++ crash crash-reports crash-dumps


【解决方案1】:

这些工具有一个缺点:它们使用未处理的异常处理机制并且存在于您的流程中。如果您的应用程序损坏,您将无法再依赖这些东西来工作。我在 VB6 中遇到过这种情况,其中 VB6 运行时被破坏,没有未处理的异常处理程序可以帮助我。

这也是 WER(Windows 错误报告)存在的原因。虽然您的进程正在消亡,但 Windows 本身仍然可以正常工作。也许您也可以从它的功能中受益:WER LocalDumps Registry Key

在安装产品期间设置此注册表项,它会将故障转储保存到文件夹中。当您的应用程序下次启动时,您可以随心所欲地使用它们(可能需要用户的许可):

  • 分析故障转储(例如使用 ClrMd)并向您发送一些异常详细信息
  • 缩小故障转储并将缩小的转储发送给您。 (将完整内存的 .NET 转储转换为小型小型转储)
  • 根据要求要求用户将完整的故障转储发送给您
  • 别忘了清理一下

总而言之,我想说这并不难。对学生来说可能是一个很好的项目。优点:你不需要关心所有的崩溃处理、指针修改等,因为 WER 会为你做这件事。你不能真的搞砸了。

哦,当您构建它时,请考虑将其构建为可重用组件并在 Github 上开源。我也需要那个。你不能再获得专利了,因为在这篇文章中我会声称“现有技术”:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多