我有点概念性地设计一个我喜欢的插件。我想要的是能够在我的代码中标记行(类似于如何添加断点),然后获取执行运行时的跟踪日志。而不是设置断点(因为它们在调试器外部不起作用),我宁愿在编译器内部添加额外的日志记录,因此AST。
重点是比较程序的不同运行;如果我做A会崩溃,但如果我做B则不会崩溃,而且大部分代码都应该相同,那么它在哪里发散?
现在我正在使用文件IO和diff工具执行此操作;它有效,但有点笨拙。
我想这个问题是:这可以做到并完成这样的事情吗?
答案 0 :(得分:1)
我不知道任何完全符合你描述的东西。然而...
对于仅调试使用,Visual Studio 2010具有“跟踪点”。它们以与断点相同的方式添加,但不是停止程序,而是将一些文本输出到调试输出。因为它们是在调试器中设置的,所以它们根本不会影响您的源代码。
如果要跟踪发布版本中的活动,只需将System.Diagnostic.Trace.WriteLine()调用添加到代码中即可。这些可以使用TraceSwitches进行控制,因此默认情况下可以禁用它们,只有在需要额外信息来诊断问题时才能打开它们。与Debug.WriteLine()调用不同,它们(在默认情况下)包含在发布版本和调试版本中。请注意,即使禁用了tracewitch,这些跟踪调用也会花费很小的开销,因此请避免在代码的性能关键区域中使用它们。