clayborg added a comment.
In D93895#2480578 <https://reviews.llvm.org/D93895#2480578>, @augusto2112 wrote:
> I think I get your point. If we pass the extra options in the packet, the
> validation on older lldb-server versions will reject the message.
>
>> Another option would be to have lldb-server check for environment variables
>> for default values for --waitfor-interval and --waitfor-duration. If they
>> are set, they become the new default values. Of course a user can launch the
>> lldb-server manually with the options set a different way and then attach
>> with "process connect ..." if required. But this would provide an alternate
>> way for users to control the polling and timeout.
>
> I'll defer to you guys, since you're a lot more knowledgeable on lldb than I
> am :)
>
> I do have another possible solution we could consider: can we create a new
> message, similar to `qVAttachOrWaitSupported`, that queries if these extra
> options are supported or not. Something like
> `qVAttachWaitExtraOptionsSupported`. We might even consider returning
> something akin to a "version number", so if we support more options in the
> future we can bump up the number.
>
> Let me know what you think (again, I'm fine doing it either way).
Yeah, I was thinking it might be nice to have a better attach + wait packet.
We have added new JSON packets in the past that are more flexible and allows us
to specify arguments using a JSON dictionary. Currently the vAttachWait or
vAttachOrWait packets have a hard coded single process name argument that is
appended as hex ASCII so for "a.out":
vAttachWait:612E6F7574
vAttachOrWait:612E6F7574
But we could make a new "jAttachWait" that could be something like:
jAttachWait:{"executable":"a.out", "waitfor-interval-usec": 1000,
"waitfor-duration-sec": 20}
Then the question becomes where the values for "waitfor-interval-usec" and
"waitfor-duration-sec" come from. Since "process attach" has to work for any
process plug-in (there are many in "lldb/source/Plugins/Process"), if we add
any options to "process attach", each of the plug-ins in
"lldb/source/Plugins/Process" would need to handle those options. It might be
better to add new settings for the GDB remote plug-in (AKA: ProcessGDBRemote).
There are global settings already for this plug-in:
(lldb) settings show
...
plugin.process.gdb-remote.packet-timeout (unsigned) = 5
plugin.process.gdb-remote.target-definition-file (file) =
plugin.process.gdb-remote.use-g-packet-for-reading (boolean) = false
plugin.process.gdb-remote.use-libraries-svr4 (boolean) = true
We would easily add new settings to
lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteProperties.td:
plugin.process.gdb-remote.waitfor-interval-usec (unsigned) = 1000
plugin.process.gdb-remote.waitfor-duration-sec (unsigned) = 20
And then use these in the new JSON packet as arguments.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D93895/new/
https://reviews.llvm.org/D93895
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits