首页 > 编程知识 正文

windows内核编程 谭文 pdf(perl语言入门第七版 电子版)

时间:2023-05-05 08:28:17 阅读:73746 作者:3475

问题:无法显示多次输出的字符串的问题

原因调查1、跟踪定位问题使用baochs跟踪时,第二次调用dispstr时发现输入的字符串地址是问题。 所以即使多次打印也不会显示。

下图:

上面三个是与三次输出相对应的字符串地址;

发送到下一个disostr的参数是地址行错误的。

只要修改下面发送的地址,就能正常显示。

可以判断其他部分没有问题,

是dispstr有问题,还是液晶屏工具有问题,

在我这里工具版本和原书的差距很大,所以工具问题的可能性也很高。

这是disp_str的代码,似乎没有任何问题。

关键的原作者不能改变二进制文件让程序过去吧。

2、利用反汇编工具查找问题

想不到。 本方法查看kernel反汇编,看看cstart发送给disp_str的值是否正确。

使用反汇编工具显示调用点代码。

具体如下图所示。

我发现没有问题。 eax中设定的地址差分值与上述一致。

但是,这里需要从细节上加以注意。 这里是ebx

突然我明白了,因为我们的dispstr里面使用了bl,同时并没有备份恢复ebx,所以才展示异常。

果然只要修改编译,就能正常展示

总结是编译器的变化,可能是现在不能对函数随意修改ebx了;

虽然找了初期的ubuntu,但是gcc等没能下来,也没有具体验证。

对于64位系统,我认为还有其他问题。

总之调试要人命啊。 找错很困难。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。