调试段错误Segmentation fault (core dumped)打印详细报错信息

104 篇文章 4 订阅
29 篇文章 1 订阅

在进行C/C++相关开发时候,经常会遇到段错误,这个时候比较无语的一点就是终端几乎不会输出太多有用的信息,大多数情况下打印信息如下:

Segmentation fault (core dumped)

有大佬专门开发了一款工具,叫做backward-cpp用来解决这个问题,该工具假设你用Cmake构建项目。

步骤:
首先在你项目CMakeLists.txt文件同目录克隆backward-cpp仓库

cd project 
git clone https://github.com/bombela/backward-cpp.git

然后在CMakeLists.txt作以下修改即可:

set(CMAKE_BUILD_TYPE Debug) #需要切换至Debug模式,不要Release模式
add_subdirectory(/path/to/backward-cpp)

# This will add backward.cpp to your target
add_executable(mytarget mysource.cpp ${BACKWARD_ENABLE})

# This will add libraries, definitions and include directories needed by backward
# by setting each property on the target.
add_backward(mytarget)

有个示例如下:

cmake_minimum_required(VERSION 3.0)
INCLUDE_DIRECTORIES("./include")
LINK_DIRECTORIES("/usr/lib")
SET(OPENCV_LIB opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs)
add_executable(demo ./src/main.cpp ./src/common.cpp)
target_link_libraries(demo pthread dl ${OPENCV_LIB})

修改为:

cmake_minimum_required(VERSION 3.0)
set(CMAKE_BUILD_TYPE Debug) #debug模式下可以直接定位到代码coredown的位置
add_subdirectory(./backward-cpp)
INCLUDE_DIRECTORIES("./include")
LINK_DIRECTORIES("/usr/lib")
SET(OPENCV_LIB opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs)
add_executable(demo ./src/main.cpp ./src/common.cpp ${BACKWARD_ENABLE})
add_backward(demo)
target_link_libraries(demo pthread dl ${OPENCV_LIB})

就可以在运行时输出如下信息:

Stack trace (most recent call last):
#8    Object "[0xffffffffffffffff]", at 0xffffffffffffffff, in
#7    Object "./demo", at 0x429a98, in _start
#6    Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x7fd02ede782f, in __libc_start_main
#5    Object "./demo", at 0x4294a9, in main
#4    Object "./demo", at 0x42b3f1, in ager::lib()
#3    Object "/media/lib/x86/libsp.so", at 0x7fd0318d99c6, in pdate
#2    Object "/media/lib/x86/libsp.so", at 0x7fd0318d9d87, in ata
#1    Object "/media/lib/x86/libsp.so", at 0x7fd0318db361, in pdate(SP_INPUT_DATA&, int)
#0    Object "/media/lib/x86/libsp.so", at 0x7fd0318db2ff, in Contex(int)
Segmentation fault (Address not mapped to object [0x38])
Segmentation fault (core dumped)
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值