python API to trigger a "select-frame" like event with a given location
Simon Sobisch
simonsobisch@gnu.org
Tue Sep 30 16:41:32 GMT 2025
Am 30.09.2025 um 17:30 schrieb Andrew Burgess:
> Simon Sobisch via Gdb <gdb@sourceware.org> writes:
>
>> using a frame filter and decorator I can drop "not interesting" frames
>> and add "artificial - display only" ones:
>>
>>
>> Instead of
>>
>> (gdb) backtrace
>>
>> #0 PROG2_ (...) at copybook.cpy:14
>> #1 PROG2 (...) at progb.cob:127
>> #2 PROG1_ (...) at init.cpy:21
>> #3 PROG1 (...) at prog.cob:139
>> #4 main (...) at prog.c:23223
>>
>> I can show (combined with
>>
>> (gdb) mybacktrace
>>
>> #0 PROG2_ (...) at copybook.cpy:14
>> #0.0 COPYFUNC SECTION at copybook.cpy:14
>> #0.1 PROGFIN SECTION at progb.cob:521
>> #0.2 PROGMAIN SECTION at progb.cob:195
>> #0.3 PROG2 at progb.cob:127
>> #2 PROG1_ (...) at init.cpy:21
>> #2.0 PROG-INIT-EXT SECTION at init.cpy:21
>> #2.1 PROG-INIT SECTION at init.cpy:41
>> #2.2 MAIN-000 SECTION at proga.cob:139
>> #2.3 PROG1 at proga.cob:139
>>
>>
>> Also there's the option to add myup and mydown commands which select the
>> "expected" frame (0 and 2, in this example) where all the relevant
>> variables are defined.
>>
>>
>> But currently I see no way to programmatically "select" by location
>> (frame + linespec/LOCATION) [which would, other than "list" also be
>> passed to UIs/MI).
>>
>> Is there an option that I've overlooked?
>>
>>
>> If not: could there be an extension to "select-frame level"
>>
>> select-frame level LOCATION
>>
>> select-frame level -- Select a stack frame by level and show LOCATION in
>> the UI
>>
>> or a new command
>>
>> show-location LOCATION
>>
>> that executes what select-frame does, but _without_ selecting anything
>> (calling interps_notify() with the location as "selection")?
>
> If I understand what you need, then you are looking for way to implement
> your 'myup' and 'mydown' commands such that GDB will appear to move
> though the artificial frames (e.g. 0.0, 0.1, 0.2, 0.3, etc). To do this
> you need to select the real frame (#0), but then want some way such that
> GDB will notify the various UI's to indicate that their focus should
> shift to the source locations corresponding to the artificial frames,
> right?
Exactly
> You mention, but seem to dismiss, using 'list'. Can you expand on why
> this doesn't meet your needs?
Because "list" sends no events, so registered mi clients (Emacs, vim,
fancy-ide-of-your-choice) have no info on that.
> Which UIs in particular is it that you are interested in seeing update?
> I ask because I'm wondering which events it is that would need to be
> emitted. Could you expand with some user stories, which UI is the user
> looking at, what actions do they perform, and what is updated as a
> consequence.
Likely "list" will also not apply to TUI's assembly window, which
handles "up" and "down" just fine - so that would be another one.
> Thanks,
> Andrew
Thanks for taking the time to read and answer in the first place!
Simon
More information about the Gdb
mailing list