这个方法的文档说:
在将消息写入Windows应用程序事件日志后立即终止进程,然后在向Microsoft报告的错误中包含该消息和可选的异常信息。
但是,如果部署到没有EventLog或Windows错误报告的Linux环境中,情况又会怎样呢?
我希望能够以这种方式立即终止控制台应用程序,但不清楚这是否是正确的方法。对于Linux,有更好的方法吗?
计划是让我的控制台应用程序在Linux容器中运行。我希望应用程序能够终止,从而导致容器终止,因此基础设施可以启动一个新的。然而,我刚刚开始使用Docker(我的Linux技能非常生疏)。所以我在这里不知所措.
我可能不得不旋转一个小样本,只是修修补补,但希望在这里问这个问题,以防有人可以提供一个更快的答案。
Tia
2条答案
按热度按时间u4dcyp6a1#
什么都不如试试看!
字符串
给我
型
我在
/var/log
中没有看到任何额外的日志消息。所以我猜它只是快速存在并将日志转储到控制台。kulphzqa2#
除了stimulus已经描述的行为之外,它还做了一件事:如果设置了
DOTNET_DbgEnableMiniDump
环境变量,这将创建一个崩溃转储。您可以在https://github.com/dotnet/runtime/blob/88b5e3d4b77dd8238331ade1b31ac8ddc62f22f7/src/coreclr/nativeaot/System.Private.CoreLib/src/System/RuntimeExceptionHelpers.cs#L181上看到
FailFast
的源代码,在那里您可以确切地看到它写入stderr的内容。它决定是否对它收集的信息做任何其他事情(除了将其写入stderr)的行如下:
https://github.com/dotnet/runtime/blob/88b5e3d4b77dd8238331ade1b31ac8ddc62f22f7/src/coreclr/nativeaot/System.Private.CoreLib/src/System/RuntimeExceptionHelpers.cs#L283-L288
您可以看到它在中止进程之前调用了一个名为
RhCreateCrashDumpIfEnabled
的方法。