Debugging 如何在LLDB中将表达式设置为观察点?

Debugging 如何在LLDB中将表达式设置为观察点?,debugging,lldb,Debugging,Lldb,以下是一个程序: 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 909

以下是一个程序:

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在我执行STEP时为我执行此操作。那么,我如何设置一个观察点(通过
watch set var…
watch set expr…
)在每个
步骤上自动打印这些值呢?

我想您想在这里使用一个
止动钩

target stop-hook add -o 'p *(int(*)[2])arr'

如果在
目标停止挂钩添加后点击回车键,则可以在每次停止时输入多个命令。当您在某些源文件、函数或某些solib中停止运行时,该命令有许多选项,非常灵活。

非常完美。非常感谢。