問題タブ [system.diagnostics]
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 - System.Process を使用して .NET アセンブリがバックグラウンド プロセスとして作成されない
System.Diagnostic.Process
APIを使用してバックグラウンド プロセスを起動しようとしています。すべてのネイティブ プロセスおよび Windows フォーム ベース プロセス (notepad.exe など) をすべて起動しますが、純粋に管理された GUI を使用しないアセンブリを起動することはできません。タスク マネージャーは、そのリストに個別のプロセスとしてリストされているアセンブリを表示せず、例外もエラー コードも発生しません。
Process.Start
タスク マネージャーに表示される純粋なマネージド アセンブリを使用して、バックグラウンド プロセスをオンデマンドで起動する他の方法はありますか?
.net - System.Diagnostics.Debug 名前空間 vs 他のログ ソリューション (log4net、MS Enterprise Library など)
現在、.net プロジェクトのさまざまなロギングの可能性を調査していますが、System.Diagnostics.Debug/Trace 機能と、log4net、MS Enterprise Library、NLog などのサード パーティ製ライブラリのどちらを使用するかを決めることができません
。 :
- System.Diagnostics は、すべてのリスナー、フィルター、ソースなどを明示的に構成する必要があるため、構成と使用がかなり困難です。DB への一括挿入も欠けているようです (それぞれに 100,000 個のログ エントリを書き込むことを考えてください)。独自の挿入、恐ろしいですね)。しかし、ロギングのような「初歩的な」ことのために追加のライブラリを使用しないことが「クール」であると考える人もいます (もちろん、ある時点で、プロジェクトが依存するサードパーティ ライブラリの量を減らすことは理にかなっています。今回は違うと思いますが)
- サードパーティははるかに強力で、多くの場合、より高速で使いやすいですが、構成が面倒な場合もあり、これらのライブラリの信頼性が低いこともよくあります (EntLib によるログの突然の突然の停止など)。
- Common.Logging はどうですか? 試してみる価値はありますか (私が聞いたように、さまざまなログ フレームワークのプラグインを提供し、アプリと目的のライブラリの間のインターフェイスのように機能するため)。
誰かが私を正しい方向に向けたり、上記の比較を修正 (または何かを追加) したりできれば、本当に感謝しています! サードパーティを使用することをお勧めする場合は、特定のものにアドバイスすることができます (私たちのアプリケーションでは、UDP、ローリング ファイルなどの特別なものはほとんど必要ないことを考慮してください。プレーン ファイル、電子メール、DB、およびイベントログ)?
前もって感謝します!
memory-leaks - System.Diagnostics.PerformanceCounterによって引き起こされるメモリリークを解決する方法
概要
パラメータとして使用するプロセスモニタコマンドラインアプリケーションを作成しました。
- プロセス名またはプロセスID
- CPUしきい値のパーセント。
プログラムが行うことは、渡された名前またはpidを持つすべてのプロセスを監視し、それらのCPU使用率がしきい値%を超えると、それらを強制終了します。
私には2つのクラスがあります:
ProcessMonitor
とProcessMonitorList
前者はラップアラウンドSystem.Diagnostics.PerformanceCounter
後者は前者IEnumarable
のリストのような構造を可能にするものです。
問題
プログラム自体は正常に動作しますが、タスクマネージャーでメモリ使用量を見ると、1秒あたり約20kBの増分で増加します。注:プログラムは、CPUカウンターをPerformanceCounter
1秒ごとにポーリングします。
このプログラムは、頻繁に使用されるサーバーで実行する必要があり、監視しているプロセスは多数あります。(20-30)。
これまでの調査
PerfMonを使用して、プロセスのプライベートバイトとすべてのヒープの合計バイト数を監視しました。以下で参照する記事に示されているロジックによると、結果は、変動している間、値が許容範囲内に制限されていることを示しています。したがって、メモリリークはありません:
記事
また、FxCopを使用してコードを分析しましたが、関連するものは何も見つかりませんでした。
プロットが厚くなる
「ああ、メモリリークはありません」と言うだけでは気が進まないので、さらに調査したところ、次のコード行がリークが発生している場所を示しており、矢印が正確な行を示していることがわかりました。
上記は_pcが開始される場所であり、私のProcessMonitor
クラスのコンストラクターにあります。
以下は、メモリリークの原因となっている方法です。このメソッドは私のメインから毎秒呼び出されています。
NextValue()
これは、System.Diagnostics.PerformanceCounterクラス内にあるメソッド内にリークが存在することを示しています。
私の質問:
- これは既知の問題ですか、どうすれば回避できますか?
- タスクマネージャーのメモリ使用量が増加しているという私の仮定は、実際にメモリリークが正しいことを意味しますか?
- 特定のプロセスの複数のインスタンスを監視し、特定のしきい値のCPU使用率を超えた場合にそれらをシャットダウンしてから、電子メールを送信するためのより良い方法はありますか?
silverlight - System.Diagnostics Silverlight プロジェクト VS 2010 でプロセス クラスが見つからないのはなぜですか?
process.getprocesses() を使用したいのですが、私の診断クラスにはないようです。
wcf - WCF 監査/ログ
WCF サービスで否認防止を提供する必要があり、すべての着信 SOAP 要求を、署名/セキュリティ データとすべてのエンベロープを含む SQL サーバー DB に格納したいと考えています。
このようにして、問題が発生したときに、クライアントに「こんにちは、これはあなたの署名付きメッセージです」とあなたが書いたとおりに伝えることができます。これを行うには、SOAP エンベロープ XML と永続化されたビジネス オブジェクト/トランザクションとの間の関係を保存する必要があります。
例:これは、顧客 ID=4567を顧客データブルに追加するために使用されるSOAP エンベロープです。
SOAP エンベロープとアプリによって実行されるビジネス トランザクションとの間のリンクを確立する必要があります。ログに記録されたメッセージの @@identity を保存することが解決策になる可能性があります。でも、どこに置くの?SOAP 本体で? 記憶にとどめますか?
WCF でのログ記録について読んで、テキスト ファイルではなくログ情報をテーブルに挿入するデータベース ロガーを作成しましたが、このデータを、WCF サービスの方法。これが正しいアプローチかどうかさえわかりません!
パターン/ヒント/ヒント/ツール/ヘルプをいただければ幸いです。ありがとう。
c# - PerformanceCounterを使用して、プロセスごとのメモリとCPU使用率を追跡しますか?
System.Diagnostics.PerformanceCounterを使用して、プロセスのメモリとCPU使用率を追跡するにはどうすればよいですか?
c# - 「優雅に」プロセスを強制終了する
現在、 Process.Kill() を使用してプロセスを強制終了しています。ただし、すぐに強制終了するのではなく、プロセスを閉じるように指示するメッセージをプロセスに送信して、正常にクリーンアップしてシャットダウンできるようにする方法はありますか。基本的に、右上隅にある赤い X をクリックするのと同等のものを探しています。これは、アプリケーションにシャットダウンを要求するメッセージを送信すると信じています。
c# - System.Diagnostics.Trace.TraceListenerASP.NETからのUnsafeStringCopy例外
ASP.NETアプリケーションで使用されるアセンブリからDiagnostics.Traceメッセージを書き込もうとすると、奇妙な断続的なエラーが発生します。IIS7では.NET3.5です。
コード設定では、web.configでデバッグが指定されている場合、のインスタンスをに追加しHttpResponseTraceListener
ますSystem.Diagnostics.Trace.Listeners
。私はそれをそのように行っているので、他のアセンブリでは、VisualStudioを使用してデバッグするように設定されていないテストサーバーで実行しているときにデバッグ情報を書き出すことができます。したがって、他のアセンブリでは、System.Diagnostics.Trace.WriteLine
情報を出力するために使用します。情報は、応答ストリームにも書き込まれます(インラインですが、私の目的では問題ありません)。
エラーは次のとおりです。
オブジェクト参照がオブジェクト インスタンスに設定されていません。
関連するスタック情報は次のとおりです。
System.Web.Util.StringUtil.memcpyimpl(Byte * src、Byte * dest、Int32 len)at System.Web.Util.StringUtil.UnsafeStringCopy(String src、Int32 srcIndex、Char [] dest、Int32 destIndex、Int32 len) System.Web.HttpWriter.Write(String s)at System.Web.HttpResponse.Write(String s)at SSO.HttpResponseTraceListener.Write(String message)in HttpResponseTraceListener.cs:line 23 at SSO.HttpResponseTraceListener.WriteLine(String message )System.Diagnostics.TraceInternal.WriteLine(String message)のHttpResponseTraceListener.cs:line30にあります
TraceListenerクラスは次のとおりです。
c# - System.Diagnostics.Process.Startを使用してプログラムを実行すると、MissingMethodExceptionが発生します
Compact Framework 2.0プロジェクトに取り組んでおり、Process.Startを使用して別のプログラム「A」内からプログラム「B」を起動しようとしています。私はこれを数回行ったことがありますが、今回はいくつかの奇妙な問題に遭遇しています。
プログラム「B」は起動しますが、MissingMethodExceptionが発生し、基本的に、参照している特定のアセンブリが欠落していることを通知します。問題は、アセンブリ.dllがプログラム「B」と同じフォルダにあることです。プログラム「B」をダブルクリックすると、MissingMethodExceptionなしで正しく実行されます。この問題が発生するのは、プログラム「A」でProcess.Startを使用して起動した場合のみです。ここで何が起こっているのか全くわかりません。運が悪かったので、WorkingDirectoryプロパティを設定してみました。Process.Startを介して実行したときに、プログラムが参照をロードできない理由に関するアイデアはありますか?ありがとう
編集私はちょうど何かを考えました...プログラム「A」とプログラム「B」の両方がプログラム「B」がロードしていない.dllを使用しています。2つのプログラムが同じ.dllを同時にロードできない場合は、それが問題です。これは本当ですか?
.net - System.Diagnostics.Processが32ビットか64ビットかを判断する方法は?
私は試した:
しかし、x64プロセスの例外が発生しました。
Win32Exception:ReadProcessMemoryまたはWriteProcessMemoryリクエストの一部のみが終了しました