Is it possible to "inject" into the stack or show non-stack entries via frame decorator api?

Simon Sobisch simonsobisch@gnu.org
Thu Jun 24 22:24:39 GMT 2021


Scenario:

the current call-stack currently looks like

#0 func3
#1 func3_wrapper
#2 func2
#3 func2_wrapper
#4 func1
#5 func1_wrapper
#6 main


Using frame filters it is no problem to change that to either

#0 func3
#2 func2
#4 func1

or

#0 func3
    #1 func3_wrapper
#2 func2
    #3 func2_wrapper
#4 func1
    #5 func1_wrapper
#6 main


Question: Is it possibly to also add a "virtual" stack entry (one could 
select/up/down to), or at least show it in the backtrace?

Something like the following:

#0 func3 at ...
    #0.1  func3_part_a at ...
    #0.2  func3_part_c at ...
    #0.3  func3_part_b at ...
    #0.4  func3_part_a at ...
    #0.5  func3_start at ...
#2 func2 at ...


Background:
Each of those "func" entries in the stack have an internal frame 
handling using a linked list that contains label address pointers. It 
would be very cool to list those directly (currently only done with 
additional commands local-backtrace and list-local-frame which I'd like 
to drop).

I _guess_ adding those to the shown stack may be possible, but likely 
only with telling GDB about those (patching GDB), but maybe there's a 
way to at least print those with their positions in "bt" using a frame 
decorator?

Thanks for answers,
Simon




More information about the Gdb mailing list