【发布时间】:2014-08-11 13:22:38
【问题描述】:
简而言之,我需要在 C# 中修改当前堆栈跟踪,以便我调用的方法(我无法修改)会认为是其他人调用它。
现在,让我们稍微介绍一下为什么我需要进行如此可怕的黑客攻击。
在 Unity3d 中,Debug.Log 在开发者控制台中创建一条新记录。当您双击它时,它会打开 IDE 以显示负责该记录的确切文件和行。但是,由于各种原因(在生产中禁用调试,使其在其他线程中可用),我创建了一个包装类 Print,而不是 UnityEngine.Debug。
但是使用 wrapper,现在当开发人员点击控制台中的日志记录时,打开的是 Print,而不是调用 Print.Log 的实际位置。而且由于Debug.Log 不考虑错误消息或上下文对象,我认为它使用调用堆栈来识别要打开的文件。不用说,我想解决这个问题。
【问题讨论】:
-
我理解你这样做的动机。我认为这是不可能的,因为它可以规避任何代码访问安全概念
-
我也这么认为,但我必须问清楚。
-
answers.unity3d.com/questions/176422/debug-wrapper-class.html 找到此链接,建议将您的调试类移至不同的程序集。
-
@SirBraneDamuj 我可以确认该建议有效,这就是我的记录器的工作方式。