ashgti wrote:

> Summarizing the problem to make sure I understand: with the new launch/attach 
> flow, we set the breakpoints in the dummy target before the actual target is 
> created. If the target is created through launch commands, we're calling 
> SetTarget with the currently selected target after we're done running the 
> launch commands. By that time, we may have already missed events belong to 
> the new target.
> 
> With this PR, we mimic what the default event handler does, which is listen 
> to all target events. I think the problem with this approach is that now 
> we're going to be broadcasting events for targets that are not the focus of 
> the current debug session (i.e. the selected target). It should be easy to 
> verify this by running a script that creates a second target and seeing if we 
> now broadcast the events. If my theory is correct, then we would have to 
> filter events not belonging to the selected target.

I had thought about also including a check on the target to see if it was the 
`DAP.target`, but again during launch or attach commands we may not know which 
target we need to focus on yet.

> Interestingly, I was thinking about multi-target/multi-process support in DAP 
> earlier this week. I had someone reach out to ask questions about this. I'll 
> file an issue to track this, but we should keep that use case in mind as we 
> design this.

We do support the `startDebugging` reverse request 
https://microsoft.github.io/debug-adapter-protocol/specification#Reverse_Requests_StartDebugging.
 I use this to attach to multiple processes when tests are running from some 
scripts that involve multiple processes. I use the script hook we have 
https://github.com/llvm/llvm-project/blob/680b3b742da02972bc0b5298b6f472d2b95ca90a/lldb/tools/lldb-dap/DAP.h#L135
 to call this from a python script. With the lldb-dap server mode we can handle 
multiple DAP sessions from the same binary, or you can have lldb-dap launch one 
instance per debug session. The DAP doesn't really have a way to have multiple 
processes per debug session, but it does allow for multiple debug sessions in 
general. Compound launch configurations are one way to get this setup 
https://code.visualstudio.com/docs/debugtest/debugging-configuration#_compound-launch-configurations
 for example, you could have a server and a client in a compound launch 
configuration. 

https://github.com/llvm/llvm-project/pull/140142
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to