摘要: 一、多线程调试 多线程调试可能是问得最多的。其实,重要就是下面几个命令:info thread 查看当前进程的线程。 thread <ID> 切换调试的线程为指定ID的线程。 break file.c:100 thread all 在file.c文件第100行处为所有经过这里的线程设置断点。 set scheduler-locking off|on|step,这个是问得最多的。在使用step或者continue命令调试当前被调试线程的时候,其他线程也是同时执行的,怎么只让被调试程序执行呢?通过这个命令就可以实现这个需求。 off 不锁定任何线程,也就是所有线程都执行,这是默认值。 阅读全文
posted @ 2011-12-08 19:17 夏大王 阅读(618) 评论(0) 推荐(0) 编辑
摘要: 在Unix系统下,应用程序崩溃,一般会产生core文件,如何根据core文件查找问题的所在,并做相应的分析和调试,是非常重要的。什么是Core Dump?Core的意思是内存, Dump的意思是扔出来, 堆出来.开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down掉时的内存内容扔出来生成的, 它可以做为调试程序的参考.core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个c 阅读全文
posted @ 2011-12-08 16:33 夏大王 阅读(383) 评论(0) 推荐(0) 编辑
摘要: #[reporter]debugin@playmp3_by_list!#[reporter]reporter_event_pth ##cmd_data.my_msg_type=1!#[reporter]RUN_INFO: START station 6*** glibc detected *** double free or corruption (out): 0x0000000000515d20 ***#[reporter]SignalHander(signal:6)(pid:19025)#[reporter]SignalHander(signal:6)(pid:19025)#[report 阅读全文
posted @ 2011-12-08 16:14 夏大王 阅读(1958) 评论(0) 推荐(0) 编辑
摘要: 查看错误代码errno是调试程序的一个重要方法。当linuc C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决了不少原本看来莫名其妙的问题。比较麻烦的是每次都要去linux源代码里面查找错误代码的含义,现在把它贴出来,以后需要查时就来这里看了。以下来自linux 2.4.20-18的内核代码中的/usr/include/asm/errno.h#ifndef _I386_ERRNO_H#define _I386_ERRNO_H#define EPERM 1 /* O. 阅读全文
posted @ 2011-12-08 11:45 夏大王 阅读(186) 评论(0) 推荐(0) 编辑