[fpc-devel] Status of debug line info
Sergio Flores
relfos at gmail.com
Tue Jun 23 15:22:14 CEST 2015
I was trying to get lineinfo to work in the crash reporter since I've seen
some comercial games doing the same (reporting a stack dump with
lines/filename.cpp).
The problem with gathering just addresses is that they change with every
build (and I ship daily builds).
Anyway I could try that, but I still need the base address, and I have
no
clue how to obtain that in FPC.
Is there any easy way to find it?
Probably reading it from /proc/pid/maps in unix platforms could work...
Another question, I thought about a idea for platform independent way to
support line info.
Could the compiler generate a internal table/array that mapped all
functions addresses to strings?
Let's say a additional-Gsomething flag is added for this, then a
special
internal function would be generated, and called at run-time, before
units
initialization. The function would just build a huge table of adress
associations, like this.
- Ignored:
procedure init_debuginfo();
begin
register_debug_address(@unitX_funcA, 'unitX', 'funcA');
register_debug_address(@unitX_funcB, 'unitX', 'funcB');
register_debug_address(@unitY_funcA, 'unitY', 'funcA');
// all other functions/methods/procedures in the whole program ...
end;
Probably not as simple of that, it might need more info (range of the
functions address, not just starting point).
Then calling BackTraceStrFunc() would look up the address using the
table
built before.
Even though this would just be useful to print routine names and not
lines,
would this work?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20150623/abbb8b3a/attachment.html>
More information about the fpc-devel
mailing list