config/debug/gdb.in.cross
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Dec 13 23:32:39 2011 +0100 (2011-12-13)
branch1.13
changeset 2847 c0bf2319af08
parent 2703 bd2529ef6665
child 2784 258160822e35
permissions -rw-r--r--
scripts: fix dumping execution backtrace

Dumping the backtrace has been broken since changeset #652e56d6d35a:
scripts: execute each steps in a subshell

We can spawn sub-sub-shells in some cases.

The way the fault handler works is to dump the backtrace, but to avoid
printing it once for every sub-shell (which could get quite confusing),
it simply exits when it detects that it is being run in a sub-shell,
leaving to the top-level shell the work to dump the backtrace.

Because each step is executed in its own sub-shell, the variable arrays
that contain the step name, the source file and line number, are lost
when exiting the per-step sub-shell.

Hence, the backtrace is currently limited to printing only the top-level
main procedure of the shell.

Fix this thus:
- when dumping the bckatraces for the steps & the functions, remember
it was dumped, and only dump it if it was not already dumped
- at the top-level shell, print the hints

Also, rename the top-level step label.

Reported-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
(transplanted from 4193d6e6a17430a177fa88c287879c2c35e319f3)
     1 # Menu for the cross GDB
     2 
     3 config STATIC_TOOLCHAIN
     4     select GDB_CROSS_STATIC if GDB_CROSS
     5 
     6 config GDB_CROSS
     7     bool
     8     prompt "Cross-gdb"
     9     default y
    10     select GDB_GDBSERVER if ! BARE_METAL
    11     help
    12       Build and install a cross-gdb for the target, to run on host.
    13 
    14 if GDB_CROSS
    15 
    16 config GDB_CROSS_STATIC
    17     bool
    18     prompt "Build a static cross gdb"
    19     select WANTS_STATIC_LINK
    20     help
    21       A static cross gdb can be usefull if you debug on a machine that is
    22       not the one that is used to compile the toolchain.
    23       
    24       That way, you can share the cross-gdb without installing a toolchain
    25       on every machine that will be used to debug target programs.
    26 
    27 config GDB_CROSS_PYTHON
    28     bool
    29     prompt "Enable python scripting"
    30     depends on ! GDB_CROSS_STATIC
    31     default y
    32     help
    33       Say 'y' if you want to use Python scripting inside gdb.
    34       Say 'n' if you do not want to.
    35       
    36       Beware that enabling Python scripting could render the gdb
    37       executable non-functional if you move it to another machine.
    38       Building a static gdb can help in this regard, although there
    39       have been reports of problems when linking gdb to the static
    40       libpython.a. This should be fixed in gdb >=7.3. YMMV.
    41       
    42 endif # GDB_CROSS