【发布时间】:2018-12-09 02:42:48
【问题描述】:
我试图在不引发异常的情况下获取堆栈跟踪,并且它可以工作(人类可读),我唯一的问题是两种方法之间的格式不同。这是我在使用 Unity 时遇到的一个问题,因为它将格式从 throw 解析为 open VS 到关联的行 #。因此,如果我使用新的 StackTrace,格式会关闭,双击 Unity 中的日志不会执行任何操作。如何获取新的堆栈跟踪以匹配 throw 的堆栈跟踪格式?
public class TestScript : MonoBehaviour
{
private void Awake()
{
string throwTrace = null;
string newTrace = null;
try
{
newTrace = new System.Diagnostics.StackTrace(0, true).ToString();
throw new Exception();
}
catch (Exception e)
{
throwTrace = e.StackTrace;
}
Debug.Log("throwTrace: {" + throwTrace + "}");
Debug.Log("newTrace: {" + newTrace + "}");
}
}
--
throwTrace: { at TestScript.Awake () [0x00013] in /Users/lol_tim/New Unity Project/Assets/TestScript.cs:17 }
newTrace: { at TestScript.Awake() in /Users/lol_tim/New Unity Project/Assets/TestScript.cs:line 16}
【问题讨论】:
-
2 年后......显然这只是 Unity 的 .Net 3.5 运行时中的一个问题。 .Net 4.x 运行时已解决此问题。
标签: c# debugging unity3d exception stack-trace