Re: python API to trigger a "select-frame" like event with a given location
Simon Sobisch via Gdb <[email protected]> Tue, 30 Sep 2025 18:41:32 +0200
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <[email protected]> |
Am 30.09.2025 um 17:30 schrieb Andrew Burgess: > Simon Sobisch via Gdb <[email protected]> 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