如何在 C# 中跟踪代码执行

Posted

技术标签:

【中文标题】如何在 C# 中跟踪代码执行【英文标题】:How to trace code execution in C# 【发布时间】:2010-01-28 11:58:01 【问题描述】:

如何跟踪我的 C# 应用程序的代码执行?有没有可用的工具?我的生产站点有问题。

【问题讨论】:

【参考方案1】:

Visual Studio 中有一个内置工具,称为 debugger。

您在代码中设置断点并单步执行。

.NET 框架还在System.Diagnostics 命名空间中提供tracing 类。

对于不支持跟踪的正在运行的应用程序,您可以使用分析器(例如 redgate ANTZ 分析器或 JetBrains dotTrace),但这会影响性能。

如果您有内存转储(来自崩溃或manually induced one),您可以使用windbg 来分析转储。这将包括跟踪信息。

【讨论】:

Fredrik,无论发布/调试版本和远程调试选项如何,都可以提供跟踪开关来写出信息。 @Ian:我的评论不太正确,所以我删除了它并投票赞成(当我真正阅读完整答案时) +1 用于提及内置的跟踪日志支持;我经常发现引入外部日志库有点矫枉过正。 OP 提到它在production 站点上,调试器可能不可用。除非你向他介绍诸如 windbg 之类的东西? @Ngu Soon Hui - 请您详细说明一下。您还知道哪些其他工具可以跟踪未使用跟踪和日志记录编码的生产代码?【参考方案2】:

还有 JetBrains dotTrace,非常棒。

【讨论】:

【参考方案3】:

您能否在您的代码中将调试信息(例如“现在采用方法 1”)写入日志文件?

您可能会发现像 log4net 和 PostSharp 这样的工具很有帮助。

【讨论】:

【参考方案4】:

您可以使用一些外部日志库(例如 Log4Net),甚至可以使用 Visual Studio 的功能来执行远程调试并进入您的代码。

【讨论】:

【参考方案5】:

在 Visual Studio 2005+ 中按 F11 而不是 F5 来运行应用程序。

或者你可以插入一个断点(点击你想断的行的左边,让VS显示一个红点)。

【讨论】:

【参考方案6】:

Visual Studio 有很好的调试工具,但是如果这还不够,那么您可以从有助于分析代码分支的静态代码分析工具开始。

【讨论】:

【参考方案7】:

要跟踪生产问题,最好的选择是 ETW 跟踪。特别是在 ASP.NET 中,有内置的提供程序可以帮助识别性能问题。

如果您使用的是 Window2008,那么 ETW 跟踪可以提供调用堆栈。有来自 IIS、FileSystem、Registry、Threading 和一切可能的 ETW 跟踪。这是关于此的 MSDN article,为了获得托管调用堆栈,我几乎没有 posts

【讨论】:

以上是关于如何在 C# 中跟踪代码执行的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C#(.NET)中执行 Javascript 代码 [重复]

C# 如何间隔一定的时间执行一次代码?

如何在简单的 CRUD laravel 中执行简单的审计跟踪

如何检测 C# Windows Forms 代码在 Visual Studio 中执行?

在单个可执行文件中组合 C# 和 C++ 代码

如何从 C# 代码中跟踪连接失败的原因?