20230817 chapter3 tooling up 学习make GDB git 等工具

发布时间 2023-08-17 23:35:04作者: 杨大茄子

make -B   强制重新make

 gdb之前,需要先在编译时加入 -g 参数以开启debug模式,修改一下makefile;

TARGET=move

ifdef DEBUG
DEBUGFLGS = -g
else
DEBUGFLGS =
endif

$(TARGET): $(TARGET).o
        ld -o $@  $^

%.o:%.s
        as $(DEBUGFLGS)  -o $@ $<

clean:
        rm *.o $(TARGET)

  现在,开启debug模式有2种方式

1,直接 make DEBUG=1

 2,在环境变量里面添加 ,

export DEBUG=1
 
使用GDB:  gdb 程序名称
gdb move

run 或者 r  直接运行

list或者 l  显示10行,再次键入l 再显示10hang 

list 1,1000
to list our entire program.
disassemble _start  反汇编程序

use the breakpoint command (or b):
b _start  设置断点

b 行号

info
registers (or i r):   查看寄存器值

 

step command (or s).   单步调试;

 

continue (or c), to continue to
the next breakpoint or to the end of the program.  c  继续运行至下一个断点,
info breakpoints
(or i b) command;  查看设置的断点,  delete   删除某个断点

 

display memory in different formats, the main command being x. It has
the following format:
x /Nfu addr  显示内存信息
where
• N is the number of objects to display
• f is the display format where some common ones are
  • t for binary
  • x for hexadecimal
  • d for decimal
  • i for instruction
  • s for string
• u is unit size and is any of
  • b for bytes
  • h for halfwords (16 bits)
  • w for words (32 bits)
  • g for giant words (64 bits)

 

 

To exit gdb, type q (for quit or type control-d). 退出GDB
 

 

交叉编译

sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

修改一下 makefile,直接指定编译程序

仿真

如果没有arm64CPU 也可以在intel CPU 的linux下安装qemu来仿真arm CPU

 

  -f  手动指定 makefile;