memwatch

掌握 Linux 调试技术

眉间皱痕 提交于 2020-04-09 06:08:34
摘自: https://www.ibm.com/developerworks/cn/linux/sdk/l-debug/ 摘自 https://www.ibm.com/developerworks/cn/linux/sdk/l-debug/#artrelatedtopics 本文讨论了四种调试 Linux 程序的情况。在第 1 种情况中,我们使用了两个有内存分配问题的样本程序,使用 MEMWATCH 和 Yet Another Malloc Debugger(YAMD)工具来调试它们。在第 2 种情况中,我们使用了 Linux 中的 strace 实用程序,它能够跟踪系统调用和信号,从而找出程序发生错误的地方。在第 3 种情况中,我们使用 Linux 内核的 Oops 功能来解决程序的段错误,并向您展示如何设置内核源代码级调试器(kernel source level debugger,kgdb),以使用 GNU 调试器(GNU debugger,gdb)来解决相同的问题;kgdb 程序是使用串行连接的 Linux 内核远程 gdb。在第 4 种情况中,我们使用 Linux 上提供的魔术键控顺序(magic key sequence)来显示引发挂起问题的组件的信息。 常见调试方法 当您的程序中包含错误时,很可能在代码中某处有一个条件,您认为它为真(true),但实际上是假

memwatch

白昼怎懂夜的黑 提交于 2020-04-08 21:12:01
摘自: https://www.cnblogs.com/klcf0220/p/5962834.html 一、简介 memwatch可以跟踪程序中的内存泄漏和错误,能检测双重释放(double-free)、错误释放(erroneous free)、没有释放的内存(unfreed memory)、溢出(Overflow)、下溢(Underflow)等。 下载地址: http://www.linkdata.se/sourcecode/memwatch/ 解压后,得到源码 memwatch.c 和 memwatch.h 二、安装及使用 memwatch根本是不需要安装的,因为它只是一组C程序代码。需要做的是: 1、在代码中加入 memwatch.c 和 memwatch.h,一起编译、链接 2、编译时定义宏 DMEMWATCH、DMW_STDIO,即在编译程序时加上选项-DMEMWATCH -DMW_STDIO 三、例子 int main( int argc, char ** argv) { int i = 0 ; char * p; mwInit(); // 执行memwatch的初始化工作。虽然memwatch有在第一次使用时能够自动装载,但作者还是建议我们使用该函数。 p = malloc ( 100 ); p = malloc ( 200 ); free (p); for (i=