gpt4 book ai didi

visual-studio - Visual Studio 2008调试窗口显示时间戳?

转载 作者:行者123 更新时间:2023-12-04 03:41:34 25 4
gpt4 key购买 nike

我希望能够在Visual Studio的调试窗口中的每个跟踪的开始处看到一个时间戳。

 [Time stamp here] The thread 'Win32 Thread' (0xcd0) has exited with code 0 (0x0).

[Time stamp here] => CLR ProvideAssembly: AppDomainId: 1, Ref: 'msvcm90d...


sysinternals应用程序的示例就是 DebugView 。问题是我无法进行Visual Studio调试,不能同时使用DebugView进行监听,而且我不愿意手动将时间戳添加到跟踪器中。

最佳答案

由于输出窗口文本一旦写入就为只读,因此没有一种简单的方法可以精确地完成您想做的事情。但是,执行类似的操作很容易:在将新文本写入输出窗口之后,添加时间戳记行。这将使输出窗口更加困惑,但是您会得到正确的时机。

这是这样的工作方式:首先,创建一个Visual Studio外接程序或宏,该宏挂接Outlook窗口事件 Pane 的PaneUpdated事件。 (有关如何使用宏方法执行此操作的信息,请参见this thread)。确保在事件处理程序中检查pane.Name == "Debug"并忽略其他 Pane 。其次,当您在调试输出 Pane 中检测到新文本时,请添加时间戳行,如下所示:

public void AddTimestamp(DTE2 dte)
{
// Retrieve and show the Output window.
OutputWindow outWin = dte.ToolWindows.OutputWindow;

pane = outWin.OutputWindowPanes.Item("Debug");
}
catch
{
pane = outWin.OutputWindowPanes.Add("Debug");
}

pane.OutputString("[timestamp: " + DateTime.Now.ToString() + "]\n");
}

也可以在每行前面添加一个时间戳,但是要困难得多。您无法在“输出”窗口中更改文本(它是只读的),但是您可以清除窗口并添加文本。因此,您可以使用与上面相同的事件处理程序方法来检测文本更改,但是您可以代替复制当前文本,而是将时间戳添加到没有时间戳的任何行上,清除窗口,然后重新添加-带时间戳的文本。一旦输出窗口变大,性能就会出现问题。因此,您可能必须实现一种“惰性标记”,该标记可以清除并在后台插入,以避免在短时间内发出100行调试输出(通常)时杀死您的IDE。 。另外,在清除并重新添加时,如果当前正在输出窗口中选择文本,则您的选择将丢失。

就个人而言,我只会做简​​单的事情并添加时间戳记行,而不是更困难的预挂起方法。由于不滚动就很难看清行尾的内容,因此我可能会确保在时间戳之前有换行符,因此用户将看到每批包含一个或多个输出行,然后是一个时间戳行。

可能有一种方法可以在显示文本之前挂接输出窗口,但是我在VS Extensibility API中找不到任何这样的可扩展性点。

还有一个主意:您总是可以滚动自己的工具窗口,例如“Ivan的调试输出”监听来自实际输出窗口的事件,并将新行(带有时间戳)回显到您自己的工具窗口。这可能是最困难的选择,但是应该完全按照您的要求进行。

关于visual-studio - Visual Studio 2008调试窗口显示时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1687151/

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