无法在C ++ / CLI中处理AccessViolationException

时间:2012-05-06 22:46:15

标签: c# webkit interop c++-cli access-violation

我对C ++ / CLI不是很熟悉,但很久以前我做了一些C ++。我正在尝试调试AccessViolationException我在JSContext::EvaluateScript项目内的JSCore方法内的WebKit.NET中。以下是导致异常的代码行:

JSValueRef result = NULL;

try
{
    result = JSEvaluateScript(_context, jsScript, /*(JSObjectRef)jsObj*/NULL, NULL, 0, &exception);
}
catch(...)
{
}

此错误将随机发生。我知道_contextjsScript不为空。一个奇怪的事情是,当错误发生时,Program.cs文件打开,Application.Run(new Form1());行上出现TargetInvocationException的异常,但我可以在IntelliTrace中看到,在此之前就有这个{ {1}}发生在上面引用的行之前,所以我认为这是导致AccessViolationException的异常。

另外,如果我在上面的行(TargetInvocationException)和另一个断点之后设置一个断点,第一个会被击中,然后我按下F10而第二个不会被击中,所以应该在第一个例外发生例外。此外,result = JSEvaluateScript...位于JSEvaluateScript dll内部,因此我无法进入它。

但是,最初不存在的WebKit似乎没有捕获异常,所以我不确定发生了什么。我能够通过在我的应用程序中执行一组操作来重现错误,但无法理解为什么这些操作会导致错误。大多数时候使用相同的参数调用try/catch都不会导致异常。

有关如何诊断的建议吗?我没有想法。

编辑:我刚做了一些调试,错误也可能发生在其他一些随机行。所以我很确定与上面的那行无关。

编辑2:这是堆栈跟踪:

JSContext::EvaluateScript

0 个答案:

没有答案