• Gdb调试工具/ Makfile项目管理


    gdb调试工具

    gcc -g main.c -o main

    常用命令

    命令            简写         作用

    help                h            按模块列出命令类

    help class                    查找某一类型的具体命令

    list                l             查看代码,可跟行号和函数名

    list -             l              网上查看代码

    quit             q            退出gdb

    run                 r            全速运行程序

    start                            单步执行,运行程序,停在第一行执行语句

    next                n            逐过程执行

    step                s            逐语句执行,遇到函数,调到函数内执行

    backtrace        b            查看函数的调用栈帧和层级关系

    info                I             查看函数内部局部变量的数值

    frame            f            切换函数的栈帧

    finish                        结束当前函数,返回函数调用点

    set                            设置变量的值

    run    arvg[1]    argv[2]            调试时命令行传递参数

    print            p            打印变量和地址

    break            b            设置断点,可根据行号和函数名

    delete            d            删除断点 d breakpoints NUM

    display                        设置观察变量

    undisplay                    取消观察变量

    continue                        继续全速运行剩下的代码

    enable breakpoints            启用断点

    disable breakpoints            禁用断点

    x                            查看内存x /20xw显示20个单元,16进制,4个字节每单元

    watch                         被设置观测点的变量发送修改时,打印显示

    i watch                         显示观测点

    core文件                    ulimit -c 1024 开启core文件,调试时gdb a.out core

    set var                        设置调试中变量的值 例如 n=10 set var n=100

    gdb调试模式

    gdb调试模式

    run全速运行

    start 单步调试

    set follow-fork-mode child/parent #Makefile项目管理 跟踪子进程和父进程

    Makfile项目管理

    项目代码编译管理

    节省编译项目时间

    一次编写终身受益

    操作示例文件:add.c sub.c mul.c dive.c main.c

    基本原则

    三要素

    目标

    条件

    命令

    Makefile工作原理

    分析各个目标和依赖之间的关系

    根据依赖关系自底向上执行命令

    根据修改时间比目标新,确定更新

    如果目标不依赖任何条件,则执行对应命令,以示更新

    clean

    用途:清除编译生产的中间.o文件和最终目标文件

    make clean 如果当前目录下有同名clean文件,则不执行clean对应的命令

    伪目标声明:.PHONY:clean

    clean命令中的特殊符号

    • "-"此条命令出错,make也会继续执行后续的命令。如:"-rm main.o"
    • "@"不显示命令本身,只显示结果。如:"@echo"clean done ""

    其他

        -make默认执行第一个出现的目标,可通过make dst指定要执行的目标

        -distclean目标

        -install目标

    -make -C指定目录 进入指定目录,调用里面的Makefile

    简单使用MakeFile

    python@ubuntu:~/linuxC/calc$ cat Makefile

    #目标:依赖(条件)

    #    命令

    #阶段一

    #app:add.c sub.c dive.c mul.c main.c

    #    gcc add.c sub.c dive.c mul.c main.c -o app

    #

    #阶段二

    #app:add.o sub.o dive.o mul.o main.o

    #    gcc add.o sub.o dive.o mul.o main.o -o app

    #add.o:add.c

    #    gcc -c add.c

    #sub.o:sub.c

    #    gcc -c sub.c

    #dive.o:dive.c

    #    gcc -c dive.c

    #mul.o:mul.c

    #    gcc -c mul.c

    #main.o:main.c

    #    gcc -c main.c

    #阶段三

    # $@表示目标,$^表示所有依赖,$<表示依赖中的第一个

    #obj=add.o sub.o mul.o dive.o main.o

    #src = $(wildcard *.c)

    #obj = $(patsubst %.c,%.o,$(src))

    #target = app

    #$(target):$(obj)

    #    gcc $^ -o $@

    #%.o:%.c

    #    gcc -c $< -o $@

    #阶段四

    CPPFLAGS= -Iinclude

    CFLAGS= -g -Wall

    LDFLAGS=

    CC=gcc

    #CC=arm-linux-gcc

    src = $(wildcard *.c)

    obj = $(patsubst %.c,%.o,$(src))

    target = app

    $(target):$(obj)

        $(CC) $^ $(LDFLAGS) -o $@

    %.o:%.c

        $(CC) -c $< $(CFLAGS) $(CPPFLAGS) -o $@

    .PHONY:clean

    #彻底清除生生过程文件

    clean:

        -rm -f *.o

        -rm -f app

    #彻底清除生生过程文件和生成配置文件

    distclean:

        rm /usr/bin/app

    install:

        cp app /usr/bin

    test:

        @echo $(src)

        @echo $(obj)

  • 相关阅读:
    回话处理程序(17)
    PDO介绍(16)
    MySQL基础
    保护网站安全(13)
    身份验证(12)
    处理HTML表单(11)
    错误和异常处理(7)
    jQuery 选择器
    官网jquery压缩版引用地址:
    HTML mate标签
  • 原文地址:https://www.cnblogs.com/XiaoGuanYu/p/8400455.html
Copyright © 2020-2023  润新知