0
点赞
收藏
分享

微信扫一扫

linux下调试linux0.11

JamFF 2022-08-08 阅读 96


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
}

举报

相关推荐

0 条评论