1

現在、C# アプリケーションで作成したスレッドで何が起こっているのかを確認しようとしています。スレッドはタイプSystem.Threading.Threadであり、内部オブジェクト内に埋め込まれています (デバッグ中にそのオブジェクト内のスレッドにアクセスできます)。

「 Process Explorer 」を使用して、アプリケーションをチェックしています。
Process Explorer には、「TID」、「CPU」、「Cycles Delta」、「Suspend Count」、および「Start Address」列を含む「Threads」タブがあります。
(デバッガーで) 開始したスレッドを識別するには、TID (スレッド ID) または開始アドレスのいずれかを探すことができると思います。スレッド ID が最も明確であると思われます。

System.Threading.Threadただし、一見したところ、スレッド ID のように見えるクラスにプロパティ/フィールド/属性が表示されません。

System.Threading.ThreadProcess ExplorerのTID列に対応する属性/プロパティ/フィールドを知っている人はいますか?

編集:あるようですが、そうではありManagedThreadIdません。

4

1 に答える 1

2

基本的に、マネージド スレッドネイティブ スレッドではないため、タスク マネージャーで相関関係を探すことは適切ではありません。詳細については、「CLR スレッド化の概要 - マネージド スレッドとネイティブ スレッド」を参照してください。

マネージド コードは、オペレーティング システムによって提供されるネイティブ スレッドとは異なる "マネージド スレッド" で実行されます。ネイティブ スレッドは、物理マシン上でネイティブ コードを実行するスレッドです。マネージ スレッドは、CLR の仮想マシン上で実行される仮想スレッドです。

...

ただし、Visual Studio を使用している場合は、スレッド ウィンドウを使用してマネージド スレッドをデバッグできます。

[スレッド] ウィンドウを使用して Visual Studio デバッガーでスレッドを表示する (C#、Visual Basic、C++)

いくつかの Visual Studio ユーザー インターフェイス要素は、マルチスレッド アプリのデバッグに役立ちます。この記事では、コード エディター ウィンドウ、[デバッグの場所] ツールバー、および [スレッド] ウィンドウのマルチスレッド デバッグ機能について説明します。

チュートリアル: [スレッド] ウィンドウを使用してマルチスレッド アプリをデバッグする (C#、Visual Basic、C++

Visual Studio には、マルチスレッド アプリケーションのデバッグに役立ついくつかのツールとユーザー インターフェイス要素が用意されています。このチュートリアルでは、スレッド マーカー、[並列スタック] ウィンドウ、[並列ウォッチ] ウィンドウ、条件付きブレークポイント、フィルター ブレークポイントの使用方法を示します。このチュートリアルを完了すると、マルチスレッド アプリケーションをデバッグするための Visual Studio の機能に慣れることができます。

于 2021-10-13T09:51:36.100 に答える