出于好奇。我想知道在调试期间是否可以进入(F11)作为后台工作进程。它通常只是跳到下一行代码。是否需要更改VS设置?这是它的本意吗?如有任何澄清,将不胜感激。谢谢
(F11)
eimct9ow1#
正如注解所说,您只需为后台任务中的第一行代码设置一个断点。(或:Debugger.Break()。)另外,我建议你去看看Debug > Windows > Threads窗口,它在多线程调试的情况下非常有用。
Debugger.Break()
Debug > Windows > Threads
ccgok5k52#
它通常只是跳到下一行代码。这是因为BackgroundWorker是在另一个线程上执行的,必须首先创建和启动该线程,这需要一些时间。如果您继续单步执行,您将在某个时刻进入工作线程,但无法确定确切的时间。如果您想调试辅助代码,只需在它的开始处放置一个断点。
vawmfj5a3#
一旦调试开始,打开Sebestyén回答中提到的线程窗口。启动所需的线程后,请注意“线程”窗口中出现的新行的“位置”列。一旦它有你想要的线程的名称,右键单击它并选择“切换到线程”。这解决了当我试图调试特定线程时,调试器光标不断移动到代码的其他点(我想是其他线程正在运行)的问题。
w8rqjzmb4#
来自Haggisatonal答案在Visual Studio 2015 Debug doesn't work in multithread application禁用VS托管进程(项目-〉属性-〉调试-〉启用Visual Studio托管进程)
4条答案
按热度按时间eimct9ow1#
正如注解所说,您只需为后台任务中的第一行代码设置一个断点。(或:
Debugger.Break()
。)另外,我建议你去看看
Debug > Windows > Threads
窗口,它在多线程调试的情况下非常有用。ccgok5k52#
它通常只是跳到下一行代码。
这是因为BackgroundWorker是在另一个线程上执行的,必须首先创建和启动该线程,这需要一些时间。如果您继续单步执行,您将在某个时刻进入工作线程,但无法确定确切的时间。
如果您想调试辅助代码,只需在它的开始处放置一个断点。
vawmfj5a3#
一旦调试开始,打开Sebestyén回答中提到的线程窗口。启动所需的线程后,请注意“线程”窗口中出现的新行的“位置”列。一旦它有你想要的线程的名称,右键单击它并选择“切换到线程”。这解决了当我试图调试特定线程时,调试器光标不断移动到代码的其他点(我想是其他线程正在运行)的问题。
w8rqjzmb4#
来自Haggisatonal答案在Visual Studio 2015 Debug doesn't work in multithread application
禁用VS托管进程(项目-〉属性-〉调试-〉启用Visual Studio托管进程)