Re: 调试WINDOWS 2003

Windows内核调试

调试WINDOWS 2003


猪头 2009-04-17, 15:48 下午

  机器: 一台装有W2K3的AMD64机器, 以及装在他上面的同系统的64位虚拟机

用WINDBG连接两台机器, 为了某某原因我需要通过WINDBG查看虚拟机某线程内某函数中的某变量值.  当我打开Locals, 看到的本地变量值跟用DbgPrint输出的值完全不一样.

请问各位, 这是什么原因? 如何解决呢?

谢谢!!!

Re: 调试WINDOWS 2003


Thomson 2009-04-17, 18:37 下午
如果你看的是local里面的传入参数的话,可能是由于amd64默认使用register来传递参数有关,DbgPrint输出的应该是对的. 在amd64下面,函数的前4个参数分别存在rcx, rdx, r8, r9里面,如果是在方法入口可以看这几个register.

Re: 调试WINDOWS 2003


猪头 2009-04-18, 15:42 下午

有没有什么办法解决的???

Re: 调试WINDOWS 2003


格蠹老雷 2009-04-19, 16:06 下午
使用的是什么编译器?调试的是调试版本还是发布版本?

Re: 调试WINDOWS 2003


猪头 2009-04-20, 09:08 上午

IFS kit 3790, Debug

Re: 调试WINDOWS 2003


格蠹老雷 2009-04-20, 12:38 下午
尝试过在执行好函数的序言(Prolog)代码(push ebp; mov ebp, esp)后执行dv命令么?因为局部变量通常是使用栈帧基地址引用的,在没有执行序言代码前,栈帧基地址还没有完全建立好。

Re: 调试WINDOWS 2003


Thomson 2009-04-21, 22:08 下午
如果是参数的问题的话,并且要看的function是自己的code,可以试试用/HomeParams开关编译程序...不过,系统的function是不行的.

Re: 调试WINDOWS 2003


猪头 2009-04-24, 15:25 下午
问题还没解决

Re: 调试WINDOWS 2003


猪头 2009-04-28, 14:26 下午
感谢 Thomson !!!

Powered by Community Server Powered by CnForums.Net