ubuntu系统使用 GDB 调试多文件的详细操作步骤
2014-12-03 09:09
459 查看
整理以前的笔记,仅作复习笔记备查,并实际操作了一遍OK。
All.c文件内容如下:
#include <stdio.h>
int main(void)
{
int a=8;
int b=3;
printf("a= %d b=%d \n",a,b);
int sum =add(a,b);
printf("a+b= %d \n",sum);
int cha=minus(a,b);
printf("a-b=%d\n",cha);
return 0;
}
Add.c文件内容如下:
int add(int a,int b)
{
int result;
result=a+b;
return result;
}
Minus.c文件内容如下:
int minus(int a,int b)
{
int result;
result=a-b;
return result;
}
三个文件放于同一个目录内。
目录文件如下:
root@ubuntu:/home/lin/mulfiles# ls
add.c add.o all all.c all.o makefile minus.c minus.o
Make操作后,GDB调试时无反应
查看 makefile文件:
root@ubuntu:/home/lin/mulfiles# cat makefile
all:all.o add.o minus.o
gcc all.o add.o minus.o -o all
all.o:all.c
gcc -c all.c -o all.o
add.o:add.c
gcc -c add.c -o add.o
minus.o:minus.c
gcc -c minus.c -o minus.o
clean:
rm -rf *.o all
原因是:编译选项忘记加 “-g”,在所有“-o”前加上即可。
root@ubuntu:/home/lin/mulfiles# vim makefile
root@ubuntu:/home/lin/mulfiles# ls
add.c add.o all all.c all.o makefile minus.c minus.o
root@ubuntu:/home/lin/mulfiles# make clean
rm -rf *.o all
root@ubuntu:/home/lin/mulfiles# ls
add.c all.c makefile minus.c
再次编译:
root@ubuntu:/home/lin/mulfiles# make
gcc -c all.c -g -o all.o
gcc -c add.c -g -o add.o
gcc -c minus.c -g -o minus.o
gcc all.o add.o minus.o -g -o all
root@ubuntu:/home/lin/mulfiles# ls
add.c add.o all all.c all.o makefile minus.c minus.o
编译生成的文件名:“all”
开始调试:
root@ubuntu:/home/lin/mulfiles# gdb all
GNU gdb (Ubuntu/Linaro 7.4-2012.02-0ubuntu2) 7.4-2012.02
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /home/lin/mulfiles/all...done.
查看代码: ”l“ 命令,该命令每次列10行。
(gdb) l
1 #include <stdio.h>
2
3 int main(void)
4 {
5 int a=8;
6 int b=3;
7 printf("a= %d b=%d \n",a,b);
8 int sum =add(a,b);
9 printf("a+b= %d \n",sum);
10 int cha=minus(a,b);
设置断点:
add 函数在add.c文件中定义,在all.c文件中被调用,如上所示,在第8行,故断点设置如下:
(gdb) b 8
Breakpoint 1 at 0x804841a: file all.c, line 8.
(gdb) r
Starting program: /home/lin/mulfiles/all
a= 8 b=3
Breakpoint 1, main () at all.c:8
8 int sum =add(a,b);
运行后,在断点处停下,此时单步进入即可,如下所示:
(gdb) s
add (a=8, b=3) at add.c:4
4 result=a+b;
单步执行:
(gdb) n
5 return result;
查看变量值:
(gdb) p result
$1 = 11
继续单步:
(gdb) n
6 }
(gdb) 注意:此处并未输入”n“,回车时,默认执行上次一次操作。此处继续”n“动作。
main () at all.c:9
9 printf("a+b= %d \n",sum);
(gdb)
a+b= 11
单步执行到该语句时(此时未执行),单步进入操作:”s“。
10 int cha=minus(a,b);
(gdb) s
minus (a=8, b=3) at minus.c:4
4 result=a-b;
(gdb)
5 return result;
查看代码命令:”l”
Minus函数在all.c文件中调用,但是定义在minus.c文件里,”l“操作后,显示代码如下:
(gdb) l
1 int minus(int a,int b)
2 {
3 int result;
4 result=a-b;
5 return result;
6 }
查看相关变量值:
(gdb) p a
$2 = 8
(gdb) p b
$3 = 3
(gdb) p result
$4 = 5
(gdb) n
6 }
(gdb)
main () at all.c:11
11 printf("a-b=%d\n",cha);
(gdb) l
6 int b=3;
7 printf("a= %d b=%d \n",a,b);
8 int sum =add(a,b);
9 printf("a+b= %d \n",sum);
10 int cha=minus(a,b);
11 printf("a-b=%d\n",cha);
12 return 0;
13
14
15 }
(gdb) p cha
$5 = 5
(gdb) n
a-b=5
12 return 0;
(gdb)
15 }
(gdb)
0xb7e3d4d3 in __libc_start_main () from /lib/i386-linux-gnu/libc.so.6
All.c文件内容如下:
#include <stdio.h>
int main(void)
{
int a=8;
int b=3;
printf("a= %d b=%d \n",a,b);
int sum =add(a,b);
printf("a+b= %d \n",sum);
int cha=minus(a,b);
printf("a-b=%d\n",cha);
return 0;
}
Add.c文件内容如下:
int add(int a,int b)
{
int result;
result=a+b;
return result;
}
Minus.c文件内容如下:
int minus(int a,int b)
{
int result;
result=a-b;
return result;
}
三个文件放于同一个目录内。
目录文件如下:
root@ubuntu:/home/lin/mulfiles# ls
add.c add.o all all.c all.o makefile minus.c minus.o
Make操作后,GDB调试时无反应
查看 makefile文件:
root@ubuntu:/home/lin/mulfiles# cat makefile
all:all.o add.o minus.o
gcc all.o add.o minus.o -o all
all.o:all.c
gcc -c all.c -o all.o
add.o:add.c
gcc -c add.c -o add.o
minus.o:minus.c
gcc -c minus.c -o minus.o
clean:
rm -rf *.o all
原因是:编译选项忘记加 “-g”,在所有“-o”前加上即可。
root@ubuntu:/home/lin/mulfiles# vim makefile
root@ubuntu:/home/lin/mulfiles# ls
add.c add.o all all.c all.o makefile minus.c minus.o
root@ubuntu:/home/lin/mulfiles# make clean
rm -rf *.o all
root@ubuntu:/home/lin/mulfiles# ls
add.c all.c makefile minus.c
再次编译:
root@ubuntu:/home/lin/mulfiles# make
gcc -c all.c -g -o all.o
gcc -c add.c -g -o add.o
gcc -c minus.c -g -o minus.o
gcc all.o add.o minus.o -g -o all
root@ubuntu:/home/lin/mulfiles# ls
add.c add.o all all.c all.o makefile minus.c minus.o
编译生成的文件名:“all”
开始调试:
root@ubuntu:/home/lin/mulfiles# gdb all
GNU gdb (Ubuntu/Linaro 7.4-2012.02-0ubuntu2) 7.4-2012.02
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /home/lin/mulfiles/all...done.
查看代码: ”l“ 命令,该命令每次列10行。
(gdb) l
1 #include <stdio.h>
2
3 int main(void)
4 {
5 int a=8;
6 int b=3;
7 printf("a= %d b=%d \n",a,b);
8 int sum =add(a,b);
9 printf("a+b= %d \n",sum);
10 int cha=minus(a,b);
设置断点:
add 函数在add.c文件中定义,在all.c文件中被调用,如上所示,在第8行,故断点设置如下:
(gdb) b 8
Breakpoint 1 at 0x804841a: file all.c, line 8.
(gdb) r
Starting program: /home/lin/mulfiles/all
a= 8 b=3
Breakpoint 1, main () at all.c:8
8 int sum =add(a,b);
运行后,在断点处停下,此时单步进入即可,如下所示:
(gdb) s
add (a=8, b=3) at add.c:4
4 result=a+b;
单步执行:
(gdb) n
5 return result;
查看变量值:
(gdb) p result
$1 = 11
继续单步:
(gdb) n
6 }
(gdb) 注意:此处并未输入”n“,回车时,默认执行上次一次操作。此处继续”n“动作。
main () at all.c:9
9 printf("a+b= %d \n",sum);
(gdb)
a+b= 11
单步执行到该语句时(此时未执行),单步进入操作:”s“。
10 int cha=minus(a,b);
(gdb) s
minus (a=8, b=3) at minus.c:4
4 result=a-b;
(gdb)
5 return result;
查看代码命令:”l”
Minus函数在all.c文件中调用,但是定义在minus.c文件里,”l“操作后,显示代码如下:
(gdb) l
1 int minus(int a,int b)
2 {
3 int result;
4 result=a-b;
5 return result;
6 }
查看相关变量值:
(gdb) p a
$2 = 8
(gdb) p b
$3 = 3
(gdb) p result
$4 = 5
(gdb) n
6 }
(gdb)
main () at all.c:11
11 printf("a-b=%d\n",cha);
(gdb) l
6 int b=3;
7 printf("a= %d b=%d \n",a,b);
8 int sum =add(a,b);
9 printf("a+b= %d \n",sum);
10 int cha=minus(a,b);
11 printf("a-b=%d\n",cha);
12 return 0;
13
14
15 }
(gdb) p cha
$5 = 5
(gdb) n
a-b=5
12 return 0;
(gdb)
15 }
(gdb)
0xb7e3d4d3 in __libc_start_main () from /lib/i386-linux-gnu/libc.so.6
相关文章推荐
- PHP文件系统函数详细使用与操作(一)
- 天嵌TQ210宿主机ubuntu挂载NFS文件系统详细步骤
- iMX25 Linux内核修改详细步骤与根文件系统的使用
- 使用BusyBox制作根文件系统的操作步骤
- CSS样式,使用VS2005本地文件系统调试能显示,改成使用IIS就死活不显示了!【解决方法汇总说明】
- IIS安装的详细操作步骤;IIS下载地址;IIS光盘安装和配置的视频教程;IIS安装版本和系统的匹配
- 浅析debugfs文件系统调试阶段gpio使用范例
- 双系统卸载Windows 7后删除XP系统盘主引导分区的残留文件详细步骤(适用于Vista/WS2008)
- ubuntu10.04 使用busybox制作根文件系统 1
- Ubuntu 共享文件给 windows系统使用-samba共享及设置
- 使用grldr文件引导windows xp、ubuntu系统
- IIS安装详细的操作步骤;IIS下载地址;IIS安装和视频配置教程;系统和IIS 版本的匹配
- 使用eclipse制作jar文件详细步骤
- ios 5.1.1完美越狱+xcode4.1/4.2/4.3免证书(iDP)开发+真机调试+生成ipa文件+破解详细步骤
- 使用image文件作为根分区--ubuntu系统
- 【整理-图解】ubuntu系统下的dynamips虚拟机使用详细教程
- 制作带busybox的U盘文件系统详细步骤
- FAT32文件系统中使用VS2005调试C++项目出现MSVCP80D.dll错误