56 lines · cpp
1// Tests evaluating expressions with side effects.2// Applied side effect should be visible to the debugger.3 4// RUN: %build %s -o %t5// RUN: %lldb %t \6// RUN: -o "settings set target.process.track-memory-cache-changes false" \7// RUN: -o "run" \8// RUN: -o "frame variable x" \9// RUN: -o "expr x.inc()" \10// RUN: -o "frame variable x" \11// RUN: -o "continue" \12// RUN: -o "frame variable x" \13// RUN: -o "expr x.i = 10" \14// RUN: -o "frame variable x" \15// RUN: -o "continue" \16// RUN: -o "frame variable x" \17// RUN: -o "exit" | FileCheck %s -dump-input=fail18 19class X {20 int i = 0;21 22public:23 void inc() { ++i; }24};25 26int main() {27 X x;28 x.inc();29 30 __builtin_debugtrap();31 __builtin_debugtrap();32 __builtin_debugtrap();33 return 0;34}35 36// CHECK-LABEL: frame variable x37// CHECK: (X) x = (i = 1)38 39// CHECK-LABEL: expr x.inc()40// CHECK-LABEL: frame variable x41// CHECK: (X) x = (i = 2)42 43// CHECK-LABEL: continue44// CHECK-LABEL: frame variable x45// CHECK: (X) x = (i = 2)46 47// CHECK-LABEL: expr x.i = 1048// CHECK: (int) $0 = 1049 50// CHECK-LABEL: frame variable x51// CHECK: (X) x = (i = 10)52 53// CHECK-LABEL: continue54// CHECK-LABEL: frame variable x55// CHECK: (X) x = (i = 10)56