我试图弄清楚某些代码的执行路径(即它命中的方法和顺序)。是否有工具,或通过visual studio或web.config来显示程序正在运行的函数的顺序?
现在我在某些区域放置调试点并希望它能够到达正确的区域,但在某些情况下,这是一个漫长而缓慢的繁琐过程。
答案 0 :(得分:2)
某些.NET分析工具可以提供这种分析(通常称为调用图分析)。我所知道的是ANTS profiler。
但是,如果您正在寻找每个执行方法的详细跟踪以及传递了哪些参数 - 您可能会发现很难使用任何工具。如果这是您实际需要的,您可能需要使用PostSHARP之类的工具在每个方法调用上编写跟踪逻辑(您可以使用MethodBoundaryAspect)。
答案 1 :(得分:2)
如果您正在尝试找出调用特定方法的代码,可以尝试使用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,它确实提供了很多细节。
编辑:
ASP.NET还提供tracing功能。如果将以下内容添加到web.config:
<system.web>
<trace enabled="true" />
...
</system.web>
然后将Trace="true"
添加到您的页面指令:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyPage.aspx.cs" Trace="true" %>
然后当你查看它时,你会得到一堆追踪输出到你的页面底部。
希望有所帮助。
答案 2 :(得分:0)
教程:
处理程序&amp;库
答案 3 :(得分:0)
好吧,我总是使用的一种方法是在函数中添加printf
或OutputDebugString
(假设你有源代码)。您可以通过使用某些条件定义使这些调试信息仅显示在调试版本中。
答案 4 :(得分:0)
Runtime Flow(由我开发)显示了.NET程序正在执行的函数的顺序。