QT ---程序异常结束调试 Segmentation fault (core dumped)

  • 首先遇到这个问题时,系统提供的信息很少。
  • 各种问题的可能行都会导致这种问题,如野指针,动态链接库等原因

下面讲述在linux系统下面如果调试这个问题,并找出现该问题的原因

  • 系统已经安装了gdb
  • 如果使用QT Creator,先编译运行,报错之后,用命令行进入项目目录,执行完之后系统会自动在目录里面生成一个core*文件,可以用ls core*查询,接着使用gdb exefile core进行调试(exefile是make之后的可执行文件,core文件是当前报错之后系统抛出来的文件)。
  • 如果你使用命令行进行qmake 和 make,请保证QT Creatorqmake 和make版本和命令行的一致。

注意:系统默认core文件的大小为0,如果在项目的目录没有产生core文件,则需要用ulimit命令查看和修改core文件的大小。使用ulimit -a查看大小,使用 ulimit -c unlimited设置core文件不做限制。

以我的代码为例:
image.png
  • 其中Map3DWork是可执行文件,当运行该文件时出现一下的问:
    image.png
  • 首先查看core文件大小,如果是0则使用ulimit -c unlimited设置一下。我的已经设置过了:

    image.png

  • 因为我的core文件大小设置成不受限制的,所以上上步运行Map3DWork时候已经生成了core文件,用ls core*查询得到:

    image.png

  • 接着使用gdb Map3DWork core,然后输入r 再接着输入 bt进行调试,可以看到导致问题出现的原因了

    image.png

你可能感兴趣的:(QT ---程序异常结束调试 Segmentation fault (core dumped))