I believe the test is flawed. GetValueDidChange() will only work if you have
gotten the value and then later ask if it changed. See my inline comments above.
We can document that we GetValueDidChange() is only valid if GetValue() was
previously called on a SBValue. So fix the test and remove all other code.
================
Comment at: source/Core/ValueObjectVariable.cpp:46-60
@@ -42,2 +45,17 @@
+
+void
+ValueObjectVariable::UpdateValueObjectAndChildren(lldb::ValueObjectSP
&valobj_sp)
+{
+ valobj_sp->UpdateValueIfNeeded();
+
+ if (!valobj_sp->IsPointerOrReferenceType())
+ {
+ const size_t valobj_child_num = valobj_sp->GetNumChildren();
+ for (size_t i = 0; i < valobj_child_num; ++i)
+ {
+ lldb::ValueObjectSP child = valobj_sp->GetChildAtIndex(i, true);
+ UpdateValueObjectAndChildren(child);
+ }
+ }
}
----------------
We can not do this. An array with 1000000 entries will cause this to slow ways
down. What if you have:
struct foo
{
// Define a very large structure here
};
struct foo[1000][1000][1000] foo_vector;
Now you single step and we delay for a few minutes when this variable is in
your function.
This can't go in.
================
Comment at: test/python_api/value_var_update/TestValueVarUpdate.py:55
@@ -54,2 +54,3 @@
i_val = i.GetValueAsUnsigned(0)
+ c = self.frame().FindVariable("c")
----------------
You will need to get the value you want to check for changes before you can ask
if it has changed below. Add the following code here:
```
# Get any values from the SBValue objecst so we can ask them if they changed
after a continue
value = i.GetValue()
value = c.GetChildAtIndex(1).GetValue()
value = c.GetChildAtIndex(0).GetChildAtIndex(0).GetValue()
```
http://reviews.llvm.org/D8103
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits