我已经实现了一个自定义TraceListener
,它使用Win32 API函数Write
记录发送到方法OutputDebugString
的消息并将它们输出到Win32跟踪。每当我的应用程序使用System.Diagnostics.Debug.Write
或System.Diagnostics.Trace.Write
时,跟踪侦听器都会正确处理这些消息。
但是,如果我的应用程序遇到诸如System.Diagnostics.Debug.Assert
之类的断言,我想拦截发送到调试输出的内容。不知何故,跟踪侦听器不会被assert生成的消息调用。这可能吗?或者我是否必须提供自己的Assert
实现才能使其正常工作?
答案 0 :(得分:3)
您是否在发布模式下构建? Debug.Assert具有定义的DEBUG符号的ConditionalAttribute,因此在发布模式下编译器将删除调用。
Debug.Assert在跟踪侦听器上调用Fail方法。这是否正确实施?如果你没有覆盖它,那么它默认调用前面带有“Fail:”的WriteLine。