【发布时间】:2020-12-23 11:01:32
【问题描述】:
这是一个程序:
int main(int argc, char **argv) {
int *arr = NULL;
arr = malloc(2 * sizeof(*arr));
arr[0] = 1;
arr[1] = 2;
return 0; // break is here
}
我想在休息时检查arr 的内容。这是我通常的做法:
$ lldb main
(lldb) break set -l 266
(lldb) run
Process 9093 launched: '..../main' (x86_64)
Process 9093 stopped
* thread #1, name = 'main', stop reason = breakpoint 1.1
frame #0: 0x0000555555555314 main`main(argc=1, argv=0x00007fffffffe018) at main.c:266
263 arr = malloc(2 * sizeof(*arr));
264 arr[0] = 1;
265 arr[1] = 2;
-> 266 return 0;
267 }
(lldb) x/d -c 2 arr
0x555555757260: 1
0x555555757264: 2
(lldb) p *(int(*)[2])arr
(int [2]) $9 = ([0] = 1, [1] = 2)
一切都很好 - 内容按预期打印,但问题是我希望 LLDB 在我执行步进时为我执行此操作。那么如何设置观察点(通过watch set var ... 或watch set expr ...)在每个step 上自动打印这些值?
【问题讨论】: