通常情况下,我使用 Debug.Log() 打印信息时,它会显示在控制台中,我可以双击该信息以转到函数调用。单击将展开文本,以显示调用历史记录(某个函数调用了另一个函数,再调用另一个函数,以此类推,直到调用 Debug.Log())。
但现在,函数调用被堆栈的内存地址所代替,出现了一种奇怪的行为。
我还无法上传图片,所以这里是控制台的样子。
我仍然可以通过展开消息找到调用位置,但这很糟糕。
你能找到调用吗? 提示:来自 PointCloudGenerator.cs 的第 290 行。
这并不是太糟糕,但问题是双击行为根本不起作用,试图找出调用来源非常令人沮丧。警告和错误也发生完全相同的事情。
编辑:我正在使用 Unity 5.6.3p3,我的编辑器是 Visual Studio 2017 Enterprise。
这是调用日志的位置:
但现在,函数调用被堆栈的内存地址所代替,出现了一种奇怪的行为。
我还无法上传图片,所以这里是控制台的样子。
我仍然可以通过展开消息找到调用位置,但这很糟糕。
你能找到调用吗? 提示:来自 PointCloudGenerator.cs 的第 290 行。
这并不是太糟糕,但问题是双击行为根本不起作用,试图找出调用来源非常令人沮丧。警告和错误也发生完全相同的事情。
编辑:我正在使用 Unity 5.6.3p3,我的编辑器是 Visual Studio 2017 Enterprise。
这是调用日志的位置:
private IEnumerator ReadCornerData(long capacity, CloudBounds cloudBounds)
{
List<Vector3> corners = new List<Vector3>();
List<Vector3> borders = new List<Vector3>();
using (MemoryMappedFile memoryMappedFile = MemoryMappedFile.CreateOrOpen("Global\\CornerData", capacity, MemoryMappedFileAccess.ReadWrite))
{
using (MemoryMappedViewAccessor accessor = memoryMappedFile.CreateViewAccessor())
{
byte dataAvailable = 0;
accessor.Write(0, ref dataAvailable);
accessor.Write((int)capacity / 2, ref dataAvailable);
int memIndex = 0;
while (dataAvailable != 0xF)
{
accessor.Read(memIndex, out dataAvailable);
yield return new WaitForEndOfFrame();
}
UnityEngine.Debug.Log(dataAvailable);
}
}
}
这是在协程中,但实际上在我的代码中任何位置都会做同样的事情。