C指针原理(51)-C语言-LINUX/UNIX环境下调试
2014-01-13 16:32
585 查看
命令 | 说明 | 备注 |
file 文件名 | 在gdb中载入某可执行文件 | |
break | 设置断点 | 支持如下形式: break 行号; break 函数名称; break 行号/函数名称 if 条件 |
info | 查看和可执行程序相关的 各种信息 | |
kill | 终止正在调试的程序 | |
print | 显示变量或表达式的值 | |
set args | 设置调试程序的运行参数 | “set args 参数列表” |
delete | 删除设置的某个断点 或观测点 | delete后可以使用breakpoints、 checkpoint、display、mem和 tracepoints。可使用 help delete查看 |
clear | 删除设置在指定行号 或函数上的断点 | |
continue | 从断点处继续执行程序 | |
list | 列出gdb中可加载的 程序代码 | 不带任何参数使用list命令时, 会从开始位置列出所有代码, 同时list还支持列出指定行号 之间的代码 |
watch | 在程序中设置观测点 | 如果数据改变,将给出 变化前后的情况 |
run | 运行在gdb中可加载的程序 | |
next | 单步执行程序 | |
step | 进入所调用的函数内部, 查看执行情况 | 退出调用函数,回到调用处 使用finish命令 |
whatis | 查看变量或函数类型 | 调用格式为“whatis 变量名/ 函数名 |
ptype | 显示数据结构定义情况 | 与whatis不同的是, ptype可以显示类或 数据结构的定义情况 |
make | 编译程序 | |
quit | 退出 |
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/
启动gdb1、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
相关文章推荐
- Linux环境下段错误的产生原因及调试方法小结 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是
- linux下GCC编译环境中二叉树遍历、C语言实现以及调试过程中段错误
- Linux下C语言环境编程(gdb调试指针)
- unix/linux 环境软件调试笔记
- linux环境下调试嵌入式设备时出现Aborted、segmentation fault、卡死的问题以及关于指针使用的一点想法
- Linux环境中gdb调试C++工程基础命令
- Linux环境下段错误的产生原因及调试方法小结
- Linux环境下的C/C+基础调试技术2
- Linux环境下段错误的产生原因及调试方法小结
- Linux环境下段错误的产生原因及调试方法小结
- 转,Linux环境下的C/C++基础调试技术2
- Linux环境下android平台调试native代码, 从java debug 到C++ (NDK DEBUG)
- linux环境应用程序LOG日志打印(C语言)
- 《UNIX 环境高级编程》源代码在Linux环境运行方法
- UNIX环境高级编程——Linux系统调用列表
- 用gdb来学习c语言(linux环境下)
- Linux 环境下C语言下实现密码输入无回显
- Linux/unix不同shell环境下数值运算的处理
- linux/unix/windows环境查看本机的外网内网地址方法
- linux/unix/windows环境查看本机的外网内网地址方法