《软件调试》4.3.4中的#define DEBUGCTRL_MSR 0x1D9问题
Windows内核调试
《软件调试》4.3.4中的#define DEBUGCTRL_MSR 0x1D9问题
potatsnow
2016-04-08, 00:20 上午
请问代码中标红的定义是怎么得到的?是通过查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;
}
Re: 《软件调试》4.3.4中的#define DEBUGCTRL_MSR 0x1D9问题
格蠹老雷
2016-04-15, 14:43 下午
是的,源自SDM
http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html