UNIX系统编程-day3

UNIX系统编程-day3

Makefile

三要素:1. 目标 2. 依赖 3. 规则命令
写法:
目标:依赖
命令

变量使用:$(变量名)
函数:
wildcard 可进行文件匹配
patsubst 内容替换
变量:

  • $@ 代表目标
  • $^ 代表全部依赖
  • $< 第一个依赖
  • $? 第一个变化的依赖
    模板:
#get all .c files
SrcFiles=$(wildcard *.c)
#all .c files --> .o files
ObjFiles=$(patsubst %.c,%.o,$(SrcFiles))

all:app app1

app:$(ObjFiles)
    gcc -o $@ -I ./include $(ObjFiles)
app1:$(ObjFiles)
    gcc -o $@ -I ./include $(ObjFiles)
#模式匹配规则,$<,$@ 这种只能出现在规则里
%.o:%.c
    gcc -c $< -I ./include -o $@
.PHONY: clean all

clean:
    -@rm -f *.o
    -@rm -f app app1

gdb调试

在编译时添加-g选项

  • run 启动程序
  • start 启动程序,在main入口停止
  • n next,单步执行
  • step 单步执行,试图进入函数内部,库函数无法进入。
  • quit 退出gdb
  • 设置启动参数 set args xx xx
  • list 默认显示10行代码。 回车继续显示11-20的代码 list file 显示file文件
  • b
    b n 在n行设置断点
    b func 在函数设置断点 b file:10 在file文件的第十行设置断点
    b line if i == 1 只有i==1时才断
  • info b 显示所有断点 d 断点号 删除断点
  • c continue 跳到下一个断点。
  • p var 打印变量信息
  • set
    set argc = 4;
    set argv[1] = "lskdjf"
    set argv[2] = "3"
  • display 显示变量的值,用于追踪。
  • undisplay n 删除编号为n的display的值,要先info display获取编号
  • gdb app core 能直接告诉你事发现场
posted @ 2020-05-04 16:18  傻蜗牛  阅读(81)  评论(0)    收藏  举报