DoubleLi

qq: 517712484 wx: ldbgliet

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

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

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

摘要:调试是一项主要的软件开发活动,作为应用程序开发人员,您无法避免对程序进行调试。有效的调试不仅能缩短软件开发周期,而且可以节省成本。本文简要介绍了在用户空间的 C/C++ 和 Java? 应用程序中查找 bug 的技术,并介绍了一些可以在 Linux? for POWER? 架构上使用的调试技术。简介... 阅读全文
posted @ 2015-05-23 10:31 DoubleLi 阅读(428) 评论(0) 推荐(0) 编辑

摘要:编写 UNIX® 系统程序充满乐趣,并且具有教育意义。使用 UNIX strace 工具和 GDB(GNU 项目调试工具),您可以真正地深入研究系统的功能,并了解组成这些功能的各种各样的程序。同时使用这两种工具,能够在查看 UNIX 计算机底层信息的时候,给您带来更好的体验。UNIX 家族总是为用户... 阅读全文
posted @ 2015-05-23 10:27 DoubleLi 阅读(1438) 评论(0) 推荐(0) 编辑

摘要:引言“Oops,系统挂死了..."“Oops,程序崩溃了..."“Oops,命令执行报错..."对于维护人员来说,这样的悲剧每天都在上演。理想情况下,系统或应用程序的错误日志提供了足够全面的信息,通过查看相关日志,维护人员就能很快地定位出问题发生的原因。但现实情况,许多错误日志打印模凌两可,更多地描... 阅读全文
posted @ 2015-05-23 10:17 DoubleLi 阅读(1568) 评论(0) 推荐(0) 编辑

摘要:做嵌入式Linux开发也不用再羡慕windows程序员VS集成开发环境的强大,我们同样能够搭建出给力的IDE。今天在这里记录一下我使用Eclipse-cdt,gdb,gdbserver搭建远程arm调试的过程。首先介绍下,嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端... 阅读全文
posted @ 2015-05-20 14:03 DoubleLi 阅读(1003) 评论(0) 推荐(0) 编辑

摘要:上一篇中,介绍了如何编译、运行arm-linux-gdb 和 gdbserver,这一篇中介绍怎样结合Eclipse-cdt进行图形化编译调试首先当然是使用CDT创建项目并添加源文件。在左侧 Project Explorer 的项目名上点右键->Properties 进入项目属性设置选择 C/C++... 阅读全文
posted @ 2015-05-20 14:02 DoubleLi 阅读(2441) 评论(1) 推荐(0) 编辑

摘要:前面转载了一篇文章关于core文件的产生和调试使用的设置,但在使用有一些需要注意的问题,如 在什么情况 才会正确地产生core文件。列出一些常见问题:一,如何使用core文件1. 使用core文件在core文件所在目录下键入:gdb -c core它会启动GNU的调试器,来调试core文件,并且会显... 阅读全文
posted @ 2015-05-13 09:21 DoubleLi 阅读(4431) 评论(0) 推荐(0) 编辑

摘要:0) gdb源码下载:http://ftp.gnu.org/gnu/gdb/1) 编译arm-linux-gdb 指定交叉编译工具链的位置 export PATH=$PATH:/usr/local/arm/3.4.1/bin 开始配置和编译 $cd gdb-6.6 $./configure --ta... 阅读全文
posted @ 2015-05-12 16:57 DoubleLi 阅读(2459) 评论(0) 推荐(0) 编辑

摘要:操作系统:Ubuntu10.04前言: 在程序崩溃后,如何快速定位问题。 以下方法适用于开发调试阶段,不太适用成品。 本文着眼于嵌入式,PC方面更简单。 核心:gdbserver + coredump一,安装,配置,使用 gdbserverarm linux下安装gdb,gdbserver调... 阅读全文
posted @ 2015-05-12 16:27 DoubleLi 阅读(1588) 评论(0) 推荐(0) 编辑

摘要:在linux下面用tcpdump 抓包非常方便, 但是抓的包要提取出来进行分析, 还是得用wireshark来过滤分析比较方便。下面先介绍一下 TCPDUMP 的使用例:tcpdump host 172.16.29.40 and port 4600 -X -s 500tcpdump采用命令行方式,它... 阅读全文
posted @ 2015-03-30 16:34 DoubleLi 阅读(792) 评论(0) 推荐(0) 编辑

