一个VS插件可以将代码注入编译过程吗?

时间:2009-05-29 20:47:21

标签: visual-studio debugging plugins

我有点概念性地设计一个我喜欢的插件。我想要的是能够在我的代码中标记行(类似于如何添加断点),然后获取执行运行时的跟踪日志。而不是设置断点(因为它们在调试器外部不起作用),我宁愿在编译器内部添加额外的日志记录,因此AST。

重点是比较程序的不同运行;如果我做A会崩溃,但如果我做B则不会崩溃,而且大部分代码都应该相同,那么它在哪里发散?

现在我正在使用文件IO和diff工具执行此操作;它有效,但有点笨拙。

我想这个问题是:这可以做到并完成这样的事情吗?

1 个答案:

答案 0 :(得分:1)

我不知道任何完全符合你描述的东西。然而...

对于仅调试使用,Visual Studio 2010具有“跟踪点”。它们以与断点相同的方式添加,但不是停止程序,而是将一些文本输出到调试输出。因为它们是在调试器中设置的,所以它们根本不会影响您的源代码。

如果要跟踪发布版本中的活动,只需将System.Diagnostic.Trace.WriteLine()调用添加到代码中即可。这些可以使用TraceSwitches进行控制,因此默认情况下可以禁用它们,只有在需要额外信息来诊断问题时才能打开它们。与Debug.WriteLine()调用不同,它们(在默认情况下)包含在发布版本和调试版本中。请注意,即使禁用了tracewitch,这些跟踪调用也会花费很小的开销,因此请避免在代码的性能关键区域中使用它们。