問題タブ [crash-dumps]

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 に答える
21868 参照

c++ - Windowsクラッシュダンプファイルの詳細なメモリ使用量分析?

お客様からネイティブ(完全)クラッシュダンプファイルを受け取りました。Visual Studio(2005)デバッガーで開くと、最大10MBのブロックを割り当てようとしたrealloc呼び出しが原因でクラッシュが発生したことがわかります。ダンプファイルは異常に大きかった(1.5GB-通常は500MB程度)。

したがって、プロセスのメモリを完全に使い果たすか、少なくとも再割り当てが失敗するのに十分なほど大幅にフラグメント化されたメモリ「リーク」または暴走割り当てがあると結論付けます。(このreallocは、ロギングバッファーを割り当てた操作用であり、ここで失敗したことは驚くことではありません。これは、一度に10MBが、非常に大きなかなり変更できないバッファーとは別に、より大きな割り当ての1つになるためです。問題それ自体は、この特定の割り当てとは関係がない可能性があります。)

編集:以下のLex Liとのコメント交換の後、追加する必要があります:これは(現時点では)再現できません。これは、暴走したメモリ消費を明確に示している1つの顧客ダンプです。

主な質問:

これでダンプファイルができましたが、過剰なメモリ使用量の原因をどのように特定できますか?

これまでに行ったこと:

DebugDiagツールを使用してダンプファイル(いわゆるメモリ圧力アナライザー)を分析しました。取得したものは次のとおりです。

これは、ちょっとしたコンテキストを取得するためだけのものでした。私が信じているより興味深いものは次のとおりです。

ここで、ヒープ0x01040000(1.5 GB)を見ると、次のようになります。

とにかくこのセグメント情報は何ですか?

リストされている割り当てを見てください:

明らかに、MSVCR80ヒープは336バイトで3.760.923の割り当てを保持していることがわかります。これは、私たちがたくさんの小さな割り当てでメモリをモップアップしたことをかなり明確にしていますが、これらの割り当てがどこから来たのかに関するより多くの情報をどのように得ることができますか?

どういうわけかこれらの割り当てアドレスの一部をサンプリングし、プロセスイメージのどこでこれらのアドレスが使用されているかを確認できれば、これらの割り当ての大部分が「リーク」の原因であると仮定すると、どこにあるかを見つけることができます。これらの暴走した割り当てはから来ました。

残念ながら、現時点では、ダンプからより多くの情報を取得する方法がわかりません。

このヒープを調べて、「336」の割り当てアドレスのいくつかを確認するにはどうすればよいですか?

ダンプでこれらのアドレスを検索するにはどうすればよいですか。また、ダンプ内のどのポインター変数(存在する場合)がこれらのアドレスに保持されているかを確認するにはどうすればよいですか?

DebugDiag、WinDbg、またはその他のツールの使用に関するヒントは、本当に役に立ちます。また、上記の私の分析のいずれかに同意できない場合は、お知らせください。ありがとう!

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

windbg - クラッシュ ダンプ - WinDbg を使用して .NET アプリケーションのアンマネージ コード クラッシュを解決する

実稼働サーバーにあるクラッシュ ダンプを分析するための WinDbg ツールを見つけようとしています。

を実行する!analyze -vと、次のようになります。

何が何だか分からなくて本当に困ります。私が理解していることから、興味深い部分は次のとおりです。

私は WinDbg を初めて使用し、このツールを使用するのは初めてです。私は Google 検索に苦労しているので、正しいものを検索していないと思います。

私がやりたいことは次のとおりです。

  1. stack_text の出力形式を理解する
  2. 各関数の入力パラメータを見てみる

それはこの問題にアプローチする正しい方法ですか?

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

debugging - Mac でミニダンプを行うライブラリはありますか?

MiniDump は、Windows でクラッシュをデバッグするための優れた機能です。特に小さいため、クラッシュ レポートを介して送信できます。(ウィンドウ エラー報告)。

しかし、Mac OS X やその他の BSD システムはフル コア ダンプしかサポートしていないようです。

Mac または BSD システムにミニダンプの実装はありますか? あるいは、Mac ソフトウェア開発者は顧客のクラッシュ レポートをどのように分析するのでしょうか?

ありがとう!-ジョニー

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

.net - procdump (または同様のもの) を使用して .Net アプリケーションから未処理の例外をキャッチする方法は?

長い(つまらない)話

