Linux下使用GDB生成core file文件并显示程序出错位置
1.1 打开终端(在可执行文件的目录下), 修改core file的生成位置
echo './core.%t.%e.%p' | sudo tee /proc/sys/kernel/core_pattern
1.2 查看修改是否成功
cat /proc/sys/kernel/core_pattern
2.1 设置core文件的最大值
ulimit -c unlimited
2.2 查看修改是否成功
ulimit -c
3.1 按照正常操作运行需要debug的程序
./[exec file]
Segmentation fault (core dumped)
注意: 出现(core dumped) ,就会在终端所在目录下生成 core file
4.1 gdb运行需要debug的程序并加载core file
gdb ./[exec file] [core file]
4.2 然后输入并执行命令 bt 或 where, 显示出错的代码行号
(gdb) bt (or) where
会得到类似于下面的信息:
#1 0x000055b0aed4593d in main() at node.cpp:40
于是, 通过终端打印可知:程序是在node.cpp的第40行出了问题。
在Linux系统中,可以通过修改core_pattern来设定corefile的保存路径和命名规则,如设置为./core.%t.%e.%p。然后使用ulimit-cunlimited允许程序生成无限制大小的corefile。当程序出现Segmentationfault时,corefile将被创建。接着用GDB加载corefile和程序执行文件,通过bt或where命令可以追溯到出错的代码行,例如在node.cpp的第40行。
2873

被折叠的 条评论
为什么被折叠?



