問題タブ [memory-dump]

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.

0 投票する
3 に答える
8215 参照

delphi - Delphi DLLファイルからダンプファイルを分析する方法は?

私は、C#とDelphi2006の両方のコードを使用する製品のエスカレーションエンジニアです。

ほとんどの場合、C#の問題はWinDbgでデバッグされ、Delphi2006の問題はEurekaLogでデバッグされます。

しかし、問題がDelphiのメモリ使用量である場合、EurekaLogは問題を修正するのに十分な情報を提供しません。デバッグのために私が持っているのは、フルメモリダンプファイルだけです。

.mapシンボルファイルはファイルでありファイルではないため、WinDbgにロードできません(または方法がわかりません).pdb

だから私の質問は:

  • WinDbgの.mapファイルからシンボルをロードするにはどうすればよいですか?(またはその他に変換.map.pdbます。)

  • Delphiアプリケーションのダンプファイルを分析するツールはありますか?

0 投票する
2 に答える
1923 参照

windows-server-2008 - Windows 2008 64ビットサーバーでメモリをダンプする方法は?

ASP.NET アプリケーションのメモリ リークを分析したいのですが、Windows 2008 64 ビット サーバーでメモリをダンプするにはどうすればよいですか?

0 投票する
3 に答える
340 参照

php - PHP 4から5への移行中のメモリリーク-ヒントはありますか?

大規模なWebアプリケーションを共有Webホスティング環境に移植しています。アプリはPHP4で作成されました。新しい環境にはPHP5.2があります。

何らかの理由で、PHP 5.2で実行しているときに、アプリケーションが大量のメモリをリークしています。私は、memory_get_usage()を使用して、メモリ使用量が64 MBの制限に達するまで文字通り監視できます(共有環境では非常に寛大で、サイトはPHP4で12または16MBで実行されていました)。

これは、PHP 5で変更されたものの副作用であると思われます。おそらく、引数でのオブジェクト参照の処理です。ただし、アプリケーションが非常に複雑で、部分的に十分に記述されていないため、リークの原因となる特定の動作を検索することは非常に困難です(はい、それは私のものです)。

アプリは共有ウェブスペースにインストールされているため、従来のデバッグ機能を使用できません(私が知る限り)。私は文字通り一日中プロジェクトに取り組んでいるので、ローカルで環境を再現することは避けたいと思います。

だから私の質問は:

  • 特に大量のオブジェクトを処理する場合、典型的なPHP4 => 5の移行の落とし穴を知っている人はいますか?それが私のリークの原因である可能性があります

  • PHPで使用される変数用の、デバッガーに依存しない、スクリプトのみの「グラフィカルスコープダンプ」ツールを知っている人はいますか。これは、これらの膨大な量のメモリを消費している変数を見つけるのに役立ちます。

0 投票する
1 に答える
15459 参照

web-applications - カスタム エラー モジュールはこのエラーを認識しません

Outlook Web Access で[カスタム エラー モジュールはこのエラーを認識しません] をクリックした場合、Firefox を使用しています。セッションがタイムアウトした可能性があります。あなたはちょうど大きなメールを書きました!!! 戻ると、すべてのフォーム フィールドが空白になります。

postdata をダンプしようとする代わりに、https で Wireshark を使用するか、その他のばかげたことを使用します。Firefox で新しいタブまたはウィンドウを開き、その新しいタブ/ウィンドウで OWA サイトに移動して再ログインします。送信に失敗したタブ/ウィンドウに戻り、メッセージ本文領域で右クリック -> このフレーム... -> このフレームを再ロード -> フォームを再送信! メールは正常に送信されます。

このトリックがあなたに合わない場合は、Lazarus (Firefox アドオン) を検討することをお勧めします。テキスト エディタを使用してメール レターを保存することを忘れないでください。または、少なくとも「Ctrl + C」でメッセージ本文をコピーしてから送信してください。これが、Google の検索結果を見てメッセージを取り戻す方法を知りたいと考えている方の助けになれば幸いです。

さて、私の質問は、この同じ状況で他に何ができるでしょうか? 貴重なフォーム データがメモリ内にあり、使用していた https Web アプリケーション (または少なくともセッション) が失われ、保存されていない多くの作業が残りの部分にかかっています。

これが win32 にあると仮定すると、元に戻すにはどうすればよいですか?

たとえば、どうにかしてメモリダンプできますか? プロキシを構成してストリームを印刷しますか? プロセスを終了または再起動せずに Firefox のセッション データにアクセスできますか? アイデアを教えてください。

0 投票する
3 に答える
835 参照

java - 実行中の JVM の生メモリにアクセスする

これが無知な質問である場合、私を許してください. 実行中のプログラム内から、クラスのインスタンスなどの作業メモリを読み取ることは可能ですか?

私はあなたが何かをすることができることを知っています、println(theInstance.getClass());そしてそれはあなたにインスタンスのメモリアドレスを与えるでしょう(私はそれが何であるかを仮定しています)。私はそれがbyte[]memory = theInstance.getClass().getMemory(); println(toString(memory));すべて構成されていることを知っているようなことをすることができるかどうか疑問に思っていますが、説明するだけです。

0 投票する
2 に答える
971 参照

batch-file - adplus.vbsを使用してダンプをキャプチャします-デバッガーが終了するのを待ちますか?

時々ハングするWebアプリケーションがあります。理由を調査したいのですが、プロセスがハングしたときに、プロセスのメモリダンプを取得する必要があります。

したがって、私の考えはWebサイトを監視することです。ハングを検出したら、メモリダンプをキャプチャする.batスクリプトを開始し、IISRESETを実行して再起動し、サイトが再び応答を開始するようにします。

