C# 获取当前调用堆栈
是否有可能在不引发异常的情况下获取windows应用商店应用程序中的当前调用堆栈 我找到了,但它不适用于windows应用商店应用程序 为什么我需要这个 我需要获取调用堆栈,因为我有DirectX纹理内存泄漏 我想在分配纹理时将调用堆栈附加到纹理。在一些程序使用后,我打印所有尚未释放的纹理的调用堆栈C# 获取当前调用堆栈,c#,windows-8,windows-runtime,windows-store-apps,callstack,C#,Windows 8,Windows Runtime,Windows Store Apps,Callstack,是否有可能在不引发异常的情况下获取windows应用商店应用程序中的当前调用堆栈 我找到了,但它不适用于windows应用商店应用程序 为什么我需要这个 我需要获取调用堆栈,因为我有DirectX纹理内存泄漏 我想在分配纹理时将调用堆栈附加到纹理。在一些程序使用后,我打印所有尚未释放的纹理的调用堆栈 应该很容易看到我忘记取消分配纹理的位置。没有文档记录的方法可以访问.NET中存在的当前堆栈(如使用StackFrame) 您可以尝试通过创建一个记录操作的函数来维护执行日志或记录。这需要在函数中粘贴
应该很容易看到我忘记取消分配纹理的位置。没有文档记录的方法可以访问.NET中存在的当前堆栈(如使用
StackFrame
)
您可以尝试通过创建一个记录操作的函数来维护执行日志或记录。这需要在函数中粘贴一点:
[Conditional("DEBUG")]
void Log(string message,
[CallerMemberName] string member = "",
[CallerFilePath] string path = "",
[CallerLineNumber] int line = 0 ) {
Debug.WriteLine(string.Format("{0}\t{1}:{3} ({2}) ",
message, member, path, line));
}
使用
Log("hello!");
将产生:
hello! MainPage_Loaded:45 (c:\Dev\Projects\Win8AppTest\MainPage.xaml.cs)
上面的函数使用了几个相对较新的属性。例如:。该函数获取调用方的方法或属性名
Conditional
属性只是说只在调试版本中编译函数。没有文档化的方法可以访问.NET中存在的当前堆栈(如StackFrame
)
您可以尝试通过创建一个记录操作的函数来维护执行日志或记录。这需要在函数中粘贴一点:
[Conditional("DEBUG")]
void Log(string message,
[CallerMemberName] string member = "",
[CallerFilePath] string path = "",
[CallerLineNumber] int line = 0 ) {
Debug.WriteLine(string.Format("{0}\t{1}:{3} ({2}) ",
message, member, path, line));
}
使用
Log("hello!");
将产生:
hello! MainPage_Loaded:45 (c:\Dev\Projects\Win8AppTest\MainPage.xaml.cs)
上面的函数使用了几个相对较新的属性。例如:。该函数获取调用方的方法或属性名
Conditional
属性只是说只在调试版本中编译函数