利用 core 文件快速定位“segment fault”的 bug 位置
为什么要这么做
最近用递归比较多,虽然写起来舒服,但是 BUG 不好改,出错的一般都是 segment fault (core dump) 。这个错误很难定位是哪错了,但是我发现了一种很好的办法去解决这种问题。
由于每次发生段错误时,系统会产生 .core 文件记录发生的位置,所以我们在 gdb 调试时候把它带上就知道导致段错误的位置在哪、出错的数据是多少了。
具体步骤
第一步
我的是 Ubuntu 系统,不像 Redhat 可以直接产生 core 文件,所以要先输入 ulimit -c unlimited 打开生成 core 文件的选项。举个例子,如下:
第二步
在编译时加入 -g 选项,这样才能利用gdb进行调试。
第三步
利用 gdb 与 core 文件进行段错误定位
参考来源:博客
————全心全意投入,拒绝画地为牢