问题标签 [first-chance-exception]

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 投票
0 回答
310 浏览

c# - Finding true source of an first chance exception

we currently have an application with 2 pdfviewers for document comparison. Unfortunately, there are some pdf files causing exceptions either at loading them into the viewer or when being rendered by the viewer. The exception comes from within a 3rd party control.

So we tried to solve some of those problems by binding to AppDomain.CurrentDomain.FirstChanceException. When such an exception is thrown, a message should be shown in the viewer having the problem.

For we can at time current not distinguish from firstchanceexception's arguments which viewer has a problem, the message is shown in both viewers, even in the one who could have displayed his document without issues.

So the question is:

Is there any way to find the source of the exception?

sender is targeting towards application.run, not very helpful.

FirstChanceExceptionEventArgs are targeting at a type used by our viewer-controls, but without any indication which one has triggered the exception.

0 投票
0 回答
1068 浏览

c# - C#第一次机会异常不完整的堆栈跟踪

我有一个带有以下代码的 Windows 服务

在测试方法捕获内部,我可以看到完整的堆栈跟踪

而在private static void CurrentDomain_FirstChanceException我看到不完整的堆栈跟踪

如果我删除try{}catch{}CurrentDomain_UnhandledException 事件不会被触发

我想避免 try{}catch{} 只是为了记录异常。如何在第一次机会异常中获得完整的堆栈跟踪?

0 投票
1 回答
68 浏览

c++ - raw_Send() 和 raw_GetStream() 上的 CDOSYS 首次机会异常

当使用 CDO 发送电子邮件时,我遇到了四个第一次机会异常,两个 for IMessage::Send()and IMessage::GetStream()(所有这些都是无用的“ long at memory location such and such ”)。异常发生在我无法单步执行的代码中,但每个代码都得到了处理,最终我得到了一个HRESULTS_OK成功发送了电子邮件。

在设置像这个问题提到的配置时,我曾经遇到过第一次机会异常并以相同的方式解决它(用于Append()每个项目),所以我认为我缺少一些设置信息导致Send()/出现问题GetStream()

这是我所拥有的要点:

据我在 cdosys.tli 中看到的

关于为什么我会看到这些异常的任何线索?似乎很奇怪,例外是用来解决问题而不是先检查,不知道微软为什么会这样设置。

0 投票
1 回答
504 浏览

vb.net - 非托管的第一次机会异常会导致崩溃/重启吗?

后续问题: “在调查崩溃时,我应该只调查第二次机会异常吗?在哪些情况下我还需要调查第一次机会异常转储?”

我的问题有点宽泛,但我很好奇真正的答案是什么。我读过很多文章说第一次机会异常不太可能导致应用程序崩溃。这是导致它的第二次机会异常。一个简单的谷歌搜索并不能直接回答我的问题。

编辑:这里是示例文章,但还有更多:

什么是第一次机会例外?

“对于没有异常处理的代码,调试器将收到第二次机会异常通知,并会因未处理的异常而停止。”

程序崩溃,但 Debug Diag 说这是第一次机会异常,对吗?

当然,根据定义,只有第二次机会异常会导致代码崩溃,即代码未处理的异常?

我遇到了一个间歇性问题,我的应用程序重新启动或崩溃(事件查看器中没有错误),但在重新启动之前,Adplus 会生成一些第一次机会 AccessViolation 异常。没有第二次机会例外。

下面是 WinDbg.exe 上 FULLDUMP_FirstChance_av_AccessViolation 的片段:

下面的示例调用堆栈:

该错误与我仍在研究的堆损坏和无效指针有关。我是堆和 malloc 的新手,我刚刚学会了使用 WinDbg 进行调试。我只是想知道当这不是我的优先事项并且不会真正解决我的问题时,我是否在浪费时间学习内存分配。(当然了解堆是一件好事,但解决主要问题是重中之重)

我对我的 adplus 配置文件很有信心,我确信它会在所有第二次机会异常中生成完整的转储。我在示例应用程序上进行了尝试。

该应用程序不会崩溃,它只是在没有事件查看器错误的情况下意外和间歇性地重新启动。它可以在使用特定服务时间歇性地重新创建。

如果转储文件不是问题的真正原因,这是我可能的想法:

  • 其他进程(未附加在我的 adplus 上)导致重新启动。
  • 第二次机会异常完全转储只是没有生成。
  • 其他(有什么想法吗?)

PS:对不起,如果我没有指定一些细节和代码示例等,因为它是机密的。我在不影响公司政策的情况下尽力解释了这个问题。

提前谢谢!

0 投票
0 回答
1534 浏览

c# - 第一次机会异常,Microsoft C++ 异常:内存位置的 EEFileLoadException

我正在开发一个 C++ DLL,它是一个更大的项目的一部分,该应用程序是用 C# 编写的。

最近我收到一个 Microsoft Visual Studio 错误显示。我正在使用 Visual Studio 调试项目,我已附加到该过程。我在 DllMain 中有一个断点,但它在到达那里之前崩溃了,显示一个对话框,其中包含:

如果我单击 Break 按钮,则会显示调用堆栈:

[下面的帧可能不正确和/或丢失,没有为 KernelBase.dll 加载符号]
KernelBase.dll!74372ea2()
clr.dll!50bc454d()
clr.dll!50afc3ee()
clr.dll!50afc41d()
clr.dll !50afc440()
clr.dll!50b415a4()
clr.dll!50b1a8dc()
clr.dll!50b1a476()
clr.dll!50b1e0c4()
clr.dll!50b161b0()
clr.dll!50b238aa()
clr.dll! 50b1f739()
clr.dll!50b1f739()
clr.dll!50b1c090()
clr.dll!50b22caf()
clrjit.dll!68971939()
clrjit.dll!689922a5()
clrjit.dll!68989fed()
clrjit.dll!689749d5()
clr.dll!50b1fecf()
clr.dll!50b1ffac()
clr.dll!50b1fff1()
clr.dll!50b2024f()
kernel32.dll!76933a61()
kernel32.dll!76933a61()
clr .dll!50adf405()
clr.dll!50adf35f()
clr.dll!50b209bf()
clr.dll!50b21780()
clr.dll!50adef11()
mscorlib.ni.dll!78fda29d()
mscorlib.ni.dll!790214a2 ()
mscorlib.ni.dll!790213d6()
mscorlib.ni.dll!79021391()
mscorlib.ni.dll!78fda1f8()
clr.dll!50adea56()
clr.dll!50af93ef()
clr.dll!50af9673()
clr.dll!50c3ecfd()
clr.dll!50afb213()
clr.dll!50afb27d()
clr.dll!50ae1c81()
clr.dll!50adf405()
clr.dll!50ae1c81()
clr.dll!50ae1e80()
clr .dll!50bd4917()
kernel32.dll!769395e4()
ntdll.dll!774d241a()
ntdll.dll!774d23e9()

我可以做些什么来帮助我找出问题所在?

[编辑]根据建议我做了以下事情:

我指定了与 DLL 位置相同的 (.pdb) 位置:

我还检查了路径以确保它是正确的,遗憾的是没有区别。

[编辑 2] 更多信息,该项目的 C# 部分正在 Visual Studio 2010 中开发。C++ 部分在 Visual Studio 2008 中。我无法控制这一点。