作为我们产品中某些错误处理的一部分,我们想转储一些堆栈跟踪信息。但是,我们体验到许多用户只会截取错误消息对话框的屏幕截图,而不是向我们发送程序中提供的完整报告的副本,因此我想在此对话框中提供一些最小的堆栈跟踪信息。从C#打印堆栈跟踪信息
我的机器上.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 ##]
然而,在和在关键字,我假设这些将被本地化,如果他们运行,比如说,一个挪威.NET运行时我而不是我已经安装的英文版本。
有没有什么办法让我以与语言无关的方式挑选这个堆栈跟踪,这样我就只能显示那些有这个条目的文件和行号?
换句话说,我想从上面的文字这样的信息:
C:\Dev\VS.NET\Gatsoft\LVKWinFormsSandbox\MainForm.cs:line 36
你可以给任何意见将是有益的。
我想,因为我有记录的字符串从任意的应用工作会有人给出的答案解析,这和真的希望得到一些细节。鉴于你有控制StackTrace的来源,你确实已经选择了正确的答案:) – TheXenocide 2012-09-18 13:44:58