私の問題は、adplusが別のプロセス(cdb.exe)を開始し、すぐに戻ることです。IISRESETを実行する前に、cdb.exeが終了するのを待つ必要があります。バッチスクリプトでそれを行う方法はありますか?または、adplusコマンドラインで、メモリダンプが収集されるまで戻らないように指定できますか?

0 投票する
4 に答える
13432 参照

debugging - Windows Server 2003でプロセスのメモリダンプを作成しますか?

Windows Vista以降、タスクマネージャーから直接プロセスのメモリダンプを作成するための優れたオプションがあります。残念ながら、Windows Server 2003にはまだこのオプションがありません:(完全なシステム全体のメモリダンプを実行する方法を見つけましたが、それは少し多すぎます。

単一のプロセスをダンプする方法はありますか?これは本番サーバーであるため、バックグラウンドで実行される重いツールやサービスをインストールしたくありません。理想的には、プロセスをダンプし、ダンプを自分のマシンにコピーして、そこでデバッグしたいと思います。

0 投票する
2 に答える
483 参照

.net - .NET プロセスをダンプするとメモリ使用量が増加する理由

起動時に最大 30MB のメモリを使用する .NET サービスがあります。(VM ~= Mem usage)
プロセスをダンプして、30MB を保持しているものを見つけたかったのです。

ミニダンプを生成する CDB デバッガーは、メモリ使用量を 100MB 増加させました
ダンプから、これらの 100MB がイメージ メモリ (DLL) であることがわかりました。

デバッガーがデタッチされた後も、メモリ使用量は高いままです。この画像の読み込み/メモリの上昇をケーシングしているものを知りたいですか?

ありがとう。

0 投票する
4 に答える
1192 参照

c++ - WinDbg拡張機能のダンプファイルメモリに基づいてオブジェクトを作成するにはどうすればよいですか?

私は大規模なアプリケーションで作業しており、WinDbgを頻繁に使用して、顧客からのDMPファイルに基づいて問題を診断しています。WinDbgの小さな拡張機能をいくつか作成しました。これらは、DMPファイルから情報を引き出すのに非常に役立つことが証明されています。私の拡張コードでは、c++クラスオブジェクトを同じ方法で何度も手作業で逆参照していることに気づきました。例えば:

それはうまく機能しますが、より優れた機能を備えた(そしてアプリケーションのDMPファイル内のより複雑なオブジェクトにアクセスする)拡張機能を作成するにつれて、より良いソリューションを待ち望んでいました。もちろん、私は自分のアプリケーションのソースにアクセスできるので、DMPファイルからオブジェクトをコピーし、そのメモリを使用して、関数を呼び出すことができるデバッガー拡張機能に実際のオブジェクトを作成する方法があるはずです(アプリケーションからdllにリンクすることによって)。これにより、DMPから手で物を引き出す手間を省くことができます。

これも可能ですか?拡張機能で新しいオブジェクトを作成し、それをDMPファイルから直接大きなReadMemoryで上書きするなど、明らかなことを試みました。これはデータを正しいフィールドに配置しているように見えましたが、関数を呼び出そうとするとびっくりしました。私は何かが欠けていると思います...多分c++は私が知らないいくつかのvtableファンキーさを引き出しますか?私のコードは次のようになります。

フォローアップ:EngExtCppのExtRemoteTypedが必要なようです。誰かがこれをうまく使用しましたか?いくつかのサンプルコードをグーグルで検索する必要がありますが、あまり運がありません。

フォローアップ2:私はこれについて2つの異なる調査ルートを追求しています。
1)ExtRemoteTypedを調べていますが、このクラスは実際にはReadMemory/GetFieldOffset呼び出しの単なるヘルパーであるようです。はい、それはALOTの速度を上げるのに役立ちますが、DMPファイルからオブジェクトを再作成する場合には実際には役立ちません。ドキュメントはスリムですが、私は何かを誤解している可能性があります。2)ReadMemoryを使用して、拡張機能で作成されたオブジェクトをDMPファイルのデータで上書きすることも検討しています。ただし、上記のようにsizeof(* thisClass)を使用するのではなく、データ要素のみを選択し、vtablesはそのままにしておくと考えていました。

0 投票する
1 に答える
812 参照

c++ - Windbg拡張機能のDMPファイルから実行時にタイプ情報を取得するにはどうすればよいですか?

これは、dmpファイルからオブジェクトをプルすることに関する私の前の質問に関連しています。

前の質問で述べたように、ラッパーの「リモート」オブジェクトを作成することで、dmpファイルからオブジェクトを正常に引き出すことができます。私はこれまでにこれらのいくつかを実装しましたが、うまく機能しているようです。しかし、私は障害に遭遇しました。

あるケースでは、ポインタは「SomeBaseClass」タイプのクラスに格納されますが、そのオブジェクトは実際には「SomeBaseClass」から派生した「SomeDerivedClass」タイプです。たとえば、次のようになります。

'field1'の実際のタイプが何であるかを知るための何らかの方法が必要です。

具体的には、アドレスの例を使用します。

私がWinDbgにいるとき、私はこれを行うことができます:

そしてそれはタイプを示します:

しかし、どうすれば拡張機能内でそれを取得できますか?SearchMemory()を使用して'SomeDerivedClass :: `vftable'を検索できますか?他の質問に従う場合は、このタイプ情報が必要なので、作成するラッパーリモートクラスのタイプがわかります。文字列を型に一致させる必要がある、ある種のcaseステートメントになる可能性があると思いますか?私はそれで大丈夫ですが、問題のオブジェクトのタイプを表すその文字列をどこで取得できるかはまだわかりません(つまり、上記の例ではSomeObject-> field1)。