Skip to content

kdada/vos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vos

开发环境:
Fedora 26
Linux 4.11.8-300.fc26.x86_64

编译器:
x86_64-elf-gcc 7.2.0 cross compiler

调试器: GNU gdb (GDB) Fedora 8.0.1-33.fc26

模拟器:
qemu-system-x86_64 2.9.1

gen.sh:
用于生成Makefile,之后可以使用 make vos 构建启动镜像

qemu调试:
(1) 启动 qemu 进行调试
qemu-system-x86_64 -drive format=raw,file=./build/vos.img -s -S

  • -s:表示进入 gdb 调试模式,默认监听 1234 端口。
  • -S:表示 qemu 启动后立即等待 gdb 控制。

(2) 打开 gdb,输入 target remote:1234,端口与上面相同,即可连接并开始调试

  • gdb:

    • set arch 可以显示所有可用架构
    • set arch i8086 设置架构为8086,否则在gdb调试实模式时反汇编不正常
    • 从实模式切换到长模式的时候gdb会出现错误,此时先disconnect.然后设置架构为i386:x86-64:intel再重新连接
    • 在使用 i8086 时,可能会出现 Remote 'g' packet reply is too long 的错误,出现这个错误的时候,直接
    • set arch i386:x86-64:intel,然后再次连接(此时反汇编显示不正常,但是可以调试)。
    • set disassemble-next-line on 设置执行后自动反汇编下一行并显示
    • set disassembly-flavor intel 设置汇编显示为intel汇编
  • gdb调试:

    • b *addr 在地址上设置断点
    • c 继续执行直至遇到断点
    • si 单步执行一条指令
    • ni 单步执行一条指令(跳过函数)
    • delete num 删除断点
    • info reg 查看寄存器
    • finish 执行到返回
    • x/nuf addr
         u 每个显示单元的大小,u可以是下列之一:  
         b 表示单字节  
         h 表示双字节  
         w 表示四字节  
         g 表示八字节  
         
         f显示格式,f可以是下列之一:  
         x 按十六进制格式显示变量  
         d 按十进制格式显示变量  
         u 按十进制格式显示无符号整型  
         o 按八进制格式显示变量  
         t 按二进制格式显示变量  
         a 按十六进制格式显示变量  
         i 指令地址格式  
         c 按字符格式显示变量  
         s 按字符串格式显示变量  
         f 按浮点数格式显示变量  

About

intel x64 cpu基础开发

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published