c# - 从 C# 打印堆栈跟踪信息

标签 c# parsing error-handling stack-trace

作为我们产品中某些错误处理的一部分,我们想要转储一些堆栈跟踪信息。但是,我们发现许多用户只会截取错误消息对话框的屏幕截图,而不是向我们发送程序中可用的完整报告的副本,因此我想在此对话框中提供一些最少的堆栈跟踪信息。

我机器上的 .NET 堆栈跟踪如下所示:

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
at System.IO.StreamReader..ctor(String path)
at LVKWinFormsSandbox.MainForm.button1_Click(Object sender, EventArgs e) in C:\Dev\VS.NET\Gatsoft\LVKWinFormsSandbox\MainForm.cs:line 36

我有这个问题:

格式看起来是这样的:

at <class/method> [in file:line ##]

但是,atin 关键字,我认为如果它们运行挪威语 .NET 运行时而不是我安装的英语运行时,它们将被本地化.

有没有什么方法可以让我以语言中立的方式分离这个堆栈跟踪,这样我就可以只显示那些有这个的条目的文件和行号?

换句话说,我想要上面文本中的信息:

C:\Dev\VS.NET\Gatsoft\LVKWinFormsSandbox\MainForm.cs:line 36

您能提供的任何建议都会有所帮助。

最佳答案

您应该能够通过说出 StackTrace 对象而不是字符串

var trace = new System.Diagnostics.StackTrace(exception);

然后您可以自己查看框架,而无需依赖框架的格式设置。

另请参阅:StackTrace reference

关于c# - 从 C# 打印堆栈跟踪信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51768/

相关文章:

c# - 如何配置BitmapImage缓存?

python - 我如何处理这个文本文件并解析我需要的内容?

asp.net-mvc-2 - 处理 DDD 风格的 ASP.Net MVC2 Web 应用程序中的错误

c# - 使用 SharePoint 作为数据源

c# - Visual Studio 设计器中窗体的大小是否受限于屏幕分辨率?

c# - 将方法调用从隐式类型参数更改为显式

java - 如何使用java在int字段的左侧添加零

java - 如何在Java中基于节点枚举对象?

PHP日志捕获异常

sql - 如何在 C 程序中捕获来自 PostgreSQL 的通知