如何获取代码或堆栈跟踪
本文关键字:堆栈 跟踪 取代码 何获 | 更新日期: 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
嗯,我总是使用的一种方法是在函数中添加printf
或OutputDebugString
(假设您有源代码)。通过使用一些条件定义,可以使这些调试信息仅在调试版本中显示。
运行时流(由我开发的)显示了。net程序执行的函数顺序。