Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核调试

帖子发起人: potatsnow   发起时间: 2016-04-08 00:20 上午   回复: 1

Print Search
帖子排序:    
   2016-04-08, 00:20 上午
potatsnow 离线,最后访问时间: 2016/4/7 16:08:01 potatsnow

无等级
注册: 2016-04-07
发 贴: 1
《软件调试》4.3.4中的#define DEBUGCTRL_MSR 0x1D9问题
Reply Quote
请问代码中标红的定义是怎么得到的?是通过查intel software development manual吗?
我的机器是core i5,在vmware中安装了xp sp3,下面红色处__asm int 3了一下,用windbg加载后F5到断点处,预期再F10一下就到条件分支处停下来,但结果仍然是单步执行。。。
直观感觉是DEBUGCTRL_MSR在core i5上已经不是0x1D9了,但不知道上哪儿查这个值,希望张老师能答疑解惑,谢谢。
#define DEBUGCTRL_MSR 0x1D9
#define BTF 2
int main(int argc, char* argv[])
{
int m,n;
MSR_STRUCT msr;
    CDvrAgent da;

    if(!da.Init())
{
printf("Failed in initialization.\n");
return E_FAIL;
}
memset(&msr,0,sizeof(MSR_STRUCT));

msr.MsrNum=DEBUGCTRL_MSR;
msr.MsrLo|=BTF;
da.WRMSR(msr);

//Beginning of the code which will run in full speed 
  __asm int 3
m=10,n=2;
m=n*2-1;
if(m==m*m/m)
m=1;
else
{
m=2;
}
//End of the code which runs in full speed
m*=m;

if(da.RDMSR(msr))
{
printf("MSR=0x%x\n", msr.MsrLo);
}
else
printf("Failed to ReadMSR().\n");

return S_OK;
}

IP 地址: 已记录   报告
   2016-04-15, 14:43 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 《软件调试》4.3.4中的#define DEBUGCTRL_MSR 0x1D9问题
Reply Quote
是的,源自SDM
http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » Re: 《软件调试》4.3.4中的#define DEBUGCTRL_MSR 0x1D9问题

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.