我有一个程序,如果发生崩溃并且用户希望发送它,它会向我报告错误/堆栈跟踪。
有时我会在错误消息中收到奇怪的字符以及堆栈跟踪,如下所示。
ファイルã¾ãŸã¯ã‚¢ã‚»ãƒ³ãƒ–リ 'Interop.iTunesLib, Version=1.11.0.0, Culture=neutral, PublicKeyToken=null'ã€ã¾ãŸã¯ãã®ä¾å˜é–¢ä¿‚ã® 1 ã¤ãŒèªã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚指定ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
stack trace
------------------------------------------------------
å ´æ‰€ STLib.TInfo.Init(Form f)
å ´æ‰€ STLib.FormMain..ctor() å ´æ‰€ C:\repo_sync\ST\FormMain.cs:è¡Œ 37
å ´æ‰€ STLib.Program.Main() å ´æ‰€ C:\repo_sync\ST\Program.cs:è¡Œ 54
我构建堆栈跟踪的代码如下所示
private static void GlobalThreadExceptionHandler(object sender, System.Threading.ThreadExceptionEventArgs e)
{
...
String stackTrace = "";
Exception currentEx = e;
do
{
stackTrace += string.Format("\r\n{0}", currentEx.Message);
stackTrace += "\r\n------------------------------------------------------";
stackTrace += string.Format("\r\n{0}", currentEx.StackTrace);
currentEx = currentEx.InnerException;
if (currentEx != null)
{
stackTrace += "\r\nCaused by";
}
}
while (currentEx != null);
.....
}
我想可能它必须做那台机器的非英语语言,有人可以告诉我这里有什么问题吗?
在 Hans Pasant 的评论之后添加
我有以下代码在发布到网络之前将堆栈跟踪转换为字节..
byte[] postdata = System.Text.Encoding.UTF8.GetBytes(stackTrace)
我使用与此处完全相同的代码发布此数据
Brian Grinstead 发布的来自 C# 客户端的多部分表单