看着变量我在一个for循环与lldb

问题描述:

刚刚切换到lldb,我试图做相当于gdb的watch i,因为我在代码中的for循环内。看着变量我在一个for循环与lldb

(lldb) f 
frame #0: 0x0000000100000664 a.out`MaxPairwiseProduct(numbers=size=5) + 4 at max_pairwise_product.cpp:19 [opt] 
    16  // Find max value in vector 
    17  
    18  for (int i=1; i<numbers.size(); i++) { 
-> 19  if (numbers[i] > numbers[i-1]) { 
    20   second_max = max; 
    21   max = numbers[i]; 
    22   if (numbers[i] < max && numbers[i] > second_max) 
(lldb) 

正如您在上面看到的,int i已经被声明。

检查其观察点我有产量

(lldb) watchpoint list -b 
Number of supported hardware watchpoints: 4 
No watchpoints currently set. 
(lldb) 

现在试图将观察点设置为我(根据lldb reference)我得到

(lldb) wa s v i 
error: Watchpoint creation failed (addr=0xffffffffffffffff, size=0, variable expression='i'). 
error: cannot set a watchpoint with watch_size of 0 
(lldb) 

我不明白这是为什么,是该变量已被声明。谷歌搜索错误并没有什么帮助,因为大多数问题似乎都与最大数量的观察点有关,而我的情况并非如上所述。任何帮助将非常感激!

我改变了我是编译程序clang++ -Wall -g -o max_pairwise max_pairwise.cpp的方式,并开始向我展示正确的信息,包括跟踪i

+0

值。这可能是一个坏的错误信息(而不是给人一种错误提示信息)当引用的变量在当前位置不可用时。你重建的命令行示例没有任何优化,我猜你在第一个例子中已经有了它。或者你在两次运行之间的程序中的另一点停下来。尽管如此,你肯定应该得到关于问题的错误信息,而不是这种行为,但观察点在lldb中有点粗糙。 –