摘要:wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。wireshark能获取HTTP... 阅读全文
posted @ 2015-03-30 15:32 DoubleLi 阅读(654) 评论(0) 推荐(0) 编辑

摘要:1.使用printf调试#ifdef DEBUGPrintf(“valriable x has value = %d\n”, x)#endif然后在编译选项中加入-DDEBUG更复杂的调试应用如:#define BASIC_DEBUG 1#define EXTRA_DEBUG 2#define SU... 阅读全文
posted @ 2015-03-30 11:24 DoubleLi 阅读(29355) 评论(2) 推荐(1) 编辑

摘要:动态链接库中分配内存引起的本文主要是探讨关于在动态链接库分配的内存在主程序中释放所产生的问题,该问题是我在刚做的PJP工程中所遇到的,由于刚碰到之时感动比较诡异(这也是学识不够所致),所以将它写下来,大家一起分享.问题来由:由于该工程中要用到声音,所以我的分工之一就是用DirectMusic和Dir... 阅读全文
posted @ 2014-05-29 12:52 DoubleLi 阅读(2123) 评论(0) 推荐(1) 编辑

摘要:BOOLEAN MmIsAddressValid( _In_PVOID VirtualAddress);ParametersVirtualAddress[in]A pointer to the nonpaged virtual address to check. The caller must e... 阅读全文
posted @ 2014-05-05 13:54 DoubleLi 阅读(865) 评论(0) 推荐(0) 编辑

摘要:句柄相当于一个指向指针的指针,指向指针的指针同样是指针,所以暂且认为它是一个指针,那么CreateFile相当于new 分配一个资源,让这个指针指到这块资源的首地址,那么当CloseHandle(handle)后等于是delete操作。此时handle的值还在,但是资源已被释放掉,那这个时候如果去访... 阅读全文
posted @ 2014-05-05 13:00 DoubleLi 阅读(1991) 评论(0) 推荐(0) 编辑

摘要:Visual C++ 的 C 运行时刻函数库标识模板0xCD 已经分配的数据(alloCated Data)0xDD 已经释放的数据(Deleted Data)0xFD 被保护的数据(Fence Data)Visual C++ 的 C 运行时刻函数库内存块类型标识符_NORMAL_BLOCK 由程序... 阅读全文
posted @ 2014-05-05 11:06 DoubleLi 阅读(521) 评论(0) 推荐(0) 编辑

摘要:1. 存分配的三个方法:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中... 阅读全文
posted @ 2014-05-05 11:04 DoubleLi 阅读(714) 评论(0) 推荐(0) 编辑

摘要:从微软站点:检查指针有效性下面的示例使用 _CrtIsValidPointer 验证给定的内存范围对于读或写是否有效。_ASSERTE(_CrtIsValidPointer( address, size, TRUE );下面的示例使用 _CrtIsValidHeapPointer 验证指针指向本地堆... 阅读全文
posted @ 2014-05-05 10:45 DoubleLi 阅读(1396) 评论(0) 推荐(0) 编辑

摘要:最近在写网络上的东西,程序经过长时间的运行,会出现崩溃的问题,经过DUMP文件的查看,发现在recv的地方接收返回值的时候,数据的长度异常的大差不多16亿多字节.而查看分配后的char指针显示为错误的指针,这可能是接收数据不对应产生的问题解决思路如下: 1.对返回值长度进行判断,如果超过项目内最大... 阅读全文
posted @ 2014-05-05 10:40 DoubleLi 阅读(3661) 评论(0) 推荐(0) 编辑

摘要:用vc 菜单 文件| 打开|指定EXE或DLL,如有指定运行时库,则PE文件的资源中可以看到manifest 配置节然后据此判断EXE依赖的运行时库, 再根据编译选项调整 运行时库设置 阅读全文
posted @ 2014-05-05 10:33 DoubleLi 阅读(478) 评论(0) 推荐(0) 编辑

摘要:简单来说:1>在远程机器跑VC自带的远程调试工具msvsmon.exe,并把要调试的程序跑起来2>用VC调试器附加进程,即可调试先展开来说:VC8,VC9都自带远程调试工具,可以在开始菜单中找到,以VC2008为例在由 开始菜单=>Microsoft Visual Studio 2008=>Visu... 阅读全文
posted @ 2014-05-05 10:28 DoubleLi 阅读(1924) 评论(0) 推荐(0) 编辑

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