C# 获取当前调用堆栈

C# 获取当前调用堆栈,c#,windows-8,windows-runtime,windows-store-apps,callstack,C#,Windows 8,Windows Runtime,Windows Store Apps,Callstack,是否有可能在不引发异常的情况下获取windows应用商店应用程序中的当前调用堆栈 我找到了,但它不适用于windows应用商店应用程序 为什么我需要这个 我需要获取调用堆栈,因为我有DirectX纹理内存泄漏 我想在分配纹理时将调用堆栈附加到纹理。在一些程序使用后,我打印所有尚未释放的纹理的调用堆栈 应该很容易看到我忘记取消分配纹理的位置。没有文档记录的方法可以访问.NET中存在的当前堆栈(如使用StackFrame) 您可以尝试通过创建一个记录操作的函数来维护执行日志或记录。这需要在函数中粘贴

是否有可能在不引发异常的情况下获取windows应用商店应用程序中的当前调用堆栈

我找到了,但它不适用于windows应用商店应用程序

为什么我需要这个

我需要获取调用堆栈,因为我有DirectX纹理内存泄漏

我想在分配纹理时将调用堆栈附加到纹理。在一些程序使用后,我打印所有尚未释放的纹理的调用堆栈


应该很容易看到我忘记取消分配纹理的位置。

没有文档记录的方法可以访问.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
属性只是说只在调试版本中编译函数