1 ------------------------------------------------------------------------------
3 -- GNAT RUN-TIME COMPONENTS --
5 -- S Y S T E M . T R A C E B A C K . S Y M B O L I C --
9 -- Copyright (C) 1999-2015, AdaCore --
11 -- GNAT is free software; you can redistribute it and/or modify it under --
12 -- terms of the GNU General Public License as published by the Free Soft- --
13 -- ware Foundation; either version 3, or (at your option) any later ver- --
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
16 -- or FITNESS FOR A PARTICULAR PURPOSE. --
18 -- As a special exception under Section 7 of GPL version 3, you are granted --
19 -- additional permissions described in the GCC Runtime Library Exception, --
20 -- version 3.1, as published by the Free Software Foundation. --
22 -- You should have received a copy of the GNU General Public License and --
23 -- a copy of the GCC Runtime Library Exception along with this program; --
24 -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
25 -- <http://www.gnu.org/licenses/>. --
27 -- GNAT was originally developed by the GNAT team at New York University. --
28 -- Extensive contributions were provided by Ada Core Technologies Inc. --
30 ------------------------------------------------------------------------------
32 -- Run-time symbolic traceback support
34 -- The routines provided in this package assume that your application has
35 -- been compiled with debugging information turned on, since this information
36 -- is used to build a symbolic traceback.
38 -- If you want to retrieve tracebacks from exception occurrences, it is also
39 -- necessary to invoke the binder with -E switch. Please refer to the gnatbind
40 -- documentation for more information.
42 -- Note that it is also possible (and often recommended) to compute symbolic
43 -- traceback outside the program execution, which in addition allows you
44 -- to distribute the executable with no debug info:
46 -- - build your executable with debug info
47 -- - archive this executable
48 -- - strip a copy of the executable and distribute/deploy this version
49 -- - at run time, compute absolute traceback (-bargs -E) from your
50 -- executable and log it using Ada.Exceptions.Exception_Information
51 -- - off line, compute the symbolic traceback using the executable archived
52 -- with debug info and addr2line or gdb (using info line *<addr>) on the
53 -- absolute addresses logged by your application.
55 -- In order to retrieve symbolic information, functions in this package will
56 -- read on disk all the debug information of the executable file (found via
57 -- Argument (0), and looked in the PATH if needed) or shared libraries using
58 -- OS facilities, and load them in memory, causing a significant cpu and
61 -- On platforms where the full capability is not supported, function
62 -- Symbolic_Traceback return a list of addresses expressed as "0x..."
63 -- separated by line feed.
66 -- We must turn polling off for this unit, because otherwise we can get
67 -- elaboration circularities when polling is turned on.
71 package System
.Traceback
.Symbolic
is
72 pragma Elaborate_Body
;
74 function Symbolic_Traceback
75 (Traceback
: System
.Traceback_Entries
.Tracebacks_Array
) return String;
76 -- Build a string containing a symbolic traceback of the given call chain.
77 -- Note: This procedure may be installed by Set_Trace_Decorator, to get a
78 -- symbolic traceback on all exceptions raised (see
79 -- System.Exception_Traces).
81 function Symbolic_Traceback
82 (E
: Ada
.Exceptions
.Exception_Occurrence
) return String;
83 -- Build string containing symbolic traceback of given exception occurrence
85 end System
.Traceback
.Symbolic
;