(1)gdb的使用,别人的帖子写的不错,直接贴链接吧,有空了自己再重写。
【1】gdb常用命令 http://blog.csdn.net/gnuhpc/article/details/4368831
主要讲了常用的gdb命令,对几个易混和重要的自己记录一下。
r : 运行程序,直到断点
c:从断点继续运行,直到下一个断点
s与n的区别:s遇到函数会跳到函数中,继续在函数中单步,而n则直接调用函数,把调用函数看成一步。
clear 的行号指示的断点,delete 的是info breakpoints中的断点统一编号
until直到循环体结束,finish直到函数结束。
字母l,列出10行源代码
回车,重复上一次命令
p,打印,可跟表达式, 例如 print foo(123) ,以参数123调用函数foo
bt:backtrace(回溯的缩写)
【2】GDB堆栈跟踪的方法 http://www.cppblog.com/BlueSky/archive/2007/11/20/37012.html
主要讲了gdb中的堆栈帧是如何安排的,以及bt,frame,info locals命令的配合使用,在函数调用层次很多时,frame不得不用啊,写得很实用。
【3】linux下core文件调试方法 http://blog.csdn.net/shaovey/article/details/2744487
主要讲了在linux下如何配置生成的core文件,其次是如何调用core文件。
(2)内存泄露调试
【1】内存泄露检测工具比较 http://apps.hi.baidu.com/share/detail/6083671
里面写的内存泄露发生方式不错:(1)常发性(2)偶发性(3)一次性(4)隐式
【2】应用 Valgrind 发现 Linux 程序的内存问题 http://www.ibm.com/developerworks/cn/linux/l-cn-valgrind/
大致讲了一下valgrind的工作原理和几个简单例子。
【3】Valgrind 使用简单说明 http://hi.baidu.com/timegoneby/blog/item/ffaad71790bf060dc93d6dd6.html
基本的valgrind使用和简单例子
valgrind常用参数:
默认使用Memcheck工具
-log-file=<file> 将输出的信息写入到filename.PID的文件里,PID是运行程序的进行ID
-leak-check=no|summary|full 要求对leak给出详细信息? [summary]
-leak-resolution=low|med|high how much bt merging in leak check [low]