問題タブ [postmortem-debugging]
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# - Windbg の適切な .net ネイティブ シンボルを取得する
クラッシュ ダンプのデバッグを行っています。ここでは、運用サーバーから取得したダンプを探しています。WinDbg を実行しているマシンには、わずかに異なるバージョンの .NET ランタイムがインストールされている必要があります。.NET システム アセンブリのネイティブ イメージをロードするときにエラーが発生します (たとえば、ロードできませんSystem.Data.Linq
)。
デバッグ マシンがすべての適切なシンボルにアクセスできるようにする最善の方法は何ですか?
編集 Thomas Weller の lmv の出力を追加
c++ - 最適化中にローカル変数が削除されないようにする方法
バックグラウンド
職場では、最適化されたコードのコア ダンプを使用してポストモーテン デバッグを行うことがよくあります。
特定の種類の困難で再現性のない障害については、追加情報を利用できるようにしたいと考えています。これらの場合、追加のトレースを追加することは現実的ではありません。これは、呼び出しの大部分が成功し、1 分間に数百万の「不要な」トレースが追加され、ログ ファイルが迅速にローリングされるためです。キャッチとトレースが常に実行可能であるとは限らず、一部のエラーによって環境が破損し、トレースが失敗する可能性があります。
コア ダンプにはコールスタック メモリが含まれているため、コールスタック メモリの領域を「トレース」に使用できると考えました。
問題
最適化コンパイラのおかげで、このようなコードは機能しません
アイデアは、ローカル変数に代入することにより、入力変数をスタックに格納することです。これは多くの場合、デバッグ モードでは正常に機能しますが、最適化されたビルドでは、コンパイラはステートメントに副作用がないと判断し、ステートメントを削除します。
alloca
サポートされていない一部のプラットフォームをターゲットalloca
にしており、C++ とどの程度うまく機能するかはわかりません。
少し実験したところ、次のコードは、最適化されたビルドでもスタックに状態を「固定」できるようです。
質問
コードがやりたいことを実行することを期待できますか? 現在の一連のコンパイラ (clang & gcc) で動作するようですが、引き続き動作することを期待できますか?
私がやりたいことを達成するためのより良い方法はありますか?
より良いとは、よりシンプルで、より堅牢で、標準に準拠していることを意味します。
python - コンソールがない場合、キャッチされない例外で Python の pdb に入るにはどうすればよいですか?
開発ショップで Python アプリケーションを実行しています。別の GUI アプリケーションから呼び出されます。失敗した場合、pdb 事後分析デバッグで停止した場所にコンソールを表示して、ユーザーが問題を抱えたときに何が起こっているかを確認できるようにしたいと考えています。
プログラムの上部にexcepthookを設定してみました:
そして、pythonw でコンソールを起動したときや、Python で書かれていない他の GUI アプリケーションから呼び出されたときなど、まだコンソールを持っていない場合を除いて、それはうまく機能します。
これを行う方法はありますか?ありがとう
更新:これはすべてWindows 7上にあることを忘れていました
更新: 最小限のコード例を追加します。これは、pythonw.exeではなくpython.exeで起動すると、希望どおりに機能することに注意してください。pythonwは、実際にこれをロードするC#GUIを持っている私の環境で行っていることにより似ていますdll 内の Python コード。
windows - WinDBG でコール スタックから URL を見つける
断続的にダンプ ファイルにこのエラーが表示され、ブラウザーがハングします。
3回のクラッシュで使用!analyze -v
した後、このエラーとスタックが表示されます
ただし、失敗しているダンプ ファイルに URL が見つかりません。誰でも助けることができますか?
このスタックで失敗している URL を見つけるにはどうすればよいですか?
.net - 多くのハンドルを持つ .Net アプリケーションのメモリ使用量が多い
WinDbg とプロセス ダンプを使用して、メモリ負荷の高い .net アプリケーションで事後分析を行っています。このプロセスは Windows サービスです。
このプロセスのメモリ消費量のこの 14GB のほとんどは、中止されたスレッド、つまり多くの孤立したセマフォ/イベント/ミュータントなどから来ていると感じました。単一のセマフォ/イベント/ミュータントと、この種の状況に役立つ WinDbg コマンドの種類は?
以下は、WinDbg の出力です。
!扱う
!アドレス -概要
!threads (リストされている多くのスレッドには ThreadAbortException 例外があります)
debugging - .cxr を使用した後に "Last set context:" メッセージを回避する方法
ダンプを分析するとき.cxr
、実際の例外コール スタックに到達する必要がありました。
私が実行するほとんどすべてのコマンドの出力には、「Last set context:」があります。これは、特にスクリプトを実行している場合 (スクリプトの出力行間および出力行内でこれらのメッセージを大量に取得する場合)、非常に厄介です。
これらのメッセージを回避/抑制したり、例外コンテキストが唯一のコンテキストである既存のダンプから新しいダンプを作成したりする方法はありますか?