問題タブ [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.
.net - .NET プロダクション デバッグ
しばらくの間、Windows アプリを運用しており、例外がスローされたときにエラー レポートを送信するように設定しています。これらのほとんどはかなり説明的であり、問題を非常に迅速に見つけるのに役立ちます (私は MS Application Exception Block を使用しています)。
場合によっては、再現できない問題であるというレポートがあり、少数のクライアント マシンでのみ発生するようです。
これらのクライアント マシンに物理的にアクセスできません。デバッグに使用できる戦略は何ですか? コードに何らかのトレースを組み込む方がよいでしょうか、それとも他の代替手段はありますか?
ありがとうございました。
編集:もっと明確にする必要がありました:私が取得したエラーレポートにはスタックトレースがありますが、それは製品コードであるため、例外の原因となった正確な行を示すものではなく、例外がスローされたメソッドのみを示しています.
debugging - windbg ユーザー モードのリモート デバッグ セッションを起動するための最良の方法
windbg ユーザー モードのリモート デバッグ セッションを開始するためのお気に入りのテクニックは何ですか? 他の手法よりもこの手法を好む理由は何ですか? (長所短所)
Windows ヘルプ ファイルのデバッグ ツールの「リモート デバッグ」セクションに記載されているように、windbg を使用してユーザー モードのリモート デバッグを実行するには、少なくとも 4 つの異なる方法があります。
- ターゲットでアプリを実行し、ホストwindbgからアタッチします
- ホストのwindbgでremote.exeを使用して、ターゲットでアプリを起動します
- 「スマートクライアント」ホストのwindbgに、ターゲットで実行されているプロセスサーバーを介してターゲットでアプリを起動させます
- オプション「-server」を使用してターゲットマシンでwindbgインスタンスを実行し、サーバーを自動的に起動してから、2番目のマシンからサーバーに接続します。
c - Cのメモリリーク検出器?
人々が良い経験をしたメモリリーク検出器は何ですか?
これまでの回答をまとめると次のようになります。
Valgrind - 動的分析ツールを構築するための計測フレームワーク.
Electric Fence - GDB で動作するツール
Splint - アノテーション支援の軽量静的チェック
Glow Code - これは、C++、C#、または任意の .NET Framework でアプリケーションを開発する Windows および .NET プログラマー向けの完全なリアルタイム パフォーマンスおよびメモリ プロファイラーです。
このスタックオーバーフローの投稿も参照してください。
c# - IIS ワーカー プロセスのクラッシュ ダンプの取得
ASP.NET アプリで悪いことをしています。それは、私が使用している CTP ライブラリの任意の数である可能性があります。または、何かを適切に破棄していないだけです。しかし、ASP.NET を Vista IIS7 インストールまたはサーバーの IIS6 インストールに再展開すると、IIS ワーカー プロセスがクラッシュします。
問題を HTTP クローラーに絞り込みました。HTTP クローラーは、必要に応じて有用な情報を求めてサイトをクロールするマルチスレッドの野獣です。appDomain を正常にアンロードしてリロードするのではなく、クローラーを開始してアプリを再デプロイすると、IIS ワーカー プロセスがクラッシュし (クラッシュ メッセージがポップアップ表示され)、アプリ ドメインのリロードが続行されます。
このクラッシュが発生した場合、分析用のクラッシュ ダンプはどこにありますか?
debugging - Makefile をデバッグするためのツール
多くの変数を含む非常に複雑なメイクファイルを含む大規模なレガシー コードベースがあります。時々、それらを変更する必要がありますが、変更が期待どおりに機能しない理由を理解するのは非常に困難です。私が見つけたいのは、基本的に「make」プロセスのステップスルー デバッグを行うツールです。この場合、ディレクトリを指定すると、さまざまな変数の値をさまざまな時点で確認できます。処理する。何かが欠けている可能性はありますが、作成するデバッグフラグはどれも私が望むものを示しているようには見えません。これを行う方法を知っている人はいますか?
java - Javaでデバッグプリントアウトにスタックトレースを追加するにはどうすればよいですか?
デバッグ印刷からスタックトレースを印刷する最も簡単な方法は何ですか?多くの場合、テスト中に、デバッグメッセージを引き起こす状況に至るまでのコールスタックを知りたいと思うでしょう。
c++ - System C (または Plain Vanilla C++) で実行時にデータ ブレークポイントを設定できますか?
system-C に、いくつかのデータ メンバーを持つクラスがあります。
私はこのように構築でそれを初期化しています:
しかし、コードで初めて使用すると、そこにゴミがあります。
システムの構築方法が原因で、デバッガーを簡単に接続できません。コードにデータブレークポイントを設定して、変数が実際に変更されたコードの場所をデバッガーを接続せずに教えてくれる方法はありますか?
編集:@Prakash:実際、これは質問のタイプミスですが、私のコードではありません...ありがとう!
objective-c - gdb での Objective-C のデバッグ中にシンボルなしでオブジェクトにメッセージを送信する
gdb の Objective-C オブジェクトにメッセージを送信しようとしています。
私はそれにメッセージを送ることができません。何か不足していますか?本当にシンボルが必要ですか、それとも何か他のものが必要ですか?
visual-studio - デバッグ中の算術アンダーフローまたはオーバーフロー例外
これは奇妙な行動の日です。
Delphi 2007で作成されたWin32プロジェクトがあります。これは、.NETランタイムをホストし、移行期間の一部として.NETを呼び出して新しいフォームを表示します。
最近、コードのランダムな場所とポイントで例外が発生し始めました。算術オーバーフローまたはアンダーフローです。
これらのいずれかのスタックトレースは次のようになります。
Visual Studioソリューションでは、最も優れたクラスライブラリの1つ(つまり、可能なすべての参照をプルする)が、Delphiプロジェクトの出力を対象とした特定のデバッグプログラムを設定しました。これにより、プログラムの大部分がDelphiで記述されている場合でも、VisualStudioから.NETコードをデバッグできます。
この問題は、exeファイルを直接(エクスプローラー、ショートカット、またはVisual Studio内で)実行した場合ではなく、デバッガーから実行した場合にのみ発生しCtrlます。F5
明らかに、マシンにはスパイウェアはありません(これが示唆するように)。
他に確認できることはありますか?
編集: .NETデバッガーがこのSNaNフラグを有効にしているように見えますが、Delphiデバッガーは有効にしていません。これについてはさらに調査する必要がありますが、今のところは@LorenzoBoccacciaの回答を受け入れます。
どうやら解決した
さて、ようやくこの問題を解決したようです。テスターにとっても、デバッガーを接続しなくても問題が発生し始めたため、問題の優先順位を上げる必要がありました。
最後に、問題が発生したマシンに共通する問題が1つ見つかりました。それは、2006年にラップトップのプロビジョニングに使用されたシステムイメージの古いドライバーを備えたNVIDIA QuadroNVS110Mを搭載したDellLattitudeD620ラップトップです。
ディスプレイドライバを更新するために再起動したときにURLを失いましたが、Webで1つの投稿を見つけました。これは、主にマシンが画面上で何かを実行しているときに.NETサービスがクラッシュしたためです。彼の問題を再現する1つの方法は、C:\へのコマンドプロンプトを開き、を実行してDIR /S
大量の画面更新を強制することでした。これにより、クラッシュがトリガーされます。
彼もNVIDIAビデオカードを持っていました。
私のマシンの問題は、プログラムの2〜4回の起動ごとに発生しましたが、ビデオドライバーを更新した後、問題なく123回の起動に成功しました。(ところで、私はそのようなことのためにAutoHotKeyをお勧めすることができます)。
つまり、古い/バギーなNVIDIAドライバーである犯人を見つけたようです。
この質問を更新して、将来誰かが時間を節約できるようにしました。
失礼しますが、隅で泣きます。
ジンクスド!
私はそれをジンクスしたに違いない。ビデオドライバを更新した後、同僚のラップトップが失敗するのと同じくらい早く、上記の更新を投稿しました。
それでも、私はそれが私たちのアプリケーションの外の問題であると確信しているので、どの特定のものを更新するかを理解することは残っています。
さらなる更新:わかりました。私のマシンは明らかに修正されましたが、同僚のマシンでは修正されていません。これまでのところ、BIOS、チップセットドライバーを更新しており、現在、XP用のSP3が導入されています。
バーンインテストは今夜行われ、起動中、または初めてWinForms .NETコードが実行されたときに問題が発生したため、アプリは一晩起動したままになります。このアプリは主にDelphiWin32アプリですが、.NETランタイムをホストしており、問題は.NETコードに関連しているようです。.NETランタイムを「起動」すると、問題が発生する可能性があります。または、Win32から最初の.NETウィンドウを起動すると、問題も発生する可能性があります。
統計的に、私は今このコードをリリースする準備ができています。一晩中、アプリケーションはエラーなしで3051回起動されましたが、ビデオドライバーを更新する前は、2〜4回ごとにクラッシュしました。
Prodded and found(!/?)
このバグ修正の試練は、医者に行くような気がします。そこで、次の会話が続きます。
私はアプリケーションを突っ込んで突っ込みましたが、ついにこの問題を引き起こす何かを見つけたと思います。
このアプリでは、Delphi 2007 Win32アプリケーションからの.NETランタイムをホストし、グルーコードには次の行があります(現在)。
真ん中の2つの定数は元々0でした。つまり、デフォルトを選択します。この変更は数か月前に導入されたものであり、この後、問題は徐々に私たちに忍び寄ってきました。この変更は、パフォーマンスプロファイリングを実行するためにANTSプロファイラーがWin32アプリケーションとホストされた.NETランタイムをロードするように促すために導入され、当時導入した変更によって機能しました。さらに、算術オーバーフロー/アンダーフローの問題は徐々に悪化しているので、変更後しばらくの間問題が発生しなかったので、私たちが行った変更のいずれにも起因していなかったに違いありません。
また、(元々)デバッガーを実行しているときにのみ問題が発生したため、VisualStudioやDelphiに問題があると考えました。
とにかく、統計的には、JavaScriptによってトリガーされた1つの画面上のブラウザーが上下に繰り返しスクロールすることで(明らかにバグをトリガーするために必要)、呼び出しで0を使用してアプリケーションを726回正常に起動できました。 、および2つの定数を使用して17回のうち5回クラッシュします。
そして、そもそも誰がその変更を行ったのかについては触れないようにしましょう。犯人は匿名のままにされたいと確信しています...咳
c# - デバッガーをアタッチしてマネージド (C#) ラッパーからネイティブ (C++) コードにステップインするにはどうすればよいですか?
C# コードから呼び出す C++ 関数呼び出しのラッパーがあります。Visual Studio でデバッガーをアタッチして、ネイティブ C++ コードにステップインするにはどうすればよいですか?
これは、C++ ファイルで定義された GetData() を呼び出すラッパーです。
コードがクラッシュしており、根本的な原因を調査したいと考えています。
ありがとう、ニキル