【问题标题】:Find where "Debug assertion failed" error occured查找“调试断言失败”错误发生的位置
【发布时间】:2015-03-11 09:41:33
【问题描述】:

我编写了一个使用本地 mfc 库作为 COM 组件的 C# 应用程序。该程序在服务器机器上运行以监控一些硬件设备。虽然大多数时候应用程序正常工作,但有时我会收到“C++ Debug assertion failed”消息框。

我想知道当出现断言失败错误时如何调试我的应用程序并查看我的源代码的调用堆栈。我有我的 C# 应用程序源代码,但问题是断言发生在非托管代码中。当我将 Visual Studio 调试器附加到应用程序时,出现断言失败错误时什么也没有出现!

【问题讨论】:

  • 尝试在没有源代码的情况下调试程序很难。你实际上是在进行逆向工程。
  • 我有我的 C# 应用程序源代码,但问题是断言发生在非托管代码中,我已将 Visual Studio 调试器附加到应用程序,但出现评估失败错误时没有任何显示!
  • 好吧,有一个建议:在调用之前,尽可能在您的代码部分中查找并断言非托管代码的先决条件。如果幸运的话,这将起作用,并且无需进行逆向工程或重写黑盒。
  • 谢谢,您能详细解释一下“查找并断言非托管代码的前置条件”吗?
  • 这意味着追踪您使用的界面的文档,并确保您正确使用它。不知道怎样才能让它更清楚......

标签: c# c++ com native


【解决方案1】:

如果你有 COM 组件的源代码,你只能调试它。打开该项目后,将调试器附加到将调用/加载 COM 组件的 DLL 的进程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 2011-12-08
    相关资源
    最近更新 更多