1

我目前正在尝试查看我在 C# 应用程序中创建的线程发生了什么。该线程是类型的System.Threading.Thread并且嵌入在内部对象中(并且在调试时我可以访问该对象内部的线程)。

我正在使用“ Process Explorer ”检查应用程序。
Process Explorer 有一个“Threads”选项卡,其中包含“TID”、“CPU”、“Cycles Delta”、“Suspend Count”和“Start Address”列。
为了识别我已经启动的线程(在调试器中),我相信我可以查找 TID(线程 ID)或起始地址,我认为线程 ID 是最清晰的。

但是,乍一看,我在System.Threading.Thread类中看不到任何看起来像线程 ID 的属性/字段/属性。

有人知道System.Threading.Thread与 Process Explorer 的 TID 列对应的属性/属性/字段吗?

编辑:似乎有一个ManagedThreadId,但不是这样。

4

1 回答 1

2

本质上,托管线程不是本机线程,在任务管理器中寻找相关性是不合适的。有关更多信息,请参阅CLR 线程概述 - 托管与本机线程

托管代码在“托管线程”上执行,这与操作系统提供的本机线程不同。本机线程是在物理机上执行本机代码的线程;托管线程是在 CLR 的虚拟机上执行的虚拟线程。

...

但是,如果您使用的是 Visual Studio,则可以使用线程窗口来调试托管线程。

使用“线程”窗口(C#、Visual Basic、C++)在 Visual Studio 调试器中查看线程

Several Visual Studio user interface elements help you debug multithreaded apps. This article introduces multithreaded debugging features in the code editor window, Debug Location toolbar, and Threads window

Walkthrough: Debug a multithreaded app using the Threads window (C#, Visual Basic, C++

Visual Studio provides several tools and user interface elements to help you debug multithreaded applications. This tutorial shows how to use thread markers, the Parallel Stacks window, the Parallel Watch window, conditional breakpoints, and filter breakpoints. Completing this tutorial will familiarize you with Visual Studio features for debugging multithreaded applications.

于 2021-10-13T09:51:36.100 回答