gpt4 book ai didi

c# - C# 和 vs2008 中的线程调试

转载 作者:太空狗 更新时间:2023-10-29 22:35:24 25 4
gpt4 key购买 nike

我有一个非常严重的多线程调试问题。我在与串行设备交互时遇到某种计时问题,我需要对其进行追踪。我有三个线程:

  1. UI 更新的主线程。用户可以更改设备的一个参数,也可以通过选择预设来一次更改多个参数。
  2. 状态检查线程查询以确保设备仍然连接。如果用户关闭设备或以有趣的方式与设备本身进行交互,则状态更改需要反射(reflect)在用户界面中。
  3. 读取设备响应的串口的线程。

我的问题实际上与调试这种情况有关。似乎我在每个线程中的每一行都必须有一个断点才能进行调试;如果我中断一个线程,调试器将不会逐步执行该线程。我知道其他线程将继续更新,但我正在执行的线程不应该在调试器中正常执行,即从一行转到下一行吗?然后,我可以使用“线程”选项卡在线程之间切换。

我提到我在 WPF 中,因为我不知道这是否会完全改变这种情况;也许会,也许不会。状态检查线程是 UI 控件的一部分,因为只有在 UI 启动时才需要检查状态。该控件位于与主应用程序不同的库中。

最佳答案

当调试器在断点处停止时,默认情况下它将挂起所有其他线程。但是当您单步执行或继续时,所有 3 个线程都会恢复。当您逐步执行代码时,调试器基本上会在下一行设置一个临时断点并恢复所有线程。其他 2 个可能有机会在虚拟断点被击中之前运行。

您可以在调试时卡住其他线程

当您处于断点处时,选择Debug | window |线程。选择您不感兴趣的主题并右击,选择卡住。这会让您专注于您正在单步执行的一个线程。

关于c# - C# 和 vs2008 中的线程调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1014324/

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