Geant4中 定位 (段错误segmentation fault)的位置

引入

报错不可怕,可怕的是不知道哪错了,Geant4报错给一个光麻麻的 segmentation fault,真是不知道该从哪里检查自己的代码。为此,可以使用到大杀器 gdb 来进行调试。

准备

Geant4使用gdb进行调试的准备(针对Ubuntu):

  • 第一次使用时,安装gdb sudo apt install gdb -y
  • 设置 core 文件大小限制 ulimit -c unlimited
    • 如果报错了,尝试: sudo sh -c ulimit -n 65535 && exec su $LOGNAME
    • 想要每次开机自动执行:echo "ulimit -c unlimited" >> ~/.bashrc
  • 设置 cmake,在cmake编译前,在 CMakeLists.txt 中追加如下三行:
    SET(CMAKE_BUILD_TYPE "Debug")
    SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
    SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
    

效果

这样正常运行程序,如果报错了,就会在当前目录下生成 core 文件,使用gdb调试 gdb 程序名 core 使用 where指令即可找到报错行。效果如下:
在这里插入图片描述

最后

祝一切安好~

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值