2016.7.9 GDB功能 GDB指令 Makefile举例
来源:互联网 发布:erp软件视频介绍 编辑:程序博客网 时间:2024/06/08 19:55
一.GDB
GDB功能:
(1)启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
(2)可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
(3)当程序被停住时,可以检查此时你的程序中所发生的事。
(4)动态的改变你程序的执行环境。
1.GDB是一款GNU开发的调试器。
2调试文件一定要加-g gcc -g deno.c -o deno
3. GDB指令
1.*重新运行调试的程序:
(gdb) run
2.*列出指定区域(n1到n2之间)的代码:
(gdb) list n1 n2
3.*执行下一步:
(gdb) next
这样,执行一行代码,如果是函数,会跳过函数。
(gdb) step
这样,执行一行代码,如果是函数,会进入函数。
4.*执行完当前函数返回到调用它的函数:
(gdb) finish
5.*在当前的文件中某一行(假设为6)设定断点:
(gdb) break 6
*设置条件断点:
(gdb) break 46 if testsize==100
这里,如果testsize==100就在46行处断点。
6.*显示当前gdb断点信息:
(gdb) info break
7.*继续运行程序直接运行到下一个断点:
(gdb) continue
8.退出
(gdb) continue
9.显示
(gdb)list
10.查看变量值
(gdb)print
4.如果出现段错误,gdb调试时停在哪一行表示哪一行出现。
5.①debug.c文件
#include<stdio.h>
#include"debug.h"
int main()
{
debug_msg("hello world\n");
char *ptr="hello world";
ptr++;
debug_msg("*ptr=%s\n",ptr);
*ptr='L';
return 0;
}
②debug.h文件
#ifndef __DEBUG__
#define debug_msg(fmt,args...)
#else
#define debug_msg(fmt,args...) printf(fmt,##args)
#endif
③运行结果
[root@localhost 0708]# gcc -Wall debug.c
[root@localhost 0708]# ./a.out
段错误
④如果输入
[root@localhost 0708]# gcc -Wall debug.c -D__DEBUG__
[root@localhost 0708]# ./a.out
hello world
*ptr=ello world
段错误
-D 往.c文件中宏定义
二.脚本文件--脚本语言
脚本:实现批处理
make 叫做工程管理器
touch makefile 创立makefile文件
-rm rf 删除
mkdir 创建目录
cd 进入 cd ..返回上一级
Makefile的组成:
1.需要生成的目标文件
2.生成目标文件所需要的以来文件
3.生成目标文件的编译规则命令行
Makefile规定在书写command命令行前必须加一个<Tab>键
hello:hello.o 红色为目标 蓝色是依赖 紫色是文件
gcc hello.o -o hello
hello.o:hello.c 先把.c→变成.o文件→可执行文件
gcc -c hello.c
举例
vim add.c
int add(int a,int b)
{
return a+b;
}
vim sub.c
int sub(int a,int b)
{
return a-b;
}
vim mul.c
int mul(int a,int b)
{
return a*b;
}
vim div.c
int div(int a,int b)
{
return a/b;
}
vim main.c
#include<stdio.h>
int main()
{
printf("%d\n",add(6,3));
printf("%d\n",sub(6,3));
printf("%d\n",mul(6,3));
printf("%d\n",div(6,3));
return 0;
}
vim main1.c
#include<stdio.h>
int main()
{
printf("%d\n",add(6,3));
printf("%d\n",sub(6,3));
return 0;
}
vim makefile
cal_2:main1.o add.o sub.o
gcc main1.o add.o sub.o -o cal_2
cal_1:main.o add.o sub.o div.o mul.o
gcc main.o add.o sub.o div.o mul.o -o cal_1
main1.o:main1.c
gcc -c main1.c
main.o:main.c
gcc -c main.c
add.o:add.c
gcc -c add.c
sub.o:sub.c
gcc -c sub.c
mul.o:mul.c
gcc -c mul.c
div.o:div.c
gcc -c div.c
[root@localhost 0709]# make
make: “cal_2”是最新的。
[root@localhost 0709]# make cal_1
make: “cal_1”是最新的。
[root@localhost 0709]# ./cal_1
9
3
18
2
[root@localhost 0709]# ./cal_2
9
3
[root@localhost 0709]#
[root@localhost 0709]#
PHONY:clean
clean:
rm -f *.o cal
伪目标
Makefile都用大写
mkdir -p sub/src sub/png sub/doc sub/lib
总控Makefile:进入各个功能子目录里执行make命令,将所有的.o文件链接生成最终可执行的文件。
功能子目录Makefile:将src目录下的.c文件编译生成.o文件。
scripts 目录的Makefile:定义许多变量(相当于c语言的头文件)
先看scripts 的Makefile,再看总控 Makefile ,再看功能目录Makefile。
Makefile下的注释用#号
- 2016.7.9 GDB功能 GDB指令 Makefile举例
- Makefile+GDB
- makefile&gdb
- GDB指令
- GDB调试使用举例
- gcc/makefile/gdb常用命令
- linux GCC、GDB、Makefile
- linux GCC、GDB、Makefile
- gcc gdb make makefile
- GCC,GDB,Makefile
- GCC、GDB、Makefile
- GCC/Makefile/GDB
- gcc,gdb,makefile
- makefile与gdb调试
- 初识GDB和makefile
- gdb和makefile初步
- gcc,gdb,makefile
- LinuxBASE2--Makefile&GDB
- AS中快捷将json数据生成bean
- 2016-07-09Cpp_jianjie
- 查找算法练习一(线性查找+折半查找)
- android 属性动画入门
- Java字节和字符
- 2016.7.9 GDB功能 GDB指令 Makefile举例
- Android开发之SpannableString详解(表情文字)
- gcc_MinGW小窍门
- MFC编程之——根据输入情况改变按钮状态
- Fragment跳转时传递参数及结果回传的方法
- java学习笔记-基本程序设计结构
- Android开发之TextView高级应用
- 前景检测算法(十六)--背景减除结束篇
- 随手记之liistview之setEmptyView(view)