你需要的GDB设置是set backtrace past-main on:
回溯将继续经过用户入口点。
(gdb) set backtrace past-main on
(gdb) start
(gdb) bt
#0 main (argc=argc@entry=1, argv=argv@entry=0x7ffffffee1a8) at hoist.c:7
#1 0x00007fffff0802e1 in __libc_start_main (main=0x8000580 <main>, argc=1, argv=0x7ffffffee1a8, init=<optimized out>,
fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffffffee198) at ../csu/libc-start.c:291
#2 0x000000000800069a in _start ()
(gdb) fr 1
#1 0x00007fffff0802e1 in __libc_start_main (main=0x8000580 <main>, argc=1, argv=0x7ffffffee1a8, init=<optimized out>,
fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffffffee198) at ../csu/libc-start.c:291
291 ../csu/libc-start.c: No such file or directory.
按照GDB complaining about missing raise.c
中所述安装glibc 源代码后:
(gdb) fr 1
#1 0x00007fffff0802e1 in __libc_start_main (main=0x8000580 <main>, argc=1, argv=0x7ffffffee1a8, init=<optimized out>,
fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffffffee198) at ../csu/libc-start.c:291
291 result = main (argc, argv, __environ MAIN_AUXVEC_PARAM);