使用跟踪侦听器将调试输出重定向到文件时出现问题

2023-12-03

我创建了一个调试侦听器,使用以下代码将输出从调试/控制台窗口重定向到文件(带有调用堆栈):

void SomeMethod()
{
    // Create a file for output .txt.
    Stream debugFile = File.Create(fileName);

    // create TextWriterTraceListener named "file"
    TextWriterTraceListener debugWriter = new TextWriterTraceListener(debugFile, "file");

    // add to debug listeners
    Debug.Listeners.Add(debugWriter);
    // set callstack to be shown
    Debug.Listeners["file"].TraceOutputOptions |= TraceOptions.Callstack;
    // set auto-flush
    Debug.AutoFlush = true;
}

但输出不会重定向到我指定的文件,它始终为空。

我在主窗体中从构造函数中调用它。我调用它的地方有问题吗?

我在这里试图实现的是将调试输出窗口中的异常放入带有调用堆栈的文件中,以便我可以找到它们并更正它们。

UPDATE: 经过一番研究后我得出的结论是添加一个新的TraceListener到调试Listeners集合不会重定向调试/控制台的输出。它实际上只是响应Write, WriteLine等方法与默认侦听器一样。 问题仍然存在:如何捕获调试/控制台窗口的输出以及如何获取其中出现的异常的堆栈跟踪?

有人有主意吗?


这是一篇文章回答了我的部分问题:http://www.codeproject.com/KB/trace/DbMonNET.aspx

即如何捕获调试/控制台窗口的输出。但是,似乎无法从此输出中获取堆栈跟踪。从这个角度来看,无论如何,这似乎都是一个糟糕的做法。

进一步的研究:看起来这些异常的出现是因为它们是在其他一些未正确链接的 dll 中处理的,并且它们是在那里处理的,而不是我的 try/catch 块。这可能是我应该查找错误的地方,即哪里有 dll 引用,我应该添加项目引用。

更多研究

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用跟踪侦听器将调试输出重定向到文件时出现问题 的相关文章

随机推荐