GDB和insight下的debug

在继续linux kernel的工作之前,忙里偷闲我们看一下linux下的debug工具。这里主要学习GDB和insight的使用

 

1. 安装GDB

一般系统中应该都已经安装了gdb,如果没有安装的话

sudo apt-get install gdb

 

2. 源代码样例

采用的是来自于http://opencsl.openfoundry.org/Lab05_debugger.rst.html的代码

文件test.c

 

#include<stdio.h> char* encode(char* str){ char* tempStr = str; while( *tempStr != 0 ){ (*tempStr)++; tempStr++; } } int main(int argc, char* argv[]){ int i; for(i = 0; i &lt; argc; i++){ encode(argv[i+1]); printf("%s\n", argv[i+1]); } } 3. 编译 gcc -g -o test test.c

记住参数里面需要加-g,表明gdb的debug

 

4. 开始调试

gdb ./test

 

5. 运行

run

可以看到出错的提示信息

 

6. list命令

list命令主要是列出源代码,可以试试如下命令,看不同的效果

list

list, 5

list encode, 5

 

7. 断点命令是b

这里列两个断点

b encode

b 10

 

8. 开始运行

set args abc, osss

run

 

继续的方式

  1. continue ,或是��� cont、c

    continue 的意思是�^�m�绦械较乱��中�帱c或是程式�Y束�橹埂�

  2. next ,或是��� n

    next 是一次�绦幸恍谐淌酱a,��程式�a是呼叫函式�r, GDB 只��把它��橐恍谐淌酱a。

  3. step ,或是��� s

    step 和 next �似,但��碰到函式呼叫�r, GDB ���M入函式中逐行�绦小�

9. 显示寄存器的值

p args

p str

p encode

 

只显示头两个字符

p str[0]@2

 

16进制显示

p/x str[0]@2

 

10. info命令的使用

info �t是�@示各�N GDB �仍O定、程式�绦��r的指令。目前�O定的中�帱c、 display ,或是 CPU registers 的�热荻伎梢杂眠@��指令�k到,如:

# �@示目前�O定的中�帱c (gdb) info b # �@示目前�O定的 display (gdb) info display # �@示 eax 的值 (gdb) info register eax

 

11. gdb的推出使用命令quit

 

12. insight的使用

如果使用过windows下的IDE,那么insight应该很快就可以上手。操作过程基本相同。

sudo apt-get install insight

insight

 

注意insight是完全基于gdb的IDE,现在已经有功能更加强大的linux下的IDE,比如Eclipse

你可能感兴趣的:(debug,gdb,职场,休闲,Insight)