# RUN: %clang_host %p/Inputs/stop-hook.c -g -o %t # Test setting stop-hook per-function # RUN: %lldb -b -s %p/Inputs/stop-hook-1.lldbinit -s %s -f %t \ # RUN: | FileCheck --check-prefix=CHECK --check-prefix=CHECK-FUNC %s # Test setting stop-hook per-line range # RUN: %lldb -b -s %p/Inputs/stop-hook-2.lldbinit -s %s -f %t | FileCheck %s # Test setting stop-hook with multi-line expression # RUN: %lldb -b -s %p/Inputs/stop-hook-3.lldbinit -s %s -f %t | FileCheck %s # This test is not "unsupported" on Windows, but it fails because "expr ptr" # does not evaluate correctly. However, the error message contains the expected # string, so the test "passes" despite the fact that the commands failed # llvm.org/pr40119 # UNSUPPORTED: system-windows break set -f stop-hook.c -p "// Set breakpoint here to test target stop-hook" break set -f stop-hook.c -p "// Another breakpoint which is outside of the stop-hook range" target stop-hook list # CHECK: Hook: 1 # CHECK-NEXT: State: enabled # CHECK-NEXT: Specifier: # CHECK-FUNC-NEXT: Function: b. # CHECK-NEXT: Commands: # CHECK-NEXT: expr ptr target stop-hook disable target stop-hook list # CHECK: Hook: 1 # CHECK-NEXT: State: disabled # CHECK-NEXT: Specifier: # CHECK-FUNC-NEXT: Function: b. # CHECK-NEXT: Commands: # CHECK-NEXT: expr ptr target stop-hook enable target stop-hook list # CHECK: Hook: 1 # CHECK-NEXT: State: enabled # CHECK-NEXT: Specifier: # CHECK-FUNC-NEXT: Function: b. # CHECK-NEXT: Commands: # CHECK-NEXT: expr ptr run # Stopping inside of the stop hook range # CHECK: (lldb) run # CHECK-NEXT: (void *) ${{.*}} = 0x thread step-over # Stepping inside of the stop hook range # CHECK: (lldb) thread step-over # CHECK-NEXT: (void *) ${{.*}} = 0x # CHECK: ->{{.*}} // We should stop here after stepping. process continue # Stopping outside of the stop hook range # CHECK: (lldb) process continue # CHECK-NOT: (void *) # CHECK: ->{{.*}} // Another breakpoint which is outside of the stop-hook range. thread step-over # Stepping inside of the stop hook range # CHECK: (lldb) thread step-over # CHECK-NOT: (void *) settings set auto-confirm true target stop-hook delete target stop-hook list # CHECK: (lldb) target stop-hook list # CHECK-NOT: Hook: 1 # CHECK: No stop hooks # CHECK-NOT: Hook: 1