問題タブ [watchpoint]
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.
debugging - gdb でウォッチポイントを設定するために必要なリソースを監視する方法は?
x86 では、GDB はいくつかの特別なハードウェア リソース (デバッグ レジスタ?) を使用してウォッチポイントを設定します。状況によっては、そのリソースが十分にない場合、GDB はウォッチポイントを設定しますが、機能しません。Linux でこのリソースの可用性をプログラムで監視する方法はありますか? 多分procfsの情報か何か。デバッグ用にプール内のマシンを選択するには、この情報が必要です。
GDB Internals より: 「ハードウェア リソースに依存するため、ハードウェア ブレークポイントの数は限られている場合があります。ユーザーがさらに要求すると、gdb はソフトウェア ブレークポイントを設定しようとし始めます。(一部のアーキテクチャ、特に 32 ビット x86 プラットフォームでは、gdb はすべてのハードウェア ブレークポイントとウォッチポイントを挿入するのに十分なハードウェア リソースがあるかどうかを常に把握できるとは限りません。これらのプラットフォームでは、gdb はデバッグ中のプログラムが続行されている場合にのみエラー メッセージを出力します。)"
"Too many different watchpoints requested. (一部のアーキテクチャでは、この状況は、デバッグされたプログラムが再開されるまで検出できません。) x86 デバッグ レジスタは、ハードウェア ブレークポイントとウォッチポイントの両方に使用されるため、ハードウェア ブレークポイントを設定しすぎると、ウォッチポイントが発生する可能性があることに注意してください。挿入に失敗します。」
「32 ビット Intel x86 プロセッサは、デバッグを容易にするように設計された特別なデバッグ レジスタを備えています。gdb は、x86 ベースのポートがウォッチポイントとハードウェア アシスト ブレークポイントのサポートを実装するために使用できる関数の汎用ライブラリを提供します。」
gdb - ウォッチポイントが機能しないのはなぜですか?
GDBのウォッチポイントについて勉強中です。次のように簡単なテストコードを書きます。
私のテスト コードでは、変数 "x" が変更されていますが、gdb は停止しません。ここでウォッチポイントが機能しないのはなぜですか? どうもありがとう。
c++ - プログラムで gdb ウォッチポイントを設定することは可能ですか?
C++ プログラムにウォッチポイント (ハードウェア書き込みの中断) を一時的に設定して、メモリの破損を検出したいと考えています。
gdb を介して手動で行う方法はすべて見てきましたが、コード内の何らかのメソッドを介して実際にウォッチポイントを設定したいので、gdb に侵入してアドレスを見つけ、ウォッチポイントを設定してから継続する。
何かのようなもの:
gdb - GDB の配列の条件付きウォッチポイント
私たちは、C++ で書かれたクロス シミュレーターをデバッグしている最中です。一般的な問題は、何かによって速度がNaN1 または大きな数に変更された場合です。
現在、これをテストしなければならない最善の方法は呼び出しですtest_velocities_for_NaN()。これは遅く、手動で呼び出す必要があります。
GDB を使用してこのプロセスを自動化する方法はありますか? つまり、float の配列内のいずれNaNかの値が、設定された定数より大きい値に変更された場合に中断できるということですか?
c++ - gdb 経由でウォッチポイントをローカル ベクトル変数に設定できません
設定したいコードの部分は次のとおりです。
デバッグ フラグを使用してプログラムをビルドします。gdb で行うことは次のとおりです。
では、gdb で gen の値を確認するにはどうすればよいでしょうか? ベクトル値の完全なスタックが必要です。
linux - Linux カーネル 3.0.0 のすべてのハードウェア ウォッチポイントを削除します。
GDB で最初の (そして可能な唯一の) ハードウェア ウォッチポイントを設定した後、watch varnamedelete でそれを削除することはできません。
GDB を終了しただけでも、このウォッチポイントは次の再起動まで有効になっているようです。GDB の再起動後に別のハードウェア ウォッチポイントを設定しようとすると、カーネル メッセージがログに表示され、すべてのハードウェア ウォッチポイントが既に取得されていることが示されます。GDBハードウェアウォッチポイントの設定/ソフトウェアウォッチポイントの設定方法と同じ問題のようですが、ハードウェアウォッチポイントが必要なため、解決策は適用されません。
この (またはすべての) ハードウェア ウォッチポイントを削除するためのツールまたは syscall はありますか? CPU はCore i5で、Linux カーネルはUbuntu 11.10 (Oneiric Ocelot) の 3.0.0-17-generic です。
debugging - ハードウェア ウォッチポイントは特定のメモリ アドレスでのみ使用できますか?
gdb 7.3 と、ハードウェア ウォッチポイントをサポートするデバイスがあります。
そのような結果のコマンドを入力します。
最初のコマンドの後にハードウェア ウォッチポイントが受け入れられなかったのはなぜですか? なにが問題ですか?
debugging - gdb の errno にウォッチポイントを設定する
errno がいつ変更されるかを調べようとしています。
最初に、gdb で「watch errno」を試みたところ、エラーが発生しました。
「-pthread」でコンパイルすることでこれを修正できました。ただし、それでも機能せず、エラーが発生します
「watch errno」と入力すると。errno にウォッチポイントを設定するには、どうすればよいですか?
eclipse - Eclipse : クラス内 (メソッドの外) にブレークポイントを配置する方法
やあ 、
これは私のサンプルプログラムです。Eclipse IDE 3.6 バージョンを使用しています。
メソッド内にブレークポイントを配置できます(この場合はメインメソッドです)ここで私の質問は、行(X)文字列メッセージにブレークポイントを配置できないということです??
教えてください、よろしくお願いします??
linux - 構造体変数の gdb ウォッチポイント
私はこのような構造を持っています:
この構造は、大きなコードのさまざまな場所で参照されます。この構造体へのポインターはさまざまな関数に渡され、それに応じてこの構造体の変数が更新されます。この構造体の変数 a にウォッチポイントを設定して、多くの関数を通過させたいと考えています。a がどのように変化するかを確認します。このウォッチポイントを設定するにはどうすればよいですか?