問題タブ [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.

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

ios - Swift プロパティにウォッチポイントを設定することは可能ですか?

Objective-C では、LLDB にウォッチポイントを設定して、インスタンス変数がいつ変更されたかを知らせることがありました。Swiftプロパティでもこれを行うことはできますか?

現在、これを達成できる唯一の方法は次のとおりです。

  • プロパティに didSet ハンドラーを追加し、内部にブレークポイントを設定します (ただし、これにはプログラムを停止して再コンパイルする必要があり、目的に反します)
  • シンボリックブレークポイントを追加します[setPropertyName:]が、これは、クラスがObjective-Cブリッジングをサポートしている場合にのみ機能します

他に選択肢はありますか?

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

javascript - How to keep watchpoint on variables for Javascript development?

I am working on a WebGL project with Javascript and I'm finding it really difficult to trace an error in my code.

In order to debug the program, I'm in need of a watchpoint checker, so that I can check when does the faulty variable data getting changed.

Currently I am using Chrome browser, which lacks this feature in development tool. Can someone suggest me some advanced developer toolkit for Javascript debugging that has got watchpoint feature?

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

c++ - gdb でクラス メンバー変数にブレークポイントを設定する方法

このクラスのすべてのインスタンスのクラスのメンバー変数にブレークポイント (またはウォッチポイント) を設定するにはどうすればよいですか?

このメンバー変数を使用して、クラスの行にブレークポイントを設定しようとしましたが、機能しません。

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

gdb - 一貫して監視し、gdb の現在のフレームの外側の変数を時々調べたい

varmain 関数で名前付きの変数を定義するとします。そして、私はそれにウォッチポイントを設定しました。次に、 という別の関数を入力しますfunc()。この時点で、その変数にアクセスできないように、ウォッチポイントが削除される可能性があります。いつでもウォッチポイントを維持できるようにする方法はありますか?

print main::varまた、変数の値を出力するような構文を使用できることも知っています。しかし、それだけでは十分ではありません。何か良いアイデアはありますか?

0 投票する
0 に答える
581 参照

c - アプリケーションが gettimeofday() とレジスタのウォッチポイントを使用して GDB でスタックする

GDB を使用していくつかの実験を行ってレジスタをいじっていますが、syscall gettimeofday() とレジスタのウォッチポイントを使用すると問題が発生します。

最初に、私が行っていることの小さな例を公開させてください。

わかりました、これが私が使用しているコードです(非常に単純です):

さて、私がやっていることは、プログラムを実行して(Enterキーを押すまでgetchar()関数で停止します)、そのプログラムを他のシェルのgdbセッションにアタッチすることです:

ここで、「rdi」レジスタに条件付きウォッチポイントを追加して、変数「num」が割り当てられたときにプログラムのステータスを確認できるようにします。

次に、gdb でプログラムの実行を続行し、プログラムを実行している他のシェルで Enter キーを押します。ご覧のとおり、gdb はウォッチポイントでプログラムを停止します。

まあ、これは私が期待したように動作するバージョンです。問題なく動作するシンプルなアプリケーションと、適切なタイミングで停止するウォッチポイントです。

さて、問題自体に行きましょう。

これは以前に使用したのと同じプログラムですが、変数の割り当ての前に gettimeofday() を使用するという違いがあります。

前に行ったのと同じ手順を繰り返します。

-シェルでプログラムを実行する

-プログラムを別のシェルの gdb セッションにアタッチします

-「rdi」レジスタに条件付きウォッチポイントを設定します

しかし、gdb で実行を続行し、プログラムが実行されているシェルで Enter キーを押すと、プログラムは gettimeofday() 関数でスタックします。

gdbで「Ctrl + C」を押すと、プログラムがこの関数でスタックしていることを確認できます

ウォッチポイントを無効にして再度実行を続行しようとすると、すべてがうまくいき、プログラムは問題なく終了します (明らかに、ウォッチポイントが無効になっており、gdb は必要なときにプログラムを停止しません)。

そのため、プログラムがスタックする原因がレジスタに設定されたウォッチポイントであることを確認できます...

問題は、誰かがなぜこれが起こっているのか説明できるかということです。そして、この問題を解決する方法はありますか?また、プログラムが gettimeofday() 関数でスタックしてウォッチポイントに到達しないようにする方法はありますか?

PD: 他の方法を使用して変数の割り当てでプログラムを停止できることは知っていますが、これは単なる実験であり、なぜこれが起こっているのか説明が欲しいだけです

PD2: 下手な英語で申し訳ありません。それは私の重要な言語ではありません。