gpt4 book ai didi

c# - 如何使 C# 应用程序因 AccessViolationException 而崩溃

转载 作者:太空狗 更新时间:2023-10-29 23:12:09 26 4
gpt4 key购买 nike

如何使用 AccessViolationException 故意使应用程序崩溃在 C# 中?

我有一个使用非托管 DLL 的控制台应用程序,该 DLL 最终因访问冲突异常而崩溃。因此,我需要故意抛出一个 AccessViolationException 来测试它在特定情况下的行为。

除此之外,它必须是特定的 AccessViolationException,因为 catch block 不会处理此异常。

令人惊讶的是,这不起作用:

public static void Crash()
{
throw new AccessViolationException();
}

这都不是:

public static unsafe void Crash()
{
for (int i = 1; true; i++)
{
var ptr = (int*)i;
int value = *ptr;
}
}

最佳答案

确定性方法是让 Windows 为您抛出它:

来自 Петър Петров 的回答:How to make C# application crash

[DllImport("kernel32.dll")]
static extern void RaiseException(uint dwExceptionCode, uint dwExceptionFlags, uint nNumberOfArguments, IntPtr lpArguments);

void start()
{
RaiseException(0xC0000005, 0, 0, new IntPtr(1));
}

关于c# - 如何使 C# 应用程序因 AccessViolationException 而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56385719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com