|
|
|
|
|
|
|
Windows内核调试
帖子发起人: 猪头 发起时间: 2009-04-17 15:48 下午 回复: 8
|
帖子排序:
|
|
|
|
2009-04-17, 15:48 下午
|
猪头
注册: 2009-04-17
发 贴: 5
|
调试WINDOWS 2003
|
|
|
|
机器: 一台装有W2K3的AMD64机器, 以及装在他上面的同系统的64位虚拟机
用WINDBG连接两台机器, 为了某某原因我需要通过WINDBG查看虚拟机某线程内某函数中的某变量值. 当我打开Locals, 看到的本地变量值跟用DbgPrint输出的值完全不一样.
请问各位, 这是什么原因? 如何解决呢?
谢谢!!!
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-17, 18:37 下午
|
Thomson
注册: 2008-07-03
发 贴: 211
|
|
|
如果你看的是local里面的传入参数的话,可能是由于amd64默认使用register来传递参数有关,DbgPrint输出的应该是对的. 在amd64下面,函数的前4个参数分别存在rcx, rdx, r8, r9里面,如果是在方法入口可以看这几个register.
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-18, 15:42 下午
|
猪头
注册: 2009-04-17
发 贴: 5
|
|
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-19, 16:06 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
|
|
使用的是什么编译器?调试的是调试版本还是发布版本?
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-20, 09:08 上午
|
猪头
注册: 2009-04-17
发 贴: 5
|
|
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-20, 12:38 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
|
|
尝试过在执行好函数的序言(Prolog)代码(push ebp; mov ebp, esp)后执行dv命令么?因为局部变量通常是使用栈帧基地址引用的,在没有执行序言代码前,栈帧基地址还没有完全建立好。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-21, 22:08 下午
|
Thomson
注册: 2008-07-03
发 贴: 211
|
|
|
如果是参数的问题的话,并且要看的function是自己的code,可以试试用/HomeParams开关编译程序...不过,系统的function是不行的.
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-24, 15:25 下午
|
猪头
注册: 2009-04-17
发 贴: 5
|
|
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-28, 14:26 下午
|
猪头
注册: 2009-04-17
发 贴: 5
|
|
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
高端调试 » 软件调试 » Windows内核调试 » 调试WINDOWS 2003
|
|
|
|
|
|