随着从gdb到lldb的新变化,我找不到如何在某些内存地址上设置监视点的方法。
在gdb中我使用了这个
watch -location *0x123456
在lldb中做同样的事情
w s e *0x123456
不适合我。 那么我可以用什么在lldb中运行相同的命令呢?
答案 0 :(得分:27)
在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>
示例:使用以下代码并在第二行设置断点:
int x = 2;
x = 5;
我是在Xcode调试器控制台中完成的:
(lldb) p &x (int *) $0 = 0xbfffcbd8 (lldb) w s e -- 0xbfffcbd8 Watchpoint created: Watchpoint 1: addr = 0xbfffcbd8 size = 4 state = enabled type = w new value: 2 (lldb) n Watchpoint 1 hit: old value: 2 new value: 5 (lldb)
更简单的说,我可以用
设置观察点(lldb) w s v x Watchpoint created: Watchpoint 1: addr = 0x7fff5fbff7dc size = 4 state = enabled type = w declare @ '/Users/martin/Documents/tmpprojects/watcher/watcher/main.c:16' watchpoint spec = 'x'