linux下调试入门之暂停的使用
最近通读了一下软件调试的艺术(The art of debugging with gdb,ddd,eclipse),总体来说是一般入门级的调试用书。我个人感觉对初学gdb的有一定的作用,有愧于题目art。我简单的做个总结,供入门参考。主要讲了gdb的常用命令以及常见bug的调试。
常用命令:
1. 暂停机制
a.断点的使用
设置断点的方法:break funtion 例如:break main,表示在main函数入口处暂停
break line_num 例如:break 5 表示每到当前源文件第5行暂停
临时断点 tbreak 6 ,表示第6行暂停一次
获取所有的断点信息 info breakpoints
删除断点 delete 断点编号
清除断点 clear 要清除断点所在行号
恢复暂时失效的断点 enable 断点编号
使断点失效 disable 断点编号
b.继续调试
continue 继续运行,恢复
step 单步进入,单步跟踪,进入具体函数
next 单步不进入,单步跟踪,不进入具体函数
相关文档:
如果是以tarball形式安装安装,去rar
网站下载相应版本的tarball。地址为
http://www.rarlab.com/
以3.8版本为例,如果是i386的平台,执行以下命令:
$wget http://www.rarlab.com/rar
/rarlinux-3.8.0.tar.gz
rar
软件不需要安装,直接解压到/usr/local下,以下操作需要有root
权限。
#tar zxvf rarlinux-3.8.0 ......
1> 使用CDPATH设置 cd 命令的工作目录
[ramesh@dev-db ~]# pwd
/home/ramesh
[ramesh@dev-db ~]# cd mail
-bash: cd: mail: No such file or directory
[注意:在当前目录下寻找MAIL目录]
[ramesh@dev-db ~]# export CDPATH=/etc
[ramesh@dev-db ~]# cd mail /etc/mail  ......
首先,内存的大小在linux内核中的获知方法
1.通过bootloader 的 tag mem传入。
Setup.c 中的函数如下:
static int __init parse_tag_mem32(const struct tag *tag)
{
if (meminfo.nr_banks >= NR_BANKS) {
printk(KERN_WARNING
"Ignoring memory bank 0x%08x size %dKB\n",
tag->u.mem.start, tag->u.mem ......
1.定义函数指针类型
要根据动态库中药使用的函数,在外面定义同样类型的函数指针类型,供以后使用
typedef unsigned long(*POpenDev)(IN unsigned long int);
2. 定义函数指针
POpenDev OpenDev;
3.动态加载动态库
HANDLE sohandle = NULL;
sohandle = dlopen("libNiKeyDll.so", RTLD_NOW);
......
Linux下常用压缩格式的压缩与解压方法
---------------------------------------------
.tar
打包:tar cvf *.tar *.*(原文件或目录)
解包:tar xvf *.tar
---------------------------------------------
.gz
解压1:gunzip *.gz
解压2:gzip -d *.gz
压缩:gzip *.*(原文件或目录)
--------------------------- ......