DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  异常诊断与调试

上一页 1 ··· 3 4 5 6 7 8 9 10 下一页

摘要:1. 下载及解压valgrind-3.9.0 2.CC=/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin/arm-hisiv200-linux-gcc CPP=/opt/hisi-linux/x86-arm/arm-hisiv200-linu 阅读全文
posted @ 2016-04-18 19:44 DoubleLi 阅读(4796) 评论(0) 推荐(0) 编辑

摘要:1. wget http://valgrind.org/downloads/valgrind-3.9.0.tar.bz2 tar xvf valgrind-3.9.0.tar.bz2 cd valgrind-3.9.0 apt-get install automake ./autogen.sh 2. 阅读全文
posted @ 2016-04-18 19:44 DoubleLi 阅读(374) 评论(0) 推荐(0) 编辑

摘要:一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。 [cpp] view 阅读全文
posted @ 2016-04-01 14:01 DoubleLi 阅读(12021) 评论(0) 推荐(0) 编辑

摘要:C 语言作为 Linux 系统上标准的编程语言给予了我们对动态内存分配很大的控制权。这种自由可能会导致严重的内存管理问题,可能导致程序崩溃或随时间的推移导致性能降级。内存泄漏(即malloc()内存在对应的free()调用执行后永不被释放)和缓冲区溢出(例如对以前分配到某数组的内存进行写操作)是一些... 阅读全文
posted @ 2015-12-02 23:18 DoubleLi 阅读(742) 评论(0) 推荐(0) 编辑

摘要:一、前言:有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件某一行, 而是没有任何信息, 使得我们的调试变得困难起来.gdb: 有一种办法是, 我们用gdb的step, 一步一步寻找. 这放在短小的代码中是可行... 阅读全文
posted @ 2015-12-02 23:17 DoubleLi 阅读(22722) 评论(0) 推荐(2) 编辑

摘要:最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解... 阅读全文
posted @ 2015-12-02 22:41 DoubleLi 阅读(12651) 评论(0) 推荐(1) 编辑

摘要:文章出处:http://www.cnblogs.com/cy568searchx/archive/2013/10/28/3391790.html你的软件在某个时刻停止服务,CPU占用达到100%+,这种问题一个可能的原因是产生了死循环,假设程序某处存在潜在的死循环,并在某种条件下会引发,本文以一个示... 阅读全文
posted @ 2015-08-17 23:43 DoubleLi 阅读(2051) 评论(0) 推荐(0) 编辑

摘要:摘要:某些进程在结束前必须要处理一些额外的过程才能结束,尤其是数据存储的模块,进程停止前为保证数据的完整性可能要做一些事情,如果发生段错误,这时就需要先截获segv信号,处理完后再让程序出core一般进程收到段错误信号默认是dump core文件然后退出,但有些进程在退出时需要处理额外的过程才能结束... 阅读全文
posted @ 2015-06-03 13:22 DoubleLi 阅读(977) 评论(0) 推荐(0) 编辑

摘要://简单的捕捉段错误信号信号处理程序,通过signal来捕捉错误.#include#include#includevoidhandler(ints){if(s==SIGINT)printf("nowgotainterruptsignal");if(s==SIGSEGV)printf("nowgota... 阅读全文
posted @ 2015-06-03 13:12 DoubleLi 阅读(1931) 评论(0) 推荐(0) 编辑

摘要:我们在用C/C++语言写程序的时侯,内存管理的绝大部分工作都是需要我们来做的。实际上,内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难 免会在此处犯些小错误,而通常这些错误又是那么的浅显而易于消除。但是手工“除虫”(debug),往往是效率低下且让人厌烦的,本文将就"段错误"这个 内存访问... 阅读全文
posted @ 2015-06-03 08:56 DoubleLi 阅读(545) 评论(0) 推荐(0) 编辑

