Re: MI and modifying register value
Tom Tromey <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <[email protected]> |
>>>>> "Jan" == Jan Vrany via Gdb <[email protected]> writes: Jan> 1) There's an MI command to set register value: -data-write-register-values Jan> This command is not documented and looking at the code, seems to be somewhat Jan> half-implemented - does not use <format> parameter its comment mentions and Jan> only works for frame 0 (but using --frame 1 does not result in an error, Jan> it just silently changes value in frame 0). Jan> Is this command some leftover that should not be used (but kept for some Jan> old clients)? Or is it something to fix? It's very old and seems to have landed without tests or documentation. I think the addition of 'format' here must be some kind of copy-paste bug. I can't imagine how it would be useful. However, in the spirit of API conservatism I think it should just be left untouched -- we can just document that it's a mistake and clients can send whatever they like for this argument. Fixing the frame bug seems completely fine to me. Jan> 2) Another way to change register value is CLI command `set r4 = 0x4`. There's Jan> no mechanism the MI client gets notified about the change - there's no =register-changed Jan> async event. Surely it must be "set $r4 = 0x4" -- the "$" should be needed I think. Jan> Is this by purpose? I'd expect some kind of notification, just like there's =memory-changed Jan> event. Also, in Python API, there's memory_ckanged event which get triggered when Jan> using `set` to modify register. There's the weird "-data-list-changed-registers" command. It doesn't really documented "changed since what", but it seems to be "since last time this was called". There's a static local variable in the implementation :-( I do see there is a "register_changed" observable, so implementing the notification seems relatively easy. This observable seems to only track changes made by the user, though. Tom