您的位置:首页 > 其它

MIT 6.828的lab1

2014-06-14 18:18 661 查看
lab1唯一需要写的代码就是第三部分,backtrace的代码如下,其实这一部分,并不难,就是自己拖了太长时间,拖延症很严重。

 

uint32_t ebp,eip;
struct Eipdebuginfo info;
int i=0;
ebp=read_ebp();
while(ebp!=0) {
eip=*((uint32_t *)(ebp+4));

// change ip to addr
// debuginfo_eip(uintptr_t addr, struct Eipdebuginfo *info)
debuginfo_eip((uintptr_t)eip,&info);
cprintf("ebp %0x eip %0x ",ebp,eip);
cprintf("args ");
for(i=0;i<=4;i++)
cprintf("%0x ",*(uint32_t *)(ebp+8+4*i));
cprintf("\n");
cprintf("	eipfile: %s	eipfunc: %s ",info.eip_file,info.eip_fn_name);
cprintf("\n");

ebp=*((uint32_t *)ebp);
}


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mit 6.828 操作系统