如何获取代码或堆栈跟踪

本文关键字:堆栈 跟踪 取代码 何获 | 更新日期: 2023-09-27 17:49:55

我试图找出一些代码的执行路径(即它击中的方法和顺序)。是否有一个工具,或通过visual studio或网络的手段。配置显示程序正在经历的函数顺序?

现在我把调试点放在某些区域,希望它击中正确的区域,但在某些情况下,这是一个漫长而乏味的过程。

如何获取代码或堆栈跟踪

如果你想弄清楚是什么代码在调用一个特定的方法,你可以试试System.Diagnostics.StackFrame:

var s = new System.Diagnostics.StackFrame();
Console.WriteLine(s.ToString());

StackFrame将为您提供当前线程的堆栈跟踪。
参见MSDN: http://msdn.microsoft.com/en-us/library/system.diagnostics.stackframe.aspx

如果你正在寻找更多的细节,那么剖析器可能是一个更好的选择。我使用了JetBrains的dotTrace,它确实提供了很多细节。

EDIT:
ASP。NET还提供了跟踪功能。如果您在web.config中添加以下内容:

<system.web>
    <trace enabled="true" />
    ...
</system.web>

,然后添加Trace="true"到您的页面指令:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyPage.aspx.cs" Trace="true" %>

,那么当您查看页面时,您将在页面底部获得一堆跟踪输出。

希望对你有帮助。

一些。net分析工具可以提供这种分析(通常称为调用图分析)。我知道的一个是ANTS分析器。

然而,如果你正在寻找每个被执行的方法和传递的参数的详细跟踪,你可能会发现用任何工具都很难得到。如果这是您实际需要的,您可能需要使用PostSHARP之类的工具在每个方法调用上编织跟踪逻辑(您可以使用MethodBoundaryAspect)。

教程:

  • 丰富的自定义错误处理净
  • ASP异常处理建议. NET Web应用程序

处理程序,库

  • log4net
  • elmah

嗯,我总是使用的一种方法是在函数中添加printfOutputDebugString(假设您有源代码)。通过使用一些条件定义,可以使这些调试信息仅在调试版本中显示。

运行时流(由我开发的)显示了。net程序执行的函数顺序。