問題タブ [clrmd]
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.
c# - ランタイムの作成時に ClrMd が例外をスローする
CLR メモリ診断ライブラリを使用して、実行中のプロセスのすべてのスレッドのスタック トレースを取得しています。
ここからこのコードを取得しましたが、他の人にとっては機能しているようですが、指定された行で例外がスローされ、次のメッセージが表示されますThis runtime is not initialized and contains no data.
dacLocation
として設定されていますC:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscordacwks.dll
c# - 別のユーザーのプロセスの ClrMD
イベント ログでハングを報告している .Net アプリケーションがあります。イベントには「アプリケーション ハング」と表示され、使用可能な詳細はありません。
そこで、ClrMD ライブラリを使用する C# コンソール アプリを作成しました。ただし、このアプリケーションは RemoteApp として公開されていることに注意してください。ClrMD をユーザーのプロセスにアタッチしようとすると、次のエラーが表示されます: Microsoft.Diagnostics.Runtime.ClrDiagnosticsException: プロセスにアタッチできませんでした。エラー 0。
管理者としてサーバーにログインしていて、別のユーザーとの独自の RDP セッションにいるため、これは驚くべきことではありません。
そのため、ClrMD アプリを実行すると、そのプロセスにアクセスできると考えて、ログインしているユーザーになりすますことにしました。これにより、別のエラーが発生しました: Microsoft.Diagnostics.Runtime.ClrDiagnosticsException: プロセスに接続できませんでした。エラー 1008。
ここからどこへ行くべきかを知るために 1008 が何を意味するのかについての手がかりが見つからないようです. 私はおそらく不可能なことをしようとしていることに気づきます。
- ClrMD を別のユーザーのプロセスにアタッチした人はいますか?
- そうでない場合、他のユーザーのプロセスにアタッチできるデバッグ ツールはありますか?
- そうでない場合、実稼働環境で ClrMD を使用した人がいますか? ClrMD ダンプをトリガーするタイミングを知るために、アプリがハングしていることをどのように知ることができますか? 別のバックグラウンド スレッドで UI スレッドを監視するだけですか?
c# - ClrMd - ClrInfo TryGetDacLocation およびその他のメソッドがありませんか?
ClrMd ライブラリを試しています: https://github.com/Microsoft/clrmd
そして、私はこの問題を抱えています.最初のチュートリアルによると、 ClrInfoタイプのTryGetDacLocationと呼ばれるメソッドがありますが、その中で見つけることができます.Dacの場所がClrinfo内で自動的に生成されることがわかりますが、runtimeInfo.CreateRuntime();を呼び出し ます。私は得ています:「このプロセスとDACの間のアーキテクチャが一致していません」
ダンプと実行中のプロセスは同じ 32 ビット アーキテクチャです。その関数やその他の関数が表示されません。たとえば、クラスのTryDownloadDac :
何か案は?
windbg - ClrMD の ip2md に相当するものは何ですか?
メモリ内のオブジェクトを反復する方法は知っていますが、 のコマンドClrMD
として何かをしようとしています。正確にはどうすればよいですか?!ip2md
WinDBG/SOS
.net - DumpHeap -live に相当する ClrMD は何ですか?
ClrMDは、ライブ実行可能ファイルまたはメモリ ダンプを検査するための優れたツールです。すべてのマネージド ヒープ オブジェクトをサマリーとしてダンプするには、使用できます
https://blogs.msdn.microsoft.com/dotnet/2013/05/01/net-crash-dump-and-live-process-inspection/
これはうまく機能し、SOS 拡張機能を使用した Windbg の! DumpHeap -statと同等です。回帰テストでは、テスト後にオブジェクトがリークされたかどうかを確認することが望ましい場合がよくあります。これは上記のコードに完全に適合しているように見えますが、残念ながら、ルート化されていないオブジェクトが存在する可能性があるため、誤検知が発生しますが、それらはまだ概要に報告されています。それは報告されたリークにつながる可能性がありますが、何もありません.
SOSは、 -liveスイッチを!DumpHeapに追加することで、この問題を軽減しました。ライブオブジェクトのみを取得するための同等のClrMDコードは何でしょうか?回帰テストは本当の理由でのみ失敗しますか?
ClrType.EnumerateRefsOfObjectCarefullyを使用して、ルート オブジェクト ( ClrHeap.EnumerateRoots ) が見つかるまでスタックを再帰的に移動する必要があると思いますが、そのアプローチでは、再帰的なオブジェクト グラフを追跡するために多くの一時的なハッシュセットが必要です。これがそれを行う唯一の方法ですか、それとも MS 内のどこかに既に適切でパフォーマンスの良いサンプルが利用可能です ( PerfViewソース?)。