如何比较 .NET 中的执行路径?
Posted
技术标签:
【中文标题】如何比较 .NET 中的执行路径?【英文标题】:How to compare execution paths in .NET? 【发布时间】:2010-02-12 06:30:01 【问题描述】:我正在调试 .NET Framework 源代码以查找 a bug in my application。我有两个类似的代码输入,一个显示错误,另一个没有。然而,按照代码路径进入 .NET 源代码是相当复杂的。
我想要的是一个工具,它可以对两个输入都执行并比较结果以查看采用了哪些代码路径、内部值有何不同等...
这适用于 .NET 吗?
【问题讨论】:
@Mitch:不,我几乎没有使用过,所以我不太熟悉它们的功能。这会给我这个级别的细节吗?我对内存或性能信息不感兴趣。 【参考方案1】:你可以试试nCover。它可以向您显示代码覆盖率信息,这可能会帮助您确定发生错误时采用了哪些分支。
【讨论】:
@Mark:只是尝试一下,但它似乎没有选择 .NET Framework 源代码。我需要能够看到 MS 的代码在做什么。除非我错过了一个选项?【参考方案2】:您可以尝试JetBrains DotTrace 并忽略时间安排。他们提供 30 天免费试用下载。
【讨论】:
【参考方案3】:按照 Mitch 的建议,查看分析器,也许是 ANTS。它会给你所有的方法调用,这样你就可以看到正在发生的一切。
【讨论】:
【参考方案4】:SD C# Test Coverage Tool 将显示如果您单独运行测试用例,将执行哪些代码。
如果您要求,它还会计算每种情况下涵盖的代码之间的差异。这种差异将是一个测试执行的代码,而另一个不执行。可能这就是您的问题所在。
它不会帮助您获得 .NET 框架的源代码。
【讨论】:
【参考方案5】:尝试使用分析器:
EqaTec(免费)
ANTS Performance Profiler(14天试用)
dotTrace(10天试用)
如果你有 Visual Studio 2008 的企业版(或其他版本)
Visual Studio Profiler【讨论】:
【参考方案6】:免费试用EQATEC Tracer - 它几乎完全符合您的要求。
它将“跟踪代码”注入到您的应用程序中,该代码将在运行时准确地告诉您执行了哪些方法以及参数是什么。有一些复杂的方法可以微调要跟踪的方法,因为“全部”通常太多了,但是如果您真的想要,只需单击一下即可打开所有方法的跟踪。
看看这里的主要功能:http://www.eqatec.com/tools/tracer/features
-在这里获取:http://www.eqatec.com/tools/tracer
编辑:抱歉,我错过了必须深入研究实际 .NET 框架代码的部分。跟踪器无法轻松做到这一点。
【讨论】:
以上是关于如何比较 .NET 中的执行路径?的主要内容,如果未能解决你的问题,请参考以下文章