C# 空堆栈跟踪。可能的

C# 空堆栈跟踪。可能的,c#,stack-trace,C#,Stack Trace,堆栈跟踪是否可能完全为空? 我收到了一个从计算机事件属性复制的事件日志文本,上面写着: 说明:发生未处理的异常,进程终止 应用程序ID:DefaultDomain 进程ID:123 异常:System.OutOfMemoryException 消息:引发了“System.OutOfMemoryException”类型的异常 堆栈跟踪: 有关更多信息,请参阅位于的帮助和支持中心 在我看来,堆栈跟踪可疑。我在论坛和文档上搜索了很多——没有关于堆栈跟踪是空的。只有MSDN提到“由于优化过程中发生的代码

堆栈跟踪是否可能完全为空? 我收到了一个从计算机事件属性复制的事件日志文本,上面写着:

说明:发生未处理的异常,进程终止

应用程序ID:DefaultDomain

进程ID:123

异常:System.OutOfMemoryException

消息:引发了“System.OutOfMemoryException”类型的异常

堆栈跟踪

有关更多信息,请参阅位于的帮助和支持中心

在我看来,堆栈跟踪可疑。我在论坛和文档上搜索了很多——没有关于堆栈跟踪是空的。只有MSDN提到“由于优化过程中发生的代码转换(如内联),StackTrace属性可能不会报告预期的那么多方法调用。”但没有提到任何方法调用报告

我需要确认后再联系确认,因为这是一个多层次的沟通,需要时间进行回复


对my的任何更正都怀疑堆栈跟踪不能为空?

有时,调用堆栈本身可能是OOM的原因(调用堆栈中太多)

所以。。。你看到问题了


或者堆可能已耗尽,或者。。。或者,请参阅@Oded comment

要在事件日志中创建消息,必须检索字符串属性
Exception.StackTrace
。计算此属性的值需要创建一个新的
StackTrace
对象。如果应用程序内存不足,这可能是不可能的,因为分配失败。这可以解释为什么堆栈跟踪丢失


当应用程序内存不足时,即使是日志记录之类的错误处理也可能由于资源不足而失败。在您的情况下,您至少知道是内存不足的情况触发了故障。

除了OOM例外,任何事情都是可能的!OutOfMemoryException?甚至stacktrace也可能没有足够的内存。