【问题标题】:During debug, step into background worker/thread. Possible?在调试期间,进入后台工作/线程。可能的?
【发布时间】:2014-04-25 07:19:54
【问题描述】:

出于好奇。我想知道在调试期间是否可以进入(F11) 后台工作人员。它通常只是跳到下一行代码。是否需要更改 VS 设置?这就是它的本意吗?

任何澄清将不胜感激。谢谢。

【问题讨论】:

  • 这样做应该没有问题 - 只需在线程函数中放置一个断点并单步执行即可。在断点处,所有线程都被暂停。 See here for more info.
  • @RogerRowland 是的,这就是我通常所做的。我只是想知道为什么它从来没有像普通功能那样进入内部。
  • Debug/Windows/Threads 为您提供了正在运行的线程列表。双击一个例如当程序在断点处暂停时,您会看到线程停止的位置。参照。 msdn.microsoft.com/en-us/library/w15yf86f.aspx。正如 Roger 所说,从那里调试的行为非常正常。
  • @PeterSchneider 介意添加您的评论作为答案吗? :)
  • Rik 打败了我 :-)。他还建议在 BG worker 代码中设置断点,这是停止在那里的关键。

标签: c# multithreading visual-studio debugging step-into


【解决方案1】:

正如评论所说,您只需为后台任务中的第一行代码设置一个断点。 (或:Debugger.Break()。)

另外,我建议你看一下Debug > Windows > Threads 窗口,它在多线程调试情况下非常有用。

【讨论】:

  • 我也会推荐并行观察窗口。
【解决方案2】:

调试开始后,打开 Sebestyén 回答中提到的线程窗口。启动所需线程时,请留意线程窗口中出现的新行的“位置”列。获得所需线程的名称后,右键单击它并选择“切换到线程”。 这解决了当我尝试调试特定线程时,调试器光标一直转到代码的其他点(我想是其他线程正在运行)的问题。

【讨论】:

    【解决方案3】:

    它通常只是跳到下一行代码。

    这是因为 BackgroundWorker 正在另一个线程上执行,必须先创建和启动该线程,这需要一些时间。如果你继续踩,你会在某个时候进入工人,但不知道确切的时间。

    如果你想调试它,只需在工作代码的开头放置一个断点。

    【讨论】:

      【解决方案4】:

      来自Haggisatonal回答

      禁用VS托管进程(项目->属性->调试->启用Visual Studio托管进程)

      链接

      Visual Studio 2015 Debug doesn't work in multithread application

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多