LMDBG是允许检测存储器leaksand双重的FreeS&NBSP一个应用;然而,不同于其他LMDBG生成* FULL * stacktracesand分离分析thusallowing记录到分析关于每个模块的基础的应用程序。
- lmdbg运行是一款主打实用lmdbg。它运行一个应用程序,并创建一个日志文件(或FIFO),所有所谓的malloc /释放calloc / realloc的/自由/ memalign可/ posix_memalign调用注册了自己的输入(字节计数,指针),输出(指针)和(独有!功能!)FULL堆栈跟踪(指针)。
例如:
     $猫测试/的test2.c
    的#include
    诠释的main()
     {
       无效* P1 = NULL;
       无效* P2 = NULL;
        P1 =的malloc(555);
        P2 = realloc的(P2,666);
        P2 = realloc的(P2,777);
        P2 = realloc的(P2,888);
       返回0;
     }
     $ gcc的-O0 -g -o _test2测试/的test2.c
     $ lmdbg运行-o _log ./_test2
     $猫_log
    的malloc(555) - > 0xbb901400
      0xbbbe58e8
      0xbbbe5b03
      0x8048738
      0x8048584
      0x80484e7
     realloc的(NULL,666) - > 0xbb901800
      0xbbbe58e8
      0xbbbe5a37
      0x804874e
      0x8048584
      0x80484e7
     realloc的(0xbb901800,777) - > 0xbb901c00
      0xbbbe58e8
      0xbbbe5a37
      0x8048764
      0x8048584
      0x80484e7
     realloc的(0xbb901c00,888) - > 0xbb901800
      0xbbbe58e8
      0xbbbe5a37
      0x804877a
      0x8048584
      0x80484e7
     $
注意:完整的堆栈跟踪允许您分析您的应用程序,即你可以检测一下块/组件需要比别人为什么更多的内存。 lmdbg - 均是这是一个非常重要的工具,见下文。
- lmdbg-泄漏分析了lmdbg运行和输出都发现内存泄漏产生的日志文件
示例:
     $ lmdbg-泄漏_log  
     realloc的(0xbb901c00,888) - > 0xbb901800
      0xbbbe58e8
      0xbbbe5a37
      0x804877a
      0x8048584
      0x80484e7
    的malloc(555) - > 0xbb901400
      0xbbbe58e8
      0xbbbe5b03
      0x8048738
      0x8048584
      0x80484e7
     $
- lmdbg-符号转换地址,由source.c:999如果可能的话
例如(GDB(1)在行动):
     $ lmdbg-符号./_test2 _log
    的malloc(555) - > 0xbb901400
      0xbbbe58e8
      0xbbbe5b03
      0x8048738     测试/ test2.c中:8主
      0x8048584
      0x80484e7
     realloc的(NULL,666) - > 0xbb901800
      0xbbbe58e8
      0xbbbe5a37
      0x804874e     测试/ test2.c中:9主
      0x8048584
      0x80484e7
     realloc的(0xbb901800,777) - > 0xbb901c00
      0xbbbe58e8
      0xbbbe5a37
      0x8048764     测试/ test2.c中:10       主
      0x8048584
      0x80484e7
     realloc的(0xbb901c00,888) - > 0xbb901800
      0xbbbe58e8
      0xbbbe5a37
      0x804877a     测试/ test2.c中:11       主
      0x8048584
      0x80484e7
     $
例如(addr2line(1)在这里工作):
     $ lmdbg-符号-a ./_test2 _log
    的malloc(555) - > 0xbb901400
      0xbbbe58e8
      0xbbbe5b03
      0x8048738     测试/ test2.c中:8
      0x8048584
      0x80484e7
     realloc的(NULL,666) - > 0xbb901800
      0xbbbe58e8
      0xbbbe5a37
      0x804874e     测试/ test2.c中:9
      0x8048584
      0x80484e7
     realloc的(0xbb901800,777) - > 0xbb901c00
      0xbbbe58e8
      0xbbbe5a37
      0x8048764     测试/ test2.c中:10
      0x8048584
      0x80484e7
     realloc的(0xbb901c00,888) - > 0xbb901800
      0xbbbe58e8
      0xbbbe5a37
      0x804877a     测试/ test2.c中:11
      0x8048584
      0x80484e7
     $
- lmdbg-sysleaks - 在libc中发现或里grep跳过系统内存泄漏,libdl,C ++ STL等见测试/ lmdbg * conf文件。默认的配置文件是:〜/ .lmdbg.conf和/etc/lmdbg.conf
- lmdbg = lmdbg跑+ lmdbg-泄漏+ lmdbg-符号+ lmdbg,sysleaks
这是lmdbg是所有功能于一身的更高水平的工具。
例如:
     $ lmdbg -v -o _log ./_test2
    进行检测,并保存内存泄漏文件'_log“
     $猫_log
     realloc的(0xbb901c00,888) - > 0xbb901800
      0xbbbe58e8
      0xbbbe5a37
      0x804877a     测试/ test2.c中:11       主
      0x8048584
      0x80484e7
    的malloc(555) - > 0xbb901400
      0xbbbe58e8
      0xbbbe5b03
      0x8048738     测试/ test2.c中:8主
      0x8048584
      0x80484e7
     $
什么在此版本中是新的:
- 在lmdbg-符号不再段错误的问题引起堆栈跟踪(3)。
- 在一个更简单的和正确的地址转换方法加入。
- 在有显著的加速,由于优化了GDB。
- 在lmdbg运行,GLIBC的malloc挂钩不再使用。
- lmdbg自己的代码,不包含在踪迹。
- 在一个新的-N选项,并将-v选项得到了轻微的修正。
- 在lmdbg-STAT获得修复一个NULL取消引用中出现,如果免费(3)或realloc(3)堆栈跟踪是没有合适的malloc / realloc的(3)堆栈跟踪。
- 在有其他小的修复和改进,改进回归测试,并在堆栈跟踪(3)。 改进
什么在1.1.0版本新:
- 在回归测试的修复
- 在lmdbg运行:零地址是由glibc的的回溯(3) 生成踪迹移除
- 在此修复断言在lmdbg-STAT(1)。
- 双击" 0X"问题在"信息部分"固定(看到NetBSD的)。
- 从libexecinfo回溯(3)(如果可用),而不使用内置的实现。
- 在lmdbg-符号:几个错误是固定在转换地址到符号
- 在lmdbg-STAT:现在不完全读取行被忽略,所以没有更多的断言(3)S当正在调试应用程序被杀害 。
- 在写awk的另一种实现被删除。
什么是0.17.0版本,新的:
- 在该版本增加了很多改进和修正在手册页,在lmdbg,lmdbg运行,并lmdbg-符号的新功能,并小幅修正至lmdbg-STAT。
- 在lmdbg现在是一个荟萃工具,它是能够做很多事情,不仅仅是查找内存泄漏。
什么是0.15.1版本,新的:
- 在释放calloc的记录(3)调用被禁用基于glibc系统(Linux,GNU / kFreeBSD的,也许其他人),因为lmdbg运行失败,在他们身上。
- 在未成年人清扫,修复和改善。 MK-配置及GT; = 0.20所需的建筑
什么是0.14.0版本,新的:
- 在新工具:lmdbg-STAT,lmdbg-的grep和lmdbg排序收集和分析关于内存分配的统计信息。
- 在lmdbg运行:为lmdbg运行新的选项:-S和-M生成缩短踪迹
- 在lmdbg-符号:新选项-p从lmdbg运行的输出中获得的程序名
- 修正:“mkcmake测试”删除临时文件 。
评论没有发现