我在Visual Studio 2012上有一个C#程序有错误。如何检索堆栈跟踪?
答案 0 :(得分:3)
在调试时,堆栈跟踪可以作为“调用堆栈”窗口访问。如果您想要捕获的异常的堆栈跟踪,可以通过您捕获的异常的StackTrace
成员访问它:
try
{
[...]
}
catch (Exception ex)
{
Console.Write(ex.StackTrace);
}
添加另一个有用的例子:
try
{
[...]
}
catch (Exception ex)
{
System.Diagnostics.Debug.Write(ex.StackTrace);
}
这将打印到Visual Studio调试控制台而不是应用程序的控制台窗口。
答案 1 :(得分:1)
如果您收到异常,可以通过调用同名成员获得StackTrace。
答案 2 :(得分:1)
这是我用来获取详细信息的一些代码
if (e.Exception.InnerException != null)
{
sb.AppendLine("InnerException");
if (e.Exception.InnerException.Message == null)
{
sb.AppendLine("e.Exception.InnerException.Message == null");
}
else
{
sb.AppendLine("e.Exception.InnerException.Message = " + e.Exception.InnerException.Message);
}
if (!string.IsNullOrEmpty(e.Exception.InnerException.StackTrace))
{
sb.AppendLine("e.Exception.InnerException.StackTrace ");
int count = 0;
foreach (string line in e.Exception.InnerException.StackTrace.Split('\n'))
{
sb.AppendLine(line.Trim());
count++;
if (count > 10) break;
}
}
}
sb.AppendLine("OuterException");
if (e.Exception.Message == null)
{
sb.AppendLine("e.Exception.Message == null");
}
else
{
sb.AppendLine("e.Exception.Message = " + e.Exception.Message);
}
if (!string.IsNullOrEmpty(e.Exception.StackTrace))
{
sb.AppendLine("e.Exception.StackTrace ");
int count = 0;
foreach (string line in e.Exception.StackTrace.Split('\n'))
{
sb.AppendLine(line.Trim());
count++;
if (count > 10) break;
}
}