摘要:在实际开发过程中,大家可能会遇到段错误的问题,虽然是个老问题,但是其带来的隐患是极大的,只要出现一次,程序立即崩溃中止。如果程序运行在PC中,segment fault的调试相对比较方便,因为可以通过串口、显示器可以查看消息,只要程序运行,通过GDB调试工具即可捕捉产生segment fault的具... 阅读全文
posted @ 2015-06-03 08:55 DoubleLi 阅读(1148) 评论(0) 推荐(0) 编辑

摘要:strace和gdb是Linux环境下的两个常用调试工具,这里是个人在使用过程中对这两个工具常用参数的总结,留作日后查看使用。strace调试工具strace工具用于跟踪进程执行时的系统调用和所接收的信号,包括参数、返回值、执行时间。在Linux中,用户程序要访问系统设备,必须由用户态切换到内核态,... 阅读全文
posted @ 2015-06-03 08:34 DoubleLi 阅读(2468) 评论(0) 推荐(1) 编辑

摘要:本文为“在C/C++中捕获段错误,打印出错的具体位置”的续篇,进一步解决涉及动态链接库的情况。背景知识:·linux/unix下动态链接库的基本原理·/proc/pid/maps文件的基本格式·动态链接库:在进程执行过程中动态加载,进程间可以共享代码,可用在发布升级包等场合概述: 用户自己编写的代码... 阅读全文
posted @ 2015-06-02 10:08 DoubleLi 阅读(1039) 评论(0) 推荐(0) 编辑

摘要:修订:2013-02-16其实还可以使用glibc的backtrace_symbols函数,把栈帧各返回地址里面的数字地址翻译成符号描述的修订:2011-06-11背景知识:· 在linux/unix中的信号处理机制,知道signal函数与sigaction的区别· 段错误的概念,CPU中断处理的步... 阅读全文
posted @ 2015-06-02 10:06 DoubleLi 阅读(2951) 评论(0) 推荐(0) 编辑

摘要:最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解... 阅读全文
posted @ 2015-06-02 10:03 DoubleLi 阅读(2443) 评论(0) 推荐(1) 编辑

摘要:在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。1.core文件的生成开关和大小限制1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能... 阅读全文
posted @ 2015-05-28 11:14 DoubleLi 阅读(6413) 评论(0) 推荐(1) 编辑

摘要:在Linux下产生并调试core文件 先看看我用的是个什么机器:$ uname -aLinux dev 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 EDT 2004 i686 i686 i386 GNU/Linux再看看默认的一些参数,注意core fil... 阅读全文
posted @ 2015-05-28 10:27 DoubleLi 阅读(1302) 评论(0) 推荐(0) 编辑

摘要:Windows7平台上有一个强大的SxsTrace工具,可以跟踪调试应用程序运行时需要的动态库的版本和路径。SxsTrace使用的方法:1、首先必须以Administrator用户身份登录,打开cmd命令行;2、也可以以其它用户登录,然后打开cmd命令行,执行:runas /user:adminis... 阅读全文
posted @ 2015-05-23 10:37 DoubleLi 阅读(2300) 评论(0) 推荐(0) 编辑

摘要:strace工具是一个非常强大的工具,是调试程序的好工具。要移植到arm平台,就需要使用交叉编译工具编译生成静态链接的可执行文件。具体步骤如下:1.下载 strace-4.5.16移植strace调试工具到arm平台 由Linux系统中文网(Linux521.com)编辑收集整理,除Linux521... 阅读全文
posted @ 2015-05-23 10:35 DoubleLi 阅读(1340) 评论(0) 推荐(0) 编辑

摘要:在 Linux 上找出并解决程序错误的主要方法您可以用各种方法来监控运行着的用户空间程序:可以为其运行调试器并单步调试该程序,添加打印语句,或者添加工具来分析程序。本文描述了几种可以用来调试在 Linux 上运行的程序的方法。我们将回顾四种调试问题的情况,这些问题包括段错误,内存溢出和泄漏,还有挂起... 阅读全文
posted @ 2015-05-23 10:33 DoubleLi 阅读(439) 评论(0) 推荐(0) 编辑

上一页 1 ··· 3 4 5 6 7 8 9 10 下一页