linux下调试linux0.11

image直接用的这里的http://oldlinux.org/Linux.old/Linux-0.11/images/









insight-6-8-1编译 

yum install ncurses-devel

./configure --disable-werror 

make

make install 









关键编译bochs,要修改源码再编译  参考这里1楼点击打开链接

./configure  --enable-gdb-stub

make

make install




0x0000a0ec in page_fault().的问题是由于bochs给GDB丢出了signal 0,另外GDB也不能处理signal 0 

该signal 0 由bochs的gdbstub.cc 文件的函数debug_loop 的如下语句发出
  write_signal(&buf[1], 0); (bochs2.2 中gdbstub.cc 第475行)。
尝试将该0值改为其他,并在GDB这边来相应忽略,发现系统响应速度变慢,效果不佳。

尝试另一种方法,在bochs的cpu.cc文件的函数cpu_loop代码中修改一下(将第一个return 注释掉 第156行),该问题不再出现,由于在该情况下不需要和GDB交互,因此系统响应的速度没有变慢。暂时未发现其他问题。
  void
BX_CPU_C::cpu_loop(Bit32s max_instr_count)
{
  unsigned ret;
  bxInstruction_c iStorage BX_CPP_AlignN(32);
  bxInstruction_c *i = &iStorage;

#if BX_DEBUGGER
  BX_CPU_THIS_PTR break_point = 0;
#if BX_MAGIC_BREAKPOINT
  BX_CPU_THIS_PTR magic_break = 0;
#endif
  BX_CPU_THIS_PTR stop_reason = STOP_NO_REASON;
#endif

  if (setjmp( BX_CPU_THIS_PTR jmp_buf_env )) 
  { 
    // only from exception function can we get here ...
    BX_INSTR_NEW_INSTRUCTION(BX_CPU_ID);

#if BX_GDBSTUB
    if (bx_dbg.gdbstub_enabled) {
      //return; // 此处注释掉,以免return后,后续处理发送signal 0 给GDB
    }
#endif
  }

你可能感兴趣的:(linux下调试linux0.11)