問題タブ [etw]
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.
.net - 実行時の ETW EventSource 名
実行時に EventSource Name を設定できるかどうかを知りたいです。
異なる EventSource にログを記録したい複数のアプリケーションがあります。これを構成可能にすることができれば、EventViewer のコンポーネントを再利用できます。
EventSourceAttribute に関する追加情報
前もって感謝します。
.net - ETW を使用して例外をログに記録する最良の方法は何ですか?
ETW を使用して例外をログに記録する標準的な方法はありますか?
私が見た限り、これを行う唯一の方法は、例外タイプの厳密に型指定されたパラメーターがないため、メッセージとおそらく内部例外メッセージをログに記録することです。
c# - ETW とセマンティック ログ アプリケーション ブロックを使用したファイル ロック
セマンティック ログ アプリケーション ブロックによって (RollingFlatFileLogs を介して) 消費される ETW EventSource の非常に単純な実装を作成しました。
基本的なセットアップは次のとおりです。
...
これには、基本的なキーワード、タスク、およびオペコードがあります。
ファイルは、次のようなイベントによって書き込まれます。
この方法を使用してサブスクライブします。
ただし、私たちが確認した問題は、一部の開発者が実行を停止するログ ファイルをロックしていることです。「ファイルは使用中のため、書き込みができません」というメッセージが表示されます。
なぜこうなった?ロギングが非同期で実行されているにもかかわらず、プロセスが終了するのはなぜですか?
今後、このようなことが起こらないようにするにはどうすればよいでしょうか。このようなエラーが発生した場合にファイルをロールできるように、ロギングの実装を強化する方法はありますか?
ありがとう!
編集:問題のスタック トレースをキャプチャしました:
.net - 管理チャネルとデバッグ チャネルの両方に例外を送信するにはどうすればよいですか?
質問にあるように、サービスで例外が発生した場合、それを管理チャネルに表示したいので、デバッグ チャネルで表示するために診断をオンにする必要はありません。たとえば、ログがオンになっていない場合、イベントを見逃す可能性があります。ただし、トレースのコンテキストでデバッグ チャネルにエラーが表示されると便利です。これを実現するには、両方のチャネルに表示する必要があります。
ETW でこれを達成する最善の方法は何ですか?
c++ - ランタイム マニフェスト ベースのイベント
マニフェスト ベースのイベントがリソースで定義されているということは、リソースをバイナリで変更しない限り、実行時にパラメーター (レベル、メッセージ、イベント ID など) を生成できないということですか?
c# - Win32Exception をスローする EventProvider コンストラクター 十分なストレージがありません
WCF サービスをある実稼働サーバーから別のサーバーに移動した後、構成が非常に似ていますが、Windows のイベント トレースを介したカスタム イベント ログは機能しなくなりましたが、1 つのアプリに対してのみ機能していました。
エラーは EventProvider クラスの ctor でスローされており、Win32 の「十分なストレージがありません」というエラーです。
WCF サービスは、呼び出し構成ごとの「同時実行モード複数、呼び出しごとのインスタンス コンテキスト モード」スレッドです。監視時に 60 のスレッドがプロセスに属していました。EventProvider ctor は呼び出しごとに呼び出されます。AppFabric でホストされる IIS/WAS です。
同じサーバー上の別のアプリは正常に動作しています。
これを診断する方法がわかりません。誰かが出発点を提案することさえできれば、私は感謝しています.
windows - ETW: 既存のプロバイダーを介してイベントを発行する
ネイティブ プラグインを使用するアプリケーションがあります。これらのプラグインには独自のバイナリ形式があります。各プラグインは、DLL をプロセスの空間にマッピングするのと同様の方法を使用して、実行時にロードされます。つまり、各プラグインには独自の, のようなImageBase
セクションがあり、従来の DLL と同じ方法で処理されます。唯一の違いは、プラグインのバイナリ形式 (ファイルではない) と、プラグインをプロセス空間にマップするローダー コードです。.text
.data
PE
このコマンドラインでトレースを実行すると、ETW が発生することがわかりました。
トレース キャプチャ中にプロセス環境を再構築するために使用できるイベントを発行します。つまり、「プロセスの追加」、「プロセスへのスレッドの追加」、「プロセスへの DLL モジュールの追加」などのイベントを発行し、そのようなツールxperfview
がシステム内のプロセスの状態の仮想環境を構築し、情報を構築できるようにします。現在のプロセスツリーのように。これらのイベントは、たとえば、トレース前またはトレース中に読み込まれる各 DLL に関する情報を提供するImageLoadイベントです。
もちろん、私のプラグインではこれらのImageLoad
イベントは生成されません。これは、技術的には DLL ではないためです (つまり、機能は同じですが、DLL と同じ機能によって読み込まれるわけではありません)。これが、 のようなツールがxperfview
プロセス空間での存在を認識しない理由です。
私がやりたいことは、プラグイン ローダー コードに独自の EventWrite を記述し、ImageLoad
必要な情報を含むこれらのイベントを発行してxperfview
、 および同様のツールがプラグインを通常の DLL として解釈できるようにすることです。ImageBase
、ProcessId
、ImageSize
などの必要な情報を入力します。
MSNT_SystemTrace
これを行うには、イベントの所有者であるイベント プロバイダーを登録しImageLoad
、次のような構造でイベントを構築する必要があることを理解しています。
そしてイベントを発行します。
問題は、このプロバイダーが既に存在するため、論理的なERROR_ACCESS_DENIED
別の を登録しようとしたときに得られることです。MSNT_SystemTrace
しかし、それは私が質問をすることを余儀なくさせます.私がやろうとしていることはETWでサポートされていますか?
c++ - ETW イベントをグローバル "アプリケーション" ログに送信する
Windows イベント ビューアーのグローバルな "アプリケーション" ログに警告とエラーが表示されるように、アプリを有効にしたいと考えています。ETW を起動して実行するのに役立つこちらの指示にうまく従いましたが、トレース プログラムを介してログ記録を明示的に有効にした場合にのみイベントが表示されます。さらに、グローバルではなく、生成された .etl ファイルにのみ表示されますログ。
ユーザーがイベント ビューアーを実行すると、アプリからのイベントが表示されるように、プログラムでイベントを登録してグローバル アプリケーション ログに書き込むにはどうすればよいですか? それは可能ですか?簡単に言えば、必要なフォトショッピングを減らして、下のスクリーンショットのようなものにしたいと考えています。