This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: back trace issue


Hi Joel,
I identified the function init_extraframe_info [..]-tdep.c file. I made frame_info **prev* to point to previous frame and it is displaying all the frame.....
but it is working only when we start the program from main (i.e when we break at main)...
suppose if we break at some function XYZ called by main then it is not working...
Is there any other file where we should provide this *prev* information......


Thanks,
Nagaraju


Joel Brobecker wrote:
can you please suggest me where to provide the information to gdb so that "back trace" works properly.....

Typically, the [...]-tdep file for your architecture will provide a set of routines that compute the value of a register in the caller's frame (aka the "previous" frame) given a struct frame_info and and its associated frame cache. Have a look at some of the -tdep.c files, and search for "_prev_register", or "_this_id". That should give you a few leads. I'll also mention that there is a new module in prologue-value.[hc] that can simplify your job when doing prologue analysis. I am mentioning it because it's relatively use a still little used.

Also, if your target supports DWARF, you might also want to see if
the they produce CFI info, in which case a DWARF-based unwinder would
be able to compute your backtrace without requiring the prologue
analyzer. I can't remember the names of the routines but you'll need
to provide a gdbarch routine that converts a dwarf register number
into the associated GDB register number. And then hook in the dwarf
unwinder sniffers: dwarf2_append_unwinders. Again, have a look at
the various -tdep files.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]