C指针原理(51)-C语言-LINUX/UNIX环境下调试
命令 |
说明 |
备注 |
file 文件名 |
在gdb中载入某可执行文件 |
|
break |
设置断点 |
支持如下形式: |
info |
查看和可执行程序相关的 |
|
kill |
终止正在调试的程序 |
|
|
显示变量或表达式的值 |
|
set args |
设置调试程序的运行参数 |
“set args 参数列表” |
delete |
删除设置的某个断点 |
delete后可以使用breakpoints、 |
clear |
删除设置在指定行号 |
|
continue |
从断点处继续执行程序 |
|
list |
列出gdb中可加载的 |
不带任何参数使用list命令时, |
watch |
在程序中设置观测点 |
如果数据改变,将给出 |
run |
运行在gdb中可加载的程序 |
|
next |
单步执行程序 |
|
step |
进入所调用的函数内部, |
退出调用函数,回到调用处 |
whatis |
查看变量或函数类型 |
调用格式为“whatis 变量名/ |
ptype |
显示数据结构定义情况 |
与whatis不同的是, |
make |
编译程序 |
|
quit |
退出 |
一、gdb,在shell窗口调试
main.c内容:
main.c
#include <stdio.h>
int main()
{
int y=0;
for (int i=0;i<10;i++){
y+=i;
}
return 0;
}
编译:
deepfuture@deepfuture-desktop:~/test$ gcc -ggdb -std=c99 -o main main.c
麦好的AI乐园博客所有内容是原创,如果转载请注明来源
http://blog.csdn.net/myhaspl/
启动gdb
1、gdb 执行文件名
deepfuture@deepfuture-desktop:~/test$ gdb main
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 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 "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/deepfuture/test/main...done.
2、list为列出源代码
(gdb) list
1
2 #include <stdio.h>
3 int main()
4 {
5 int y=0;
6 for (int i=0;i<10;i++){
7 y+=i;
8 }
9 return 0;
10 }
3、运行
(gdb) run
Starting program: /home/deepfuture/test/main
Program exited normally.
4、退出gdb
(gdb) quit
5、启动gdb后,再设置要加载的文件
(gdb) file main
Reading symbols from /home/deepfuture/test/main...done.
6、设置断点,,使用break行号
(gdb) list
warning: Source file is more recent than executable.
1
2 #include <stdio.h>
3 int main()
4 {
5 int y=0;
6 for (int i=0;i<10;i++){
7 y+=i;
8 }
9 return 0;
10 }
(gdb) break 7
Breakpoint 1 at 0x80483ca: file main.c, line 7.
7、运行,run
(gdb) run
Starting program: /home/deepfuture/test/main
Breakpoint 1, main () at main.c:7
7 y+=i;
8、离开这个断点,继续运行
(gdb) c
Continuing.
9、监视变量
(gdb) watch y
Hardware watchpoint 2: y
10、检查变量变化
(gdb) c
Continuing.
Hardware watchpoint 2: y
Old value = 1
New value = 3
main () at main.c:6
6 for (int i=0;i<10;i++){
(gdb) c
Continuing.
Breakpoint 1, main () at main.c:7
7 y+=i;
(gdb) c
Continuing.
Hardware watchpoint 2: y
Old value = 3
New value = 6
main () at main.c:6
6 for (int i=0;i<10;i++){
二、ddd,使用
可以在选择行或某变量后,watch,break等按钮,很方便,图形方式调试
右中部的面板是一些流程调试
splint是一个动态检查C语言程序安全弱点和编写错误的程序.splint会进行
多种常规检查,包括未使用的变量,类型不一致,使用未定义变量,无法执行的
代码,忽略返回值,执行路径未返回,无限循环等错误.
安装:
root@dp:/home/dp/cursestest # cd /usr/ports/devel/splint
root@dp:/usr/ports/devel/splint # make install clean
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。