操作系统实验debug总结

在本学期(2017-2018学年第二学期)的操作系统实验课的作业时编写操作系统,在调试过程中遇到了极大问题,下面总结一下debug工具和方法。
我使用的是bochs+nasm+Mingw(主要是其中的gcc、objdump、objcopy、ld)。

对于bochs调试,我就不说了,不会的同学进入bochsdbg.exe后输入help一下,对某个指令help一下(help [name])可以看该指令的详细信息,推荐熟悉使用print-stack指令查看栈空间,xxp查看内存,u查看反汇编指令,b和c端点调试等等,最主要的是xxp和print-stack查看栈和内存空间。

重点来了,是不是觉得看着bochs的反汇编不知道运行到哪里去了(特别是C语言那些部分),下面提出一个解决方法:
在gcc编译的时候加入-g选项生成带调试信息的elf文件(注意,不要二进制文件),然后使用objdump来将该elf文件反汇编,选项是-Sl,当然还要加上其他指明机器框架之类的选项。
下面是效果:

_main():
:21
short *FAT;
struct Process processTable[Len];
int curId;

int _main() {
      11:   66 56                   push   esi
      13:   66 53                   push   ebx
      15:   66 83 ec 18             sub    esp,0x18
:22
    curId = 0;
      19:   66 c7 06 c0 50 00 00    mov    DWORD PTR ds:0x50c0,0x0
      20:   00 00 
:23
    initialScreen(1);
      22:   67 66 c7 04 24 01 00    mov    DWORD PTR [esp],0x1
      29:   00 00 
      2b:   66 e8 ea 12 00 00       call   131b <_initialScreen>
:24
    initialFile();
      31:   66 e8 f8 1d 00 00       call   1e2f <_initialFile>
:25
    initialProcessTable();
      37:   66 e8 b0 22 00 00       call   22ed <_initialProcessTable>
      3d:   e9 e0 02                jmp    320 <__file_alignment__+0x120>

一条C语言程序对应一段汇编代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值