如何比较 .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 中的执行路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何将相对路径转换为 ​​C#/.NET 中的完全限定路径?

如何比较 C# 中的(目录)路径?

如何比较 C# 中的(目录)路径?

vue项目中的路径别名

获取 Windows 窗体应用程序执行目录的路径

在 API 基本路径 .net 核心中包含占位符