gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:41:44 25 4
gpt4 key购买 nike

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

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;
}

但是输出不会重定向到我指定的文件,它总是空的。

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

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

更新:经过一些研究,我得出结论,将新的 TraceListener 添加到 Debug Listeners 集合不会重定向来自调试/控制台。它实际上只是响应 WriteWriteLine 等方法,就像默认监听器一样。问题仍然存在:如何捕获 Debug/Console 窗口的输出以及如何获取出现在那里的异常的堆栈跟踪?

有人有什么想法吗?

最佳答案

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

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

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

更多研究:在 Visual Studio 主菜单中启用异常中断:调试 -> 异常 -> 检查您希望应用程序中断的异常类型(常见语言运行时)...没有更好的方法来处理异常。

关于c# - 使用跟踪监听器将调试输出重定向到文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5568630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com