7
随着gdb到lldb的新变化,我找不到如何在某些内存地址上设置观察点的方法。关于内存地址的观察点
在gdb中我用这个
watch -location *0x123456
做同样的LLDB
w s e *0x123456
是不是为我工作。 那么我能用什么来在lldb中运行相同的命令?
随着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>
例如:用下面的代码,并设置在第二线断点:
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'
观察点我得到这个:地址错误表达式求值看失败,表情评估 – user3001909
@ user3001909:奇怪,我测试过这一点。 - 我添加了一个例子。 –
我试过你的例子,lldb说使用未声明的标识符'x'。然后做了 - e - 0xOFFSET,它工作。 watchpoint created:Watchpoint 1:addr = 0xOFFSET size = 4 state ... new value:10。 谢谢! – user3001909