【问题标题】:Finding trace of System.AccessViolationException查找 System.AccessViolationException 的踪迹
【发布时间】:2015-09-01 18:09:37
【问题描述】:

当我从 Visual Studio 运行项目时,经过一段时间的工作后,我看到 mscorlib.dll 中发生了“System.AccessViolationException”。 但是在源选项卡上只有“源不可用”。我知道我没有 mscorlib.dll 的来源,但我怎样才能找到我的项目或我的库的哪一部分导致了这个问题?调用堆栈也只有一行。是否有可能找到至少一小部分堆栈跟踪?现在从外面看,这一切看起来就像 mscorlib 本身发出了一些调用并在它上面崩溃了(笑)。 不知道该怎么办,我讨厌这样的错误,因为它们发生在下班后 2 - 3 小时内,并且似乎它们来自 CefSharp 绑定(嵌入 Chromium),这是一个大型项目,所以我需要一些方法来挖掘代码(全部用调试信息编译)。

PS:当不是从 VS 运行时,应用程序窗口完全冻结(甚至没有下降,而是冻结),AppDomain.CurrentDomain.UnhandledException 不会捕获此异常(如预期).NET 4.5,VS2013

【问题讨论】:

  • 你必须启用非托管调试才能看到一些东西。嗯,CefSharp,别再看了。您可以诊断出此类内存损坏的几率非常低。

标签: c# access-violation


【解决方案1】:

尝试打破将大块代码放在 try-catch 块中。然后,当您确定代码在哪些块中失败时,将此块分成更小的块,依此类推,直到您可以缩小到代码中调用导致访问冲突异常的 mscorlib.dll 的确切行.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-05
    • 2022-01-06
    • 2019-07-05
    • 2016-07-16
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    相关资源
    最近更新 更多