`
zybing
  • 浏览: 448918 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Linux程序的调试

阅读更多

Linux中,程序的调试、内存跟踪:

 

具体的使用,网上到处都是,不详列了。

 

1. gcore:

   将程序的内存core下来

 

2. pmap:

    显示程序的内存分配情况

 

3. strace:

    看程序在做什么事情

 

4. valgrind:

    对程序进行检查、跟踪:

 

-----------------------------

Valgrind 使用

用法: valgrind [options] prog-and-args [options]: 常用选项,适用于所有Valgrind工具

  1. -tool=<name> 最常用的选项。运行 valgrind中名为toolname的工具。默认memcheck。
  2. h –help 显示帮助信息。
  3. -version 显示valgrind内核的版本,每个工具都有各自的版本。
  4. q –quiet 安静地运行,只打印错误信息。
  5. v –verbose 更详细的信息, 增加错误数统计。
  6. -trace-children=no|yes 跟踪子线程? [no]
  7. -track-fds=no|yes 跟踪打开的文件描述?[no]
  8. -time-stamp=no|yes 增加时间戳到LOG信息? [no]
  9. -log-fd=<number> 输出LOG到描述符文件 [2=stderr]
  10. -log-file=<file> 将输出的信息写入到filename.PID的文件里,PID是运行程序的进行ID
  11. -log-file-exactly=<file> 输出LOG信息到 file
  12. -log-file-qualifier=<VAR> 取得环境变量的值来做为输出信息的文件名。 [none]
  13. -log-socket=ipaddr:port 输出LOG到socket ,ipaddr:port

LOG信息输出

  1. -xml=yes 将信息以xml格式输出,只有memcheck可用
  2. -num-callers=<number> show <number> callers in stack traces [12]
  3. -error-limit=no|yes 如果太多错误,则停止显示新错误? [yes]
  4. -error-exitcode=<number> 如果发现错误则返回错误代码 [0=disable]
  5. -db-attach=no|yes 当出现错误,valgrind会自动启动调试器gdb。[no]
  6. -db-command=<command> 启动调试器的命令行选项[gdb -nw %f %p]

适用于Memcheck工具的相关选项:

  1. -leak-check=no|summary|full 要求对leak给出详细信息? [summary]
  2. -leak-resolution=low|med|high how much bt merging in leak check [low]
  3. -show-reachable=no|yes show reachable blocks in leak check? [no]

 

valgrind包含几个标准的工具,它们是:

1、memcheck

 

memcheck探测程序中内存管理存在的问题。它检查所有对内存的读/写操作,并截取所有的malloc/new/free/delete调用。因此memcheck工具能够探测到以下问题:

 

1)使用未初始化的内存

2)读/写已经被释放的内存

3)读/写内存越界

4)读/写不恰当的内存栈空间

5)内存泄漏

6)使用malloc/new/new[]和free/delete/delete[]不匹配。

2、cachegrind

 

cachegrind是一个cache剖析器。它模拟执行CPU中的L1, D1和L2 cache,因此它能很精确的指出代码中的cache未命中。如果你需要,它可以打印出cache未命中的次数,内存引用和发生cache未命中的每一行代码,每一个函数,每一个模块和整个程序的摘要。如果你要求更细致的信息,它可以打印出每一行机器码的未命中次数。在x86和amd64上,cachegrind通过CPUID自动探测机器的cache配置,所以在多数情况下它不再需要更多的配置信息了。

 

3、helgrind

 

helgrind查找多线程程序中的竞争数据。helgrind查找内存地址,那些被多于一条线程访问的内存地址,但是没有使用一致的锁就会被查出。这表示这些地址在多线程间访问的时候没有进行同步,很可能会引起很难查找的时序问题。

 

分享到:
评论

相关推荐

    linux程序编译调试介绍.pdf

    linux程序编译调试介绍 作为程序员不得不看的好东西

    Linux 程序编译调试方法gdb

    Linux 程序编译调试方法 Linux 程序编译调试方法

    linux 串口调试程序

    这是我在opensuse 11.0下用kdevelop下开发的串口调试程序需要的下来看看吧!有什么问题的话请和我联系 zhengchunhuang.a@163.com

    嵌入式linux应用程序调试方法

    嵌入式linux应用程序调试方法.doc

    嵌入式linux应用程序调试.pdf

    嵌入式linux应用程序调试方法和流程 使用FS2410开发板

    linux下的应用程序GDB调试方法

    linux下的应用程序GDB调试方法,GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具

    Linux程序设计 第4版.haozip01

    Linux程序设计 分卷文件共有以下2个: Linux程序设计 第4版.haozip01.zip Linux程序设计 第4版.haozip02.zip 基本信息 原书名: Beginning Linux Programming 原出版社: Wrox 作者: (英)Neil Matthew Richard ...

    Linux程序设计中文第4版.part2

     1.2 Linux程序设计  1. 2.1 Linux程序  1. 2.2 文本编辑器  1. 2.3 C语言编译器  1. 2.4 开发系统导引  1.3 获得帮助  1.4 小结 第2章 shell程序设计  2.1 为什么使用shell编程  ...

    Linux内核或应用程序异常终止调试方法

    Linux内核或应用程序异常终止调试方法

    解决VScode配置远程调试Linux程序的问题

    下面看下VScode远程调试Linux程序的问题,具体内容如下,一起看看吧! 最近在Linux上调程序,但是gdb使用属于入门阶段,主要是没有图形化界面直观。在网上查找了有两个方案可选,一个是通过VisualStudio2019的远程...

    Linux设备驱动程序调试方法.pdf

    《linux设备驱动程序调试方法》,很不错的Linux驱动的调试资料,希望对你的学习工作有所帮助。

    1.2--Linux并发程序设计.doc

    3) 通过阅读和分析Linux实验程序,学习Linux程序设计、调试和运行的方法。 工具/准备工作 在开始本实验之前,请回顾教科书的相关内容。 需要准备一台运行Linux操作系统的计算机。 实验内容与步骤 并发程序的设计...

    visualgdb调试linux程序

    visualgdb调试linux程序

    Linux Unix 程序调试工具GDB完全手册

    GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的...

    Linux程序设计中文第4版.part1

     1.2 Linux程序设计  1. 2.1 Linux程序  1. 2.2 文本编辑器  1. 2.3 C语言编译器  1. 2.4 开发系统导引  1.3 获得帮助  1.4 小结 第2章 shell程序设计  2.1 为什么使用shell编程  2.2 一点...

    Linux程序设计中文第4版.part3

     1.2 Linux程序设计  1. 2.1 Linux程序  1. 2.2 文本编辑器  1. 2.3 C语言编译器  1. 2.4 开发系统导引  1.3 获得帮助  1.4 小结 第2章 shell程序设计  2.1 为什么使用shell编程  ...

    Linux下C程序的GDB调试方法

    Linux下C程序的GDB调试方法,讲解精炼,很适合初学者实用。。。

    在Windows 下使用和调试Linux 图形界面程序.doc

    在Windows 下使用和调试Linux 图形界面程序.doc

    Linux程序设计 第4版.haozip02

    Linux程序设计 分卷文件共有以下2个: Linux程序设计 第4版.haozip01.zip Linux程序设计 第4版.haozip02.zip 基本信息 原书名: Beginning Linux Programming 原出版社: Wrox 作者: (英)Neil Matthew Richard ...

    在Windows上编译、调试LINUX程序-XBuildDev

    XBuildStudio© 是运行在Windows平台上的,专为LINUX/UNIX平台软件开发的可视化工具,类似于Visual C++ ... 支持单步调试,变量实时显示。 设置和查看断点。 调用栈、线程查看。 函数导航,快速定位[正在进行]。

Global site tag (gtag.js) - Google Analytics