Gdbからlldbへの新しい変更により、一部のメモリアドレスにウォッチポイントを設定する方法が見つかりません。
Gdbではこれを使用しました
watch -location *0x123456
Lldbで同じことをする
w s e *0x123456
私のために働いていません。では、lldbで同じコマンドを実行するために何を使用できますか?
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'