使用 Visual Studio 2010 调试后台线程时,有没有什么好的方法可以让其他线程运行几百毫秒左右,而无需推进位于断点处的线程?等效于在当前行之前插入“Threading.Thread.Sleep(100)”,在那里设置下一条语句,然后点击恢复(但不破解正在调试的代码)?我的数据包记录/显示代码并不像它应有的那样有用,因为调试器通常会在我的代码对数据包起作用的时间和 UI 设法显示它的时间之间遇到断点。
我知道可以进入“线程”窗口,卡住到达断点的线程,点击运行,点击暂停,然后解冻到达断点的线程,但这真的很笨拙。有没有更顺畅的做事方式?
(编辑)我想知道为什么没有回应?我不敢相信我是唯一一个试图调试非 UI 线程的人。
最佳答案
我会使用 宏在 Visual Studio 中完成操作,例如您概述的操作。
在正确的时间点记录宏( Tools
、 Macros
、 Record TemporaryMacro
)然后保存它应该是一件简单的事情。
您可以随时添加图标/键盘快捷键以在以后再次运行宏。
或者甚至调整宏的源代码以确保它完全按照您的需要执行您的操作。
编辑 #1:作为提示,我认为代码看起来有点像这样(未测试):
Dim t As Thread
t = DTE.Debugger.CurrentThread
t.Freeze()
DTE.Debugger.Go(False)
Beep()
Threading.Thread.Sleep(5000)
Beep()
DTE.Debugger.Break(True)
DTE.Debugger.CurrentThread = t;
t.Thaw()
编辑 #2:
你可能想引用这个:EnvDTE.Debugger
标准进口供您引用:
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics
关于visual-studio-2010 - 当非 UI 线程在调试器中停止时,有什么方法可以短暂运行 UI 线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4100328/