現在、1台のPCでのみ例外を引き起こすアプリケーションがあります。少し掘り下げた後、小さなサンプルアプリケーションで問題をカプセル化できましたが、本当の理由はまだ隠されています.

このPCにはVisual Studioがインストールされておらず、そうすることができないため、本当の理由を見つけるために別の解決策を探しました。

最初のアプローチでは、例外メッセージを注意深く読んでコードを比較し、試行錯誤して問題の具体的な行に到達することで、小さなアプリケーションをますます削除しました。しかし、それは、使用されているすべての変数の現在の値などに関するすべての情報を取得するのに役立ちません.

そこで、必要な情報を取得するための別のより良い方法を探しました。私はすでにダンプミニダンプについて長い間読んできましたが、それらを必要としたことはありません。これまで、開発者またはテストマシンでユーザーが記述したシナリオをいつでも再現できたからです。

しかし、今回は問題のある PC が 1 台だけのようで、残念ながらマシン全体を変更するか、新しいものをすべてインストールするという選択肢はありません。

ダンプの操作方法に慣れるために、単純な C# テスト アプリケーションを作成しました。throw new ArgumentException("Test");

悪意のあるボタンを押した後、このような魔法のダンプ ファイルを作成し、それを Visual Studio 2008 Professional に読み込んで、VS 内の通常の実行中のアプリケーションのように見えるようにする必要がありますが、Step nextなどが機能しません。

私が知る限り、特定の時点でダンプを作成するための最良のツールはprocdumpです。これは、1 つまたは複数のダンプをいつ取得するかを定義できる可能性があるためです。

だから私は単にそれをダウンロードし、呼び出して開始しましたprocdump -o -e MyApp.exe d:\MyApp.dmpMyApp.exeが存在しないと主張しています。わかりました、私のせいです。最初に MyApp を起動し、その後 procdump を起動するだけです。

Procdump が実行され、使用するすべてのオプションが表示され、未処理の例外が発生するのを待っているようです。これほど簡単なことはありません。悪意のあるボタンを押すだけです...そしてprocdumpでは何も起こりません。

代わりに、未処理の例外が発生したこと (サプライズ、サプライズ) と何をしたいのか (詳細、続行、終了) を説明するアプリケーションのダイアログ ウィンドウがポップアップします。しかし、何を選択しても、procdump はダンプ ファイルを自動的に作成できません。

ダイアログにダンプファイルが表示されているときに呼び出すだけprocdump -o MyApp.exe d:\MyApp.dmpでは役に立たないようです.VSで開いた後、コールスタックはntdll.dll私のコード内のどこかにぶら下がっているだけです(これはのMessageQueueであると推測しますマウスのクリックを待っているダイアログ)。

詳細を詳しく調べると、未処理の例外を JIT デバッガーに委任する方法に関する情報が見つかります。しかし、JIT デバッガーは必要ありません。アプリケーションをクラッシュさせてダンプ ファイルを取得したいと考えています。

これらの試行の後、ClrDumpを見つけましたが、より良いダンプは生成されませんでした (VS にロードしてコール スタックを調べた場合)。

これらの情報を考慮に入れると、(できれば) .Net アプリケーションの (動作する) ソリューションを提供できるようになります。

(短い)質問

未処理の例外が .net アプリケーション内で発生したときにダンプ ファイルを作成するにはどうすればよいですか?

答え

Naveen と Lex Li の助けを借りて、クラッシュ ダンプを使用したデバッグがどのように機能するかについて、もう少し理解を深めることができました。そして今、私はそれを機能させるために必要なすべてのものを要約したいと思います:

プロセスのダンプを取得したいときはいつでも、ジョブを完了するためにいくつかのツールから選択できます。

  • Procdump
    • 複雑なシナリオでダンプを作成できる簡単なコマンド ライン ツールですが、.net の未処理の例外をキャッチすることはできません。
  • DebugDiag
    • クラッシュ時に (.net 例外でも) ダンプを作成できる簡単なグラフィカル ツールですが、Procdump のような高度なシナリオではダンプを作成できません。

ご覧のように、異なる状況でダンプを作成できる 2 つのツールが提供されるため、必要な時点でダンプを作成する上で、どちらもライバルというよりもパートナーです。

上記のツールのいずれかでダンプを作成したら、ダンプを分析して問題の原因を突き止めます。分析のために、WinDbg を取得できます。Windows 用のデバッグ ツールの一部であり、Microsoft から入手できます。残念ながら、WinDbg の参入障壁は非常に高いですが、非常に強力です。このブログを読んで、このツールの使用方法をよりよく理解してください。

