ilya-nozhkin added a comment.
In D119548#3321357 <https://reviews.llvm.org/D119548#3321357>, @jingham wrote:
> SBTarget.Launch calls Target::Launch. That sets up a hijacker for the "stop
> at the first instruction" event regardless of the Sync mode.
The problem that it sets up this hijacker too late. See this part of the log
(lines starting with // are my comments):
// The process has been launched successfully, its internal hijacker is
removed.
0x000002875FCB1AE0 Broadcaster("lldb.process")::RestoreBroadcaster (about to
pop listener("LaunchEventHijack")=0x000002875FFCF890)
Process::SetPublicState (state = stopped, restarted = 0)
Process::SetPublicState (stopped) -- unlocking run lock
Process::lldb_private::Process::StartPrivateStateThread() starting private
state thread
// Some internal magic happens inside the private state thread.
Process::lldb_private::Process::ControlPrivateStateThread (signal = 4)
Sending control event of type: 4.
0000028760372F90
Broadcaster("lldb.process.internal_state_control_broadcaster")::BroadcastEvent
(event_sp = {0000028760571460 Event: broadcaster = 000002876047C4C0
(lldb.process.internal_state_control_broadcaster), type = 0x00000004
(control-resume), data = {Generic Event Data}}, unique =0) hijack =
0000000000000000
000002875FFD00D0 Listener('lldb.process.internal_state_listener')::AddEvent
(event_sp = {0000028760571460})
Process::lldb_private::Process::RunPrivateStateThread (arg =
000002876047C350, pid = 9944) thread starting...
timeout = <infinite>, event_sp)...
this = 0x000002875FFD00D0, timeout = <infinite> for
lldb.process.internal_state_listener
000002875FFD00D0 'lldb.process.internal_state_listener'
Listener::FindNextEventInternal(broadcaster=000002876047C4C0,
broadcaster_names=0000000000000000[0], event_type_mask=0x00000000, remove=1)
event 0000028760571460
Process::lldb_private::Process::RunPrivateStateThread (arg =
000002876047C350, pid = 9944) got a control event: 4
000002875FFCF5D0 Listener::StartListeningForEvents (broadcaster =
000002876047C9C8, mask = 0x00000020) acquired_mask = 0x00000020 for
Communication::SyncronizeWithReadThread
timeout = <infinite>, event_sp)...
this = 0x000002875FFD00D0, timeout = <infinite> for
lldb.process.internal_state_listener
Process::ShouldBroadcastEvent (00000287604D4CB0) => new state: stopped, last
broadcast state: stopped - YES
Process::lldb_private::Process::HandlePrivateEvent (pid = 9944) broadcasting
new state stopped (old state stopped) to public
// Process broadcasts the stop event.
000002875FCB1AE0 Broadcaster("lldb.process")::BroadcastEvent (event_sp =
{00000287604D4CB0 Event: broadcaster = 000002876047C378 (lldb.process), type =
0x00000001 (state-changed), data = { process = 000002876047C350 (pid = 9944),
state = stopped}}, unique =0) hijack = 0000000000000000
// It is catched by "lldb.Debugger"!
000002875DB0BD40 Listener('lldb.Debugger')::AddEvent (event_sp =
{00000287604D4CB0})
// And only now the target adds its hijacking listener!
0x000002875FCB1AE0 Broadcaster("lldb.process")::HijackBroadcaster
(listener("lldb.Target.Launch.hijack")=0x000002875FFCFE10)
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D119548/new/
https://reviews.llvm.org/D119548
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits