JetBrains Rider 2025.2 Help

调试多线程和异步应用程序

多线程应用程序总是更难调试,因为您需要同时跟踪多个线程。 此外,多线程应用程序会引入新的错误类型和性能问题,例如工作负载分配不均、锁争用、串行执行等。

在调试会话中通过单步操作获得的顺序流程假象在调试多线程应用程序时并没有帮助,反而可能会产生误导。 在调查可能是并发错误的问题时,您应该更多地依赖断点,而不是顺序单步操作。 例如, 条件断点可以在您想专注于某个线程时提供很大帮助:使用线程的一些唯一属性(例如线程 ID)来触发断点; 数据断点会在任何线程更改特定对象的标记属性时中断执行。

使用以下功能调试多线程和异步应用程序:

  • 线程与变量 选项卡的 调试窗口 中,左侧窗格显示应用程序的所有线程,下一窗格列出所选线程的所有堆栈帧:

    JetBrains Rider:在调试窗口中选择线程
  • The Parallel Stacks tab of the 调试 window simplifies threads analysis by showing threads and their stack frames as a diagram.

  • The Tasks tab of the 调试 window helps you get detailed information about the state of System.Threading.Tasks.Task and ValueTask objects in the current execution point of the application .

  • 当前线程的 ID 显示在编辑器中 当前执行点的行内。

冻结和解冻线程

为了控制线程的执行顺序,您可以挂起(冻结)和恢复(解冻)特定线程。 此技术将帮助您调查死锁、竞争条件和其他并发问题。

  1. 调试窗口 的以下视图中找到您想要冻结或解冻的线程:

    • 线程与变量 选项卡中的左侧两列(线程和帧)

    • 并行堆栈选项卡

    • 任务选项卡中的表格或图形视图

  2. 右键单击所需的线程,然后选择 冻结线程冻结其他线程。 已冻结的线程将显示 JetBrains Rider:已冻结线程 图标。

  3. 要解冻,您可以单击一个线程并选择 取消冻结线程 ,或者在相应视图中的任意位置单击并选择 取消冻结所有线程

JetBrains Rider:冻结线程
最后修改日期: 2025年 9月 26日