更快地使用 GDB 分析核心转储
Faster using of GDB to analyze core dump
我需要在段错误后检查堆栈跟踪。加载符号大约需要 10 分钟。
当我尝试检查 coredump (gdb <program> -c <core>
) 时,我得到:warning: core file may not match specified executable file.
然后堆栈跟踪是:
(gdb) bt
#0 0x00007f96eab3d72a in ?? ()
#1 0x00007f96ec846239 in ?? ()
#2 0x0000000000006b04 in ?? ()
#3 0x00007fff64076500 in ?? ()
#4 0x00007fff64076570 in ?? ()
#5 0x00007f96ec846192 in ?? ()
#6 0x00007f96ba5144e0 in ?? ()
#7 0x0000000000549fa0 in ?? ()
#8 0x0000000000549fa8 in ?? ()
#9 0x0000000000549fa8 in ?? ()
#10 0x0000000000549fa8 in ?? ()
#11 0x0000000000000000 in ?? ()
段错误后是否可以加速检查堆栈跟踪?
Loading symbols remain about 10 minutes.
大概是因为 "symbols" 包含完整的调试信息。
您没有说明要分析核心转储的内容。一个通常的要求是简单地确定核心转储发生在哪个函数中,that 只需要符号 table,而不是完整的调试信息。
因此,您想要的可能是:
cp a.out-full-debug a.out-symbols-only
strip -g a.out-symbols-only
# Symbol loading should be much quicker
gdb ./a.out-symbols-only ./core
显然,对于任何给定的构建,您只需要 运行 strip
一次。
你也没说你用的是哪个compiler/OS。如果我们假设使用最新版本的 GCC 或 Clang,您还可以使用 separate debug info files, and -gsplit-dwarf -gdwarf-4
flags. See this answer.
显着加快 GDB 符号加载速度
我需要在段错误后检查堆栈跟踪。加载符号大约需要 10 分钟。
当我尝试检查 coredump (gdb <program> -c <core>
) 时,我得到:warning: core file may not match specified executable file.
然后堆栈跟踪是:
(gdb) bt
#0 0x00007f96eab3d72a in ?? ()
#1 0x00007f96ec846239 in ?? ()
#2 0x0000000000006b04 in ?? ()
#3 0x00007fff64076500 in ?? ()
#4 0x00007fff64076570 in ?? ()
#5 0x00007f96ec846192 in ?? ()
#6 0x00007f96ba5144e0 in ?? ()
#7 0x0000000000549fa0 in ?? ()
#8 0x0000000000549fa8 in ?? ()
#9 0x0000000000549fa8 in ?? ()
#10 0x0000000000549fa8 in ?? ()
#11 0x0000000000000000 in ?? ()
段错误后是否可以加速检查堆栈跟踪?
Loading symbols remain about 10 minutes.
大概是因为 "symbols" 包含完整的调试信息。
您没有说明要分析核心转储的内容。一个通常的要求是简单地确定核心转储发生在哪个函数中,that 只需要符号 table,而不是完整的调试信息。
因此,您想要的可能是:
cp a.out-full-debug a.out-symbols-only
strip -g a.out-symbols-only
# Symbol loading should be much quicker
gdb ./a.out-symbols-only ./core
显然,对于任何给定的构建,您只需要 运行 strip
一次。
你也没说你用的是哪个compiler/OS。如果我们假设使用最新版本的 GCC 或 Clang,您还可以使用 separate debug info files, and -gsplit-dwarf -gdwarf-4
flags. See this answer.