ada and gdb
Bud Davis
bdavis9659@sbcglobal.net
Fri Nov 20 21:46:00 GMT 2009
I posted this question almost a month ago on the gdb mailing list with
no replies. {this isn't a complaint, just so you know I did try that
avenue).
Does anyone have a hint from gcc world ?
thanks,
bud davis
Hello,
I am attempting to use gdb to debug some ada code. My goal is to set a
catchpoint when an exception is raised.
Below is a small example (except for b.ads, which is trivial to create).
The example does nothing other than raise a range_error or explicitly
call an exception.
Using gcc-3.4.6 for the compiler, and gdb-6.8 for gdb.
I looked at gdb source, and here is the pertinent comment for the error
message:
/* At this point, we know that we are debugging an Ada program and
that the inferior has been started, but we still are not able to
find the run-time symbols. That can mean that we are in
configurable run time mode, or that a-except as been optimized
out by the linker... In any case, at this point it is not worth
supporting this feature. */
So, evidently I am compiling this wrong or linking it in a way which is
not supported by gdb.
Any ideas ?
Thanks,
Bud Davis
$ cat try.adb
with text_io;
use text_io;
with b;
procedure try is
begin
for I in 0..10000 loop
b.run;
end loop;
exception
when others=>
text_io.put_line("in handler");
raise;
end;
$ cat b.adb
with text_io;
use text_io;
package body b is
i:natural:=1;
procedure run is
begin
i:=i - 1;
raise program_error;
end run;
end b;
$ rm try *.o
$ gnatmake -g try
gcc -c -g try.adb
gcc -c -g b.adb
gnatbind -x try.ali
gnatlink try.ali -g
$ gdb try
GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show
copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
(gdb) break main
Breakpoint 1 at 0x80494e5: file b~try.adb, line 132.
(gdb) run
Starting program: /home/users/td24812/aio/try
Breakpoint 1, main (argc=1, argv=(system.address) 0xbfef12f4,
envp=(system.address) 0xbfef12fc) at b~try.adb:132
132 Ensure_Reference : System.Address :=
Ada_Main_Program_Name'Address;
(gdb) catch exception
Cannot insert catchpoints in this configuration.
(gdb)
-------------------------------------------------
* "Consistently separating words by spaces became a general custom about the tenth century A.D., and lasted until about 1957, when FORTRAN abandoned the practice." —Sun FORTRAN Reference Manual
More information about the Gcc-help
mailing list