config/debug/ltrace.in
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 2444 896cb0d36c1a
child 3142 6569f6a9060c
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 # ltrace
     2 
     3 ## depends on ! BACKEND
     4 ##
     5 ## select LIBELF_TARGET
     6 ##
     7 ## help ltrace is a program that simply runs the specified command until it exits.
     8 ## help It intercepts and records the dynamic library calls which are called by
     9 ## help the executed process and the signals which are received by that process.
    10 ## help It can also intercept and print the system calls executed by the program.
    11 
    12 choice
    13     bool
    14     prompt "ltrace version"
    15 # Don't remove next line
    16 # CT_INSERT_VERSION_BELOW
    17 
    18 config LTRACE_V_0_5_3
    19     bool
    20     prompt "0.5.3"
    21     select LTRACE_0_5_3_or_later
    22 
    23 config LTRACE_V_0_5_2
    24     bool
    25     prompt "0.5.2"
    26 
    27 config LTRACE_V_0_5
    28     bool
    29     prompt "0.5 (OBSOLETE)"
    30     depends on OBSOLETE
    31 
    32 config LTRACE_V_0_4
    33     bool
    34     prompt "0.4 (OBSOLETE)"
    35     depends on OBSOLETE
    36 
    37 endchoice
    38 
    39 config LTRACE_VERSION
    40     string
    41 # Don't remove next line
    42 # CT_INSERT_VERSION_STRING_BELOW
    43     default "0.5.3" if LTRACE_V_0_5_3
    44     default "0.5.2" if LTRACE_V_0_5_2
    45     default "0.5.1" if LTRACE_V_0_5_1
    46     default "0.5" if LTRACE_V_0_5
    47     default "0.4" if LTRACE_V_0_4
    48 
    49 config LTRACE_0_5_3_or_later
    50     bool