Fabio Giovagnini wrote:
Thanks for the answer.
I go deeper in my thought so that maybe you can give me more infos about how I
have to investagte about gcc/gdb
We are developers of embedded software on board designed and build by us;
Generally we use 16 bit cisc and 32 bits risc cpu (Renesas h8/h8s; sh 2 / 3 ).
We write applications for automotive enviroment mainly.
We write the code using c/c++ and we compile using gcc.
Because of we do not have much memory (ram and flash) we develop in the
following way: each software we write has the same communication protocol
running on RS232 or over TCP/IP and we have a simple monitoring progarm able
to show the contents of the memory addresses in some format (char, int, long,
signed unsigned, strings, ecc).
It sounds like you are recreating the functionality in the gdb remote.
Generally we declare a global variable, we write a debug value into it and
during the run time we read at the right moment the content of such a
variable.
Good.
For avoiding to read by hand .map file produced by ld, I developed a flex /
bison simple analizer able to extract from .map file the address of a symbol.
So into my tool I load the .map file and I write the name of the variable and
I can read the content of it.
This way of working becomes very hard if I use struct and union in c and
classes in c++; I should know the offeset of each field of the struct so
addind it to the base address known from the .map file, for each istance of
such a struct I coud write "mysrtuct.myfield" into my tool, and, calculating
the rigth address, my protocol could ask the target to read/write the content
at that address.
Yes, developing a debugger it quite time-consuming and difficult. That is
essentially what you appear to be doing.
I prefer to avoid -g option because of my memory is never enough; but a good
compromise cound be if I could compile the debug infos into sections I could
remove after used by gdb for giving me the informations about the offset of
each field. Is it possible?
Why is the size of your target memory an issue? Are you trying to run
the debugger on the target?
In most cross-development environments, the debugger (gdb) runs on
a host system and only a small portion of code (gdb remote) runs on
the target. The size of your target's memory doesn't affect the host.
Where can I read more about to use gdb for embedded development with very poor
uControllers?
Try "info gdb" as a start.
--
Michael Eager [EMAIL PROTECTED]
1960 Park Blvd., Palo Alto, CA 94306 650-325-8077