API调试

var stackTrace = new System.Diagnostics.StackTrace(true);

通过new System.Diagnostics.StackTrace可以获取当前线程的堆栈帧信息

  1. using System.IO;
  2. using UnityEditor;
  3. using UnityEngine;
  4. namespace GameContent
  5. {
  6. public class TestTrackScript
  7. {
  8. private static int mIndex = 0;
  9. [MenuItem("GM/测试Track")]
  10. private static void TestTrack()
  11. {
  12. DebugTrack();
  13. }
  14. private static void DebugTrack()
  15. {
  16. if (mIndex > 3)
  17. {
  18. var stackTrace = new System.Diagnostics.StackTrace(true);
  19. for (int i = 0; i < stackTrace.FrameCount; i++)
  20. {
  21. var frame = stackTrace.GetFrame(i);
  22. string fileName = frame.GetFileName();
  23. int lineNumber = frame.GetFileLineNumber();
  24. string formattedMessage = $"[{Path.GetFileName(fileName)}:{lineNumber}]\n i={i}; FrameCount={stackTrace.FrameCount}";
  25. Debug.Log(formattedMessage);
  26. }
  27. }
  28. if (mIndex++ <= 3)
  29. {
  30. DebugTrack();
  31. }
  32. }
  33. }
  34. }

获取堆栈帧信息 - 图1

参考