The don't currently work (and they're also not particularly useful, since all of the remote stuff happens inside lldb). This saves us from annotating tests one by one.
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
"""
|
|
Test stop hooks
|
|
"""
|
|
|
|
|
|
from lldbsuite.test.decorators import *
|
|
from lldbsuite.test.lldbtest import *
|
|
import lldbdap_testcase
|
|
|
|
|
|
class TestDAP_stop_hooks(lldbdap_testcase.DAPTestCaseBase):
|
|
def test_stop_hooks_before_run(self):
|
|
"""
|
|
Test that there is no race condition between lldb-dap and
|
|
stop hooks executor
|
|
"""
|
|
program = self.getBuildArtifact("a.out")
|
|
preRunCommands = ["target stop-hook add -o help"]
|
|
self.build_and_launch(program, stopOnEntry=True, preRunCommands=preRunCommands)
|
|
|
|
# The first stop is on entry.
|
|
self.continue_to_next_stop()
|
|
|
|
breakpoint_ids = self.set_function_breakpoints(["main"])
|
|
# This request hangs if the race happens, because, in that case, the
|
|
# command interpreter is in synchronous mode while lldb-dap expects
|
|
# it to be in asynchronous mode, so, the process doesn't send the stop
|
|
# event to "lldb.Debugger" listener (which is monitored by lldb-dap).
|
|
self.continue_to_breakpoints(breakpoint_ids)
|
|
|
|
self.continue_to_exit()
|