1

Visual Studio 2012 からデバッグ モードでアプリケーションを実行しています。

どのコードがリアルタイムで実行されるかを確認したいと思います。これは、実行するのと同じです。

Console.WriteLine(" command.do ... etc. "); 

一行ごとに

どのコードが実行されるかをリアルタイムで確認することはできますか?

4

3 に答える 3

2

はいといいえ。

はい、技術的には実現可能です。

いいえ、それを行うためのツールは見つかりません (もちろん、存在しないものについて 100% 確実なことは言えません)。


これは、.NET フレームワークによって提供されるプロファイリング API を使用して行うことができます。一部のプロファイラーは、行ごとのトレースを宣伝していますが、これは、パフォーマンス ヒットを下げるためにいくつかのショートカットを使用する代わりに、すべての行でタイミングを測定することを意味するだけです。

ただし、最短の道を無理やり進むのではなく、最終的に達成したいことを説明するようにしてください。

于 2012-10-08T20:10:29.380 に答える
0

JetBrains のようなツールを検討することをお勧めします。10 日間の無料試用版があり、Visual Studio に非常にうまく統合されています。

http://www.jetbrains.com/profiler/

これは、あなたが求めていることを正確に行うものではありません。しかし、私はこれ以上良いものを思いつきません。

于 2012-10-08T22:13:29.883 に答える
0

リアルタイムでデバッグする場合、プログラムを遅らせるべきではありません。これは、安価ではないロジック アナライザーなどの外部ハードウェアを使用して実行できます。

すべての行の実行をトレースする代わりに、いくつかの重要な行の実行をトレースする方がよいでしょう。そのトレースは非常に高速でなければなりません。Visual Studio のトレースは遅すぎて、Trace を呼び出す 2 番目のスレッドをブロックします。これは、リアルタイム デバッグでは大きな問題です。

幸いなことに、独自のメモリ トレースを簡単に作成できます。これは、マイクロ秒の遅延のみを引き起こし、非ブロッキングです。

const int maxMessages = 0x100;
const int indexMask = maxMessages-1;
string[] messages = new string[maxMessages];
int messagesIndex = -1;

public void Trace(string message) {
  int thisIndex = Interlocked.Increment(ref messagesIndex) & indexMask;
  messages[thisIndex] = message;
}

スレッドとタイミングの情報も収集し、トレースを適切に出力するこのアプローチの詳細については、CodeProject: Debugging multithreaded code in real time 1を参照してください。

于 2016-06-17T16:10:02.387 に答える