Re: How to use -list-target-features MI command

Pedro Alves <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
On 04/23/2018 02:28 AM, Simon Marchi wrote:
> On 2018-04-09 10:22, Jan Vrany wrote:
>> I need to know (in advance) whether the target supports async
>> mode or not.
>> I know that -list-target-features can be used for that, but
>> not sure when and how to use -list-target-features.
>>
>> The documentation says:
>>
>> "Whenever a target can change, due to commands such as -target-select,
>> -target-attach or -exec-run, the list of target features may change,
>> and the frontend should obtain it again."
>>
>> However, once I issue `-exec-run` using a target with no async mode
>> support, I will not get the result of -list-target-feature before
>> debugee stops.
> 
> I think that's kind of expected.  If the run target does not support mi-async, GDB can't parse and reply to MI commands while the target is executing.  GDB reads and replies to your -list-target-features only when the target stops.
> 
> One way to hack around it would be to use for example the new "starti" command, which breaks at (before?) the first instruction of the program, issue -list-target-features, and then continue.  There might be some better/cleaner solution, but that's what comes to mind right now.

IMO the clean solution is to connect to the native target
explicitly, with "-target-select native", before -exec-run,
instead of letting -exec-run automatically connect to
the native target if not connected to any other target yet.

 -gdb-set mi-async on
 ^done
 (gdb) 
 -target-select native
 ^connected
 (gdb) 
 -list-target-features
 ^done,features=["async"]
 (gdb) 
 -exec-run ...

I'd also suggest that frontends consider using 
  "set auto-connect-native-target off"
https://sourceware.org/gdb/onlinedocs/gdb/Starting.html

Thanks,
Pedro Alves
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.