编译没有警告,没有错误,运行就打印 段错误 (核心已转储)

网上找了一下,都是各种问题,都推荐用gdb 调试解决,咱也来趁机学习gdb一下。
 

gcc+gdb)输入命令行 运行

sudo apt-get install build-essential

build-essential包含gcc和gdb等工具,是C语言的开发包。

安装完了可以执行

一般来说GDB主要调试的是C/C++的程序。要调试C/C
++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器(cc/
gcc/g++)的 -g 参数可以做到这一点。

进程意外退出会在当前目录下产生‘code’文件或形如‘core.数字’的文件比如‘core.1234’
使用命令
gdb 运行程序名 core或core.数字
进入gdb然后使用bt命令
可以查看进程意外退出前函数调用的堆栈,内容为从上到下列出对应从里层到外层的函数调用历史。
如果进程意外退出不产生core文件

运行 ulimit -c unlimited   后再运行编译出的可执行程序,就可以产生core 文件

gdb <program> core
用gdb同时调试一个运行程序和core文件,core是程序非法执行後core dump
後产生的文件。

然后再使用bt 命令就可以看出程序问题在哪里了,gdb真是好东西。

gdb a.out core
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-Linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
< http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
< http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from a.out...done.
[New LWP 1537]
Core was generated by `./a.out'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  _IO_fgets (buf=0x7ffedcceef10 "", n=256, fp=0x0) at iofgets.c:50
50      iofgets.c: 没有那个文件或目录.
(gdb) bt
#0  _IO_fgets (buf=0x7ffedcceef10 "", n=256, fp=0x0) at iofgets.c:50
#1  0x000000000040198a in load_properties (path=0x401ad2 "/system/etc/tdgnss.conf") at rwfile.c:519
#2  0x00000000004019d9 in main () at rwfile.c:548

原来是不存在这个路径/system/etc/tdgnss.conf ,这个路径是以前Android上的,现在在Ubuntu 就不存在了,改一下估计就ok 了。

在Linux 上gdb 调试程序很方便,如果在arm 上怎么办呢?尤其是我这种没有usb 也没有网卡的Linux arm 机器上?

解决Linux c语言运行时候“段错误 (核心已转储)”问题-采用gdb 解决的更多相关文章

  1. Linux下运行C++程序出现"段错误(核心已转储)"的原因

    今天写程序出现了“段错误(核心已转储)"的问题,查了一下资料,加上自己的实践,总结了以下几个方面的原因. 1.内存访问出错  这类问题的典型代表就是数组越界. 2.非法内存访问 出现这类问题 ...

  2. YOLO 测试出错:段错误 (核心已转储)

    段错误 (核心已转储): data/voc.names中文标签改成英文

  3. Linux 下运行 C++ 程序出现 “段错误(核心已转储)”

    Linux下写C++程序出现“段错误(核心已转储)”的问题: 段错误一般就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它 ...

  4. 关于Linux系统下错误“浮点数异常(核心已转储)”的分析

    1.问题发现 有这样一段代码: #include <stdio.h> int main() { int a, b, num1, num2, temp; printf("pleas ...

  5. Caffe2:段错误(核心 已转储)

    测试Caffe的时候, cd ~ && python -c 'from caffe2.python import core' 2>/dev/null && ech ...

  6. linux C++ 莫名奇异的段错误(segmentation fault),无法调用其他函数

    进来在linux下开发C++项目,遇到了非常奇怪的bug. 项目须要多线程实现,在写好代码后,每当执行到线程函数内部,当内部调用其他函数如printf.fopen等时就会提示段错误(segmentat ...

  7. linux eclipse中运行android AVD 错误

    当使用android的AVD时提示以下错误: Starting emulator for AVD 'NexusOne' ERROR: 32-bit Linux Android emulator bin ...

  8. Activity后台运行一段时间回来crash问题的分析与解决

    最近做项目的时候碰到一个棘手的问题,花了不少时间才找到原因并解决.特此记录这个被我踩过的坑,希望其他朋友遇到此问题不要调到这坑里去了. 问题描述: 1.背景:我的app中某个界面的Activity是继 ...

  9. 【已解决】Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level

    转自:http://www.crifan.com/python_syntax_error_indentationerror/comment-page-1/ [问题] 一个python脚本,本来都运行好 ...

随机推荐

  1. Android之旅---广播(BroadCast)

    什么是广播 在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制.我们拿广播电台来做个比方.我们平常使用收音机收音是这样的:许许多多不同的广播电台通过特定的频率来发送他们 ...

  2. linux下Nginx 安装配置

    Nginx 安装 一.首先要安装 PCRE PCRE 作用是让 Ngnix 支持 Rewrite 功能. 1.下载 PCRE 安装包,下载地址: http://downloads.sourceforg ...

  3. ef执行记录原生态代码方法。

    select e; var f = (System.Data.Objects.ObjectQuery<SimpleEntry>)final; var s = f.ToTraceString ...

  4. VS xsd Class

    1.将xsd 文件 转成   实体文件 xsd  FilePath(*.xsd)   /c 2.将 xml 文件 转成  xsd  文件 xsd  FilePath(*.xml)

  5. IOS开发-属性动画和关键帧动画的使用

    CAMediaTiming是一个协议(protocol),CAAnimation是所有动画类的父类,但是它不能直接使用,应该使用它的子类. 继承关系: CoreAnmiation 核心动画 简写CA ...

  6. [网络] 用 OpenVPN 实现站对站 VPN 服务

    一.简介 一般情况下站对站 VPN 是用 cisco.juniper.h3c等品牌的专业设备实现的,这些设备性能可靠,价格较贵. 如果现有设备不支持,而且不能用新设备替换,或者部门预算有限,那么只能用 ...

  7. CyclicBarrier类合唱演绎

    package a.jery; import java.util.concurrent.CyclicBarrier; import java.util.concurrent.ExecutorServi ...

  8. MySQL-5.6.13免安装版配置方法

    MySQL-5.6.13免安装版配置方法   1. 下载MySQL Community Server 5.6.13 2. 解压MySQL压缩包    将以下载的MySQL压缩包解压到自定义目录下,我的 ...

  9. tinyxml学习2

    在TinyXML中,根据XML的各种元素来定义了一些类: TiXmlBase:整个TinyXML模型的基类. TiXmlAttribute:对应于XML中的元素的属性. TiXmlNode:对应于DO ...

  10. FMDB最简单的教程-3 清空数据表并将自增字段清零

    [db executeUpdate:@"DELETE FROM MemberInfo"]; [db executeUpdate:@"UPDATE sqlite_seque ...