問題タブ [vsperfmon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-studio - Visual Studio プロファイラーを開始できません
私はVS 2010 Ultimateを持っています。空の win32 コンソール ソリューションを作成し、その cpp ファイルをhttp://pastebin.com/EQJKJK6Tに置き換えました。CPU サンプリング プロファイリングを実行しようとしました。しかし、何らかの理由で次のメッセージが表示されます
メッセージボックス:
「exeファイルへのパス」を起動できませんでした。アプリケーションをプロファイリングする前回の試みは失敗に終わりました。アプリケーションを再起動してください。
出力ウィンドウ:
visual-studio-2010 - dllhost.exeにアタッチしてvsperfmonを使用してプロファイルできないのはなぜですか?
COMを使用してVB.NETの別のプロジェクトと通信するネイティブC++プロジェクトがあります。ネイティブdllを参照する別のexeにプロジェクトをアタッチすることで、過去にネイティブプロジェクトのプロファイルを作成することができました。dllhost.exeに接続して、ネイティブプロジェクトのプロファイルを作成しようとしています。dllhostを介してデバッグできるため、この構成は機能しますが、コードをプロファイリングしようとすると(または、デバッグ中にプロファイラーをdllhostにアタッチすると)、プロファイラーが停止し、次の出力が得られます。
別の構成を使用して結果を取得できるため、プロファイラーが機能することはわかっています。また、デバッグ構成が機能することも知っています。何が悪いのかについて何か考えはありますか?
c++ - vsperfmon が、呼び出された関数の包括的な時間がルート関数よりも長くかかっていることを通知するのはなぜですか?
そこで、VS 2010 で vsperfreport/vsperfcmd コマンド ライン ツールを使用して vsperfmon を試してみました。プロファイリングを行うための非常に単純なプログラムを作成し、これらのツールが出力する数値を理解しようとしました。
ここで説明する手順をコマンド ラインで実行して、実行可能ファイルのプロファイルを作成します。上記は perfPlay.exe にコンパイルされ、次の手順を実行します。
これが私が理解できない奇妙なことです。DoStuff の包括的経過時間は、関数と呼び出し元/呼び出し先レポートの両方で、sin() の包括的時間よりも短くなっています: DoStuff() の呼び出し元/呼び出し先レポートは次のとおりです。THUNK:sin とルート関数の包括的経過時間に注目してください。
包括的経過時間は、呼び出した関数を含む関数内のコードを実行するのにかかった時間として定義されます。その定義によれば、DoStuff の包括時間は常に > 罪の包括時間でなければなりません。上記の差は比較的小さいですが、しばらく放置すると大きくなります。この違いは、デバッグ モードとリリース モードの両方に存在します。
罪の包含時間がより高いのはなぜですか? ルートエントリの時間の一部を表していると思います。何が起こっているのか、あるいは一見奇妙なことをしている場合、このツールを信頼できるかどうかさえよくわかりません. 私は、私にとって物事をより明確にする何かが欠けているだけだと思います。
c++ - VSPerf VS2010 およびその他のプロファイリング ツールが pdb を検出しない
VSPerfCmd (VS2010 プロファイラー) および Intel VTune Amplifier XE 2013 を使用してプロファイリングしようとしています: .vsp ファイルの VsPerfCmd について、いくつかの結果が利用可能です。ただし、profier は pdb を取得していません。アプリケーションの一部のコードは使用できません。
これはすでにあなたに起こっていますか?完全なプロファイルを取得するために、いくつかのコンパイラ オプションをオンにする必要があるかどうか知っていますか?
プロファイラーはどのディレクトリで .pdb 情報を見つけますか?
ありがとう
visual-studio - Powershell を使用して VSPerfCmd.exe を自動化する (Visual Studio パフォーマンス プロファイリング)
この質問は、私の側でのより大きな取り組みのトラブルシューティングを試みるものであるため、以下の投稿に重要な背景と調査履歴を含めました. そのため、投稿を「背景」、「これまでの調査」、「問題」の 3 つのセクションに分けました。自分でさらに調査を行ったので、調査結果を拡大するために「追加の調査」セクションも追加しました。これにより、最終的に私は自分で問題を解決するようになり、同じことをしようとする開発者のためのガイドとして元の投稿を含めました. この問題は、最終的に v1 以降の Powershell バージョンで VSPerfCmd.exe が持つ制御の問題の復帰でした。
- バックグラウンド
TFS ビルド (開発 Web サーバー DEV への自動展開を含む) の一環として、コードのパフォーマンス テストを開始して実行し、新しい変更が API の速度に悪影響を与える時期を確認したいと考えています。そのために、テスト ランナー (SoapUI) と VS チーム ツールを DEV にインストールし、DEV でローカルに実行すると必要なレポートを生成するPowershell スクリプトを作成しました。ただし、そのスクリプトをトリガーして、他の場所から機能させることはまだできていません。つまり、サーバーにログオンし、.ps1 ファイルを見つけて Powershell で実行するだけで機能するということです。これがそのスクリプトです:
私が言ったように、DEV で自分で手動で実行すると、上記は正常に動作しますが、トリガーしようとしましたが、正しく動作しません。
- これまでの調査
上記はスクリプトをトリガーするようですが、奇妙な問題に遭遇しました。まず、スクリプトを実行するマシン (テスト用のマシン、自動展開用の TFS ビルド サーバー) でスクリプトが呼び出されますが、期待どおりに DEV では呼び出されません。これはおそらく私のPowerShellの誤解であり、十分に簡単な修正です-スクリプトをテストしているネットワークマシン(自分自身またはTFSビルドサーバーのいずれか)にコピーしない限り、powershellはディレクトリが見つからないというエラーを単にバーフしますスクリプトを実行する前に。第二に、トリガーしようとしているマシンにスクリプトが配置されていても(スクリプトを見つけて実行を開始します)、「トレースを開始しています...」という出力にしか到達しません。 vsperfcmd に関する情報。
そこにハングアップし、ブレークアウトする必要があるため、呼び出しが完全に実行されていないと思います。かなりの時間実行したままにしました (20 分以上、ローカルではこのポイントを通過するのに数秒かかります) が、このポイントを超えて継続したことはありません。その場所でスクリプトの出力をローカルで実行すると、次のようになります。
- 問題
これにより、問題の行は
実際、この仮説をテストするためにはるかに短縮されたスクリプトを実行すると、そのコマンドを実行した後に制御がシェルに返されないことを確認できました。以下は、これとその出力を確認するために実行したスクリプトです。
そのコマンドの後、何も出力されません。しばらくの間、これはアプリケーションまたは DEV サーバーに問題があり、vsperfcmd に適切にアクセスできないことを意味しているのではないかと考えていましたが、DEV タスク マネージャーを確認したところ、VSPerfMon.exe がプロセス リストに表示されることがわかりました。コマンドを実行し、ctrl + ブレークアウトすると停止します。したがって、コマンドは機能しているように見えますが、少なくとも部分的には、スクリプトの次の部分を実行できるように制御を返さないだけです。
それで、私の質問は、どうすればこれを機能させることができますか? プロファイル モニタを開始するコマンドを実行した後、コントロールが返らないのはなぜですか? また、TFS からビルドを自動展開した後にパフォーマンス プロファイリングを行うには、これが最善の方法ですか? (更新については以下を参照してください)
- 追加調査
投稿以来、私はこれを自分で調査し続け、いくつかの興味深いことを学びました. 最初に、DEV サーバー上の PowerShell のバージョンが古かったので (これは認識していませんでした)、バージョン 3 に更新したことに注意してください。PowerShell ISE の powershellV3 でスクリプトをローカルで実行しようとすると、スクリプトをリモートで実行しようとしたときとまったく同じようにハングしていることに気付きました。右クリックコマンド「powershellで実行」を介してスクリプトを実行した場合にのみ、powershellV1を呼び出すスクリプトが機能します。異なるバージョンの powershell がスクリプトを処理する方法には明確な違いがあるようです。
改訂された質問: スクリプトが powershellV1 では機能するのに V3 では機能しないのはなぜですか? \start:trace の後に V3 がハングするのに、V1 がハングしないのはなぜですか? PowerShell セッションが V2 まで導入されなかった場合、V1 を使用してスクリプトを実行するためのネットワーク実行を取得するにはどうすればよいですか?
visual-studio - エラー VSP1737: 共有違反のため、ファイルを開くことができませんでした
Team Foundation Server (TFS) でパフォーマンスおよび診断セッションを実行すると、Visual Studio 2013 Ultimate で以下のエラーが発生します。以下、再現手順です。
- Team Foundation Server から最新のものを取得します。
- 「CPU Sampling」方式の新しい Performance Session を作成します。
- 新しく作成されたパフォーマンス セッションを起動します。
- Internet Explorer を閉じるか、[プロファイリングの停止] をクリックしてセッションを終了した後。
次に、出力ウィンドウに以下のエラーが表示されます。
このエラーを取り除くには、TFS が設定したソリューション フォルダーの読み取り専用属性をクリアする必要があります。読み取り専用属性をクリアすると、TFS は TFS サーバーでローカル ワークスペースの変更を検出できません。次に、TFS の比較オプションを使用して手動で変更を確認し、マージする必要があります。
このエラーが表示されるのはなぜですか? 私はそれを正しい方法でやっていますか?
testing - テスト ソリューション以外のプログラムからコード カバレッジ データを収集するにはどうすればよいですか?
自動テスト用のコード カバレッジ データを収集しようとしています。ただし、構築したテスト フレームワークは製品と同じソリューションの一部ではなく、テストは製品のコードを直接参照していません。
このため、vstest でコード カバレッジをオンにするだけでは、製品で実行されたコードを確認するのに十分ではないことが懸念されます。
コード カバレッジ データに個別の実行可能ファイルを含めるにはどうすればよいですか?
私が現在追求しようとしている道:
- 製品の .pdb ファイルへのパスを .runsettings ファイルに含めると、魔法のように機能します
- vsperfmon などのコード カバレッジを収集する別のツールを使用して、テスト実行中に製品のコード カバレッジ データを収集します。
vsperfmon - Visual Studio 2019 で vsperf.exe が見つからない
Visual Studio 2017 までは、vsperf.exe があります。
Visual Studio 2019 から、Visual Studio 2019 インストーラーで「C++ プロファイリング ツール」のチェック ボックスをオンにしても (下の「1」)、vsperf.exe がありません。
vsperf.exe は非推奨ですか? もしそうなら、代替手段は何ですか?
Visual Studio 2019 のインストール ディレクトリには、vsperfmon.exe、vsperfcmd.exe、vsperfsrv.exe、vsperfreport.exe、vsinstr.exe など、いくつかの vsperf*.exe ファイルがあります。これらの実行可能ファイルは何ですか?