.Net 4 アプリケーションがあり、Visual Studio 2010 を使用している場合は、これを分析に使用することもできます。優れたグラフィカル ユーザー インターフェイスにより、はるかに使いやすくなっていますが、WinDbg の機能はありません。より良い比較を行うには、この記事をご覧ください。

最後に、Visual Studio 2008でsos.dll を使用することもできます。

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

iphone - iOSで「時間内に再開できませんでした」を解決する方法

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

windbg - プライベート バイト (マネージ ヒープ以外) の WinDbg のクラッシュ ダンプを解析しますか?

完全なクラッシュ ダンプ (*.dmp) ファイルを解析し、プライベート バイト データを取得したいと考えています。SysInternals の VMMap は、プライベート バイト、ヒープなどの量をすべて教えてくれることを知っていますが、ダンプがあれば、それを解析して、ヒープ (マネージ ヒープ) 構造とデータを取得できるはずです。ヒープ。PEB を読み取ってからヒープを調べることで、これは既に完了しています。

私が理解できないのは、プライベート バイト (ネイティブ コードのプロセス データであるはずのヒープ以外) を読み取る方法です。クラッシュダンプからヒープ以外のプライベートバイトを解析できるように、誰かが私を正しい方向に向けてください。

ありがとう。

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

iphone - iOSのクラッシュログにコンソール出力を自動的に含める方法はありますか

iOS でアプリにエラーが発生したときに返されるクラッシュ ログは素晴らしいものですが、ログの一部としてアプリが起動したときのコンソール出力が含まれていれば、100 倍優れています。その情報をクラッシュ ログに自動的に記録する方法や、テスターがクラッシュ ログを送信するときに使用できる半自動システムを用意する方法はありますか?

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

debugging - 0x%08lxとは何ですか?

最近、作業中のXPボックスで多くのブルースクリーンが発生しています。実際、私はWindows(x86)のデバッグツールをダウンロードして、クラッシュダンプを分析しているほど多くの人がいます。実際、ダンプをミニのみに変更したので、ブルースクリーンが詳細なクラッシュログの記録を終了するのを待つだけで、毎週半営業日でタンクに入れてしまう可能性があります。

ほとんど例外なく、すべてのダンプは、ブルースクリーンの原因が何らかのメモリの誤割り当てまたは誤参照であり、0x%08lxのメモリが0x%08lxを参照しており、%sではないことを示しています。

アイドル状態の好奇心から、私は「0x%08lx」をGoogleに入れましたが、かなりの数のクラッシュダンプにこの奇妙なメッセージが含まれていることがわかりました。0x%08lxは、意味のあるもののプレースホルダーであると思いますか?「メモリは%sにできませんでした」という結論文の一部である「%s」は、変数などが欠落しているように見えます。

このメッセージの出所を知っている人はいますか?それは実際に役立つはずであり、どのように見えるはずですか?

それは私がいつもそれを回避してきた主要なことではありません。非常に多くの人がこれを非常に多くのクラッシュダンプで見る必要があり、誰も「クラッシュダンプがそのメッセージを正しく完了しなかったため、読み取るはずです...」と言うことはありません。

この奇妙なエラーメッセージアーティファクトの目的を誰かが知っているかどうかだけが気になります。

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

crash-dumps - ダンプファイル分析の開始

Windows 7 がクラッシュすることがあるレガシーな VB6/COM アプリケーションを使用しています。Sysinternals の ProcDump ツールを使用して、これらのクラッシュの 1 つの .dmp ファイルを生成しました。ただし、これまでダンプファイルを扱ったことはありません。ダンプ ファイルの分析を開始するために、どのリソースをお勧めしますか?

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

android - Android クラッシュ ダンプ データ デバイスでのアクセス

これは明らかな質問かもしれませんが、テスト中に Samsung デバイスで発生するクラッシュ ダンプにアクセスする方法がわかりません。コア ダンプが表示され、# 9900などでアクセスするためのいくつかのオプションが表示されます。ファイルがどこに行ったかがわかりますが、PC からディレクトリにアクセスしたり、PC にコピーしたりするにはどうすればよいでしょうか。kies をインストールしました。大容量ストレージにも切り替えようとしましたが、ファイル システムにアクセスする方法がわかりません。ありがとう