web-dev-qa-db-ja.com

メモリアドレスのウォッチポイント

Gdbからlldbへの新しい変更により、一部のメモリアドレスにウォッチポイントを設定する方法が見つかりません。

Gdbではこれを使用しました

watch -location *0x123456

Lldbで同じことをする

w s e *0x123456

私のために働いていません。では、lldbで同じコマンドを実行するために何を使用できますか?

15
user3001909

Lldbでウォッチポイントを設定するときは、「逆参照演算子」*を省略し、アドレスを渡すだけです。

watchpoint set expression -- 0x123456
# short form:
w s e -- 0x123456

メモリ位置0x123456にウォッチポイントを設定します。オプションで、--sizeを使用して監視するバイト数を設定できます。短い形式の例:

w s e -s 2 -- 0x123456

変数にウォッチポイントを設定することもできます。

watchpoint set variable <variable>
# short form:
w s v <variable>

例:次のコードと2行目にブレークポイントを設定します。

int x = 2;
x = 5;

Xcodeデバッガコンソールでこれを行いました:

(lldb)p&x 
(int *)$ 0 = 0xbfffcbd8 
(lldb)wse-0xbfffcbd8 
作成されたウォッチポイント:ウォッチポイント1:addr = 0xbfffcbd8サイズ= 4状態=有効タイプ= w 
新しい値:2 
(lldb)n 
 
ウォッチポイント1ヒット:
古い値:2 
新しい値:5 
(lldb)

もっと簡単に言えば、私はウォッチポイントを

(lldb)wsvx 
作成されたウォッチポイント:ウォッチポイント1:addr = 0x7fff5fbff7dcサイズ= 4状態=有効タイプ= w 
 declare @ '/ Users/martin/Documents/tmpprojects/watcher /watcher/main.c:16'
ウォッチポイント仕様= 'x' 
29
Martin R