| # Test hook add/list/delete/enable/disable commands. | |
| # | |
| # RUN: %lldb -b -s %s 2>&1 | FileCheck %s | |
| # Adding hooks assigns incrementing IDs. | |
| target hook add -L -o "script print('hook1')" | |
| # CHECK: Hook #1 added. | |
| target hook add -L -o "script print('hook2')" | |
| # CHECK: Hook #2 added. | |
| target hook add -L -o "script print('hook3')" | |
| # CHECK: Hook #3 added. | |
| # List all hooks. | |
| target hook list | |
| # CHECK: (lldb) target hook list | |
| # CHECK: Hook: 1 | |
| # CHECK: State: enabled | |
| # CHECK: Triggers: load | |
| # CHECK: Commands: | |
| # CHECK: script print('hook1') | |
| # CHECK: Hook: 2 | |
| # CHECK: State: enabled | |
| # CHECK: Triggers: load | |
| # CHECK: Commands: | |
| # CHECK: script print('hook2') | |
| # CHECK: Hook: 3 | |
| # CHECK: State: enabled | |
| # CHECK: Triggers: load | |
| # CHECK: Commands: | |
| # CHECK: script print('hook3') | |
| # Disable a hook. | |
| target hook disable 2 | |
| target hook list | |
| # CHECK: (lldb) target hook list | |
| # CHECK: Hook: 1 | |
| # CHECK: State: enabled | |
| # CHECK: Hook: 2 | |
| # CHECK: State: disabled | |
| # CHECK: Hook: 3 | |
| # CHECK: State: enabled | |
| # Re-enable the hook. | |
| target hook enable 2 | |
| target hook list | |
| # CHECK: (lldb) target hook list | |
| # CHECK: Hook: 1 | |
| # CHECK: State: enabled | |
| # CHECK: Hook: 2 | |
| # CHECK: State: enabled | |
| # CHECK: Hook: 3 | |
| # CHECK: State: enabled | |
| # Delete a hook in the middle. | |
| target hook delete 2 | |
| target hook list | |
| # CHECK: (lldb) target hook list | |
| # CHECK: Hook: 1 | |
| # CHECK-NOT: Hook: 2 | |
| # CHECK: Hook: 3 | |
| # New hook gets a new ID (not reused). | |
| target hook add -L -o "script print('hook4')" | |
| # CHECK: Hook #4 added. | |
| target hook list | |
| # CHECK: (lldb) target hook list | |
| # CHECK: Hook: 1 | |
| # CHECK-NOT: Hook: 2 | |
| # CHECK: Hook: 3 | |
| # CHECK: Hook: 4 | |
| # Delete all hooks. | |
| settings set auto-confirm true | |
| target hook delete | |
| target hook list | |
| # CHECK: (lldb) target hook list | |
| # CHECK: No hooks. | |
| # Add a hook with --on-load and --on-unload. | |
| target hook add -L -u -o "script print('load+unload')" | |
| # CHECK: Hook #5 added. | |
| target hook list | |
| # CHECK: (lldb) target hook list | |
| # CHECK: Hook: 5 | |
| # CHECK: State: enabled | |
| # CHECK: Triggers: load, unload | |
| # CHECK: Commands: | |
| # CHECK: script print('load+unload') | |
| # Add a hook with multiple one-liner commands. | |
| target hook add -L -o "script print('first')" -o "script print('second')" | |
| # CHECK: Hook #6 added. | |
| target hook list | |
| # CHECK: Hook: 6 | |
| # CHECK: State: enabled | |
| # CHECK: Triggers: load | |
| # CHECK: Commands: | |
| # CHECK: script print('first') | |
| # CHECK: script print('second') | |
| # Disable all hooks. | |
| target hook disable | |
| target hook list | |
| # CHECK: (lldb) target hook list | |
| # CHECK: Hook: 5 | |
| # CHECK: State: disabled | |
| # CHECK: Hook: 6 | |
| # CHECK: State: disabled | |
| # Enable all hooks. | |
| target hook enable | |
| target hook list | |
| # CHECK: (lldb) target hook list | |
| # CHECK: Hook: 5 | |
| # CHECK: State: enabled | |
| # CHECK: Hook: 6 | |
| # CHECK: State: enabled | |
| # Add a hook with --on-stop only. | |
| target hook delete | |
| target hook add -S -o "bt" | |
| # CHECK: Hook #7 added. | |
| target hook list | |
| # CHECK: (lldb) target hook list | |
| # CHECK: Hook: 7 | |
| # CHECK: State: enabled | |
| # CHECK: Triggers: stop | |
| # CHECK: Commands: | |
| # CHECK: bt | |
| # Add a hook with all triggers. | |
| target hook add -L -u -S -o "script print('all events')" | |
| # CHECK: Hook #8 added. | |
| target hook list | |
| # CHECK: Hook: 8 | |
| # CHECK: State: enabled | |
| # CHECK: Triggers: load, unload, stop | |
| # Add a hook with --on-stop and inline filter. | |
| target hook delete | |
| target hook add -S -s mylib.so -o "bt" | |
| # CHECK: Hook #9 added. | |
| target hook list | |
| # CHECK: (lldb) target hook list | |
| # CHECK: Hook: 9 | |
| # CHECK: State: enabled | |
| # CHECK: Triggers: stop | |
| # CHECK: Commands: | |
| # CHECK: bt | |
| # CHECK: Specifier: | |
| # CHECK: Module: mylib.so | |
| # Per-trigger disable: remove stop from hook #9 using modify. | |
| target hook modify --disable-trigger stop 9 | |
| target hook list | |
| # CHECK: (lldb) target hook list | |
| # CHECK: Hook: 9 | |
| # CHECK: State: enabled | |
| # CHECK-NOT: Triggers: stop | |
| # CHECK: Commands: | |
| # Per-trigger enable: re-add stop to hook #9 using modify. | |
| target hook modify --enable-trigger stop 9 | |
| target hook list | |
| # CHECK: (lldb) target hook list | |
| # CHECK: Hook: 9 | |
| # CHECK: State: enabled | |
| # CHECK: Triggers: stop |