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

《软件调试》的示例程序

帖子发起人: microbe0821   发起时间: 2010-05-19 22:14 下午   回复: 5

Print Search
帖子排序:    
   2010-05-19, 22:14 下午
microbe0821 离线,最后访问时间: 2011/11/15 4:40:06 microbe0821

发帖数前150位
注册: 2010-04-26
发 贴: 7
执行和完成调用BTS的代码是属于系统或者CPU的哪一部分呢?可以调试吗?
Reply Quote
前面问的CpuWhere无法获取到数据的问题,没有人回答,所以我想实际调试一下,看看为什么BTS没有起作用,请问完成BTS功能的代码应该是哪一部分,,是CPU的微码么?我怎么样才能调试它们啊?
非常感谢!
IP 地址: 已记录   报告
   2010-05-20, 12:55 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 执行和完成调用BTS的代码是属于系统或者CPU的哪一部分呢?可以调试吗?
Reply Quote
 BTS是通过MSR寄存器来启用的,代码在EnableBTS函数中,最近有些忙,我今晚找时间试一下你说的问题
IP 地址: 已记录   报告
   2010-05-20, 22:55 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 执行和完成调用BTS的代码是属于系统或者CPU的哪一部分呢?可以调试吗?
Reply Quote

原因是CPU对BTS记录的大小做了调整。

typedef struct tagBtsRecord
{
 DWORD dwFrom;
 DWORD dwTo;
 DWORD dwFlags;
} BtsRecord, *PBtsRecord;

Pentium M和P4时,这个结构在32位模式时每个字段都是32位的,64位时各个字段都是64位的。

但是后来的CPU统一使用64位了,不管是否工作在32位模式还是64位模式。

也就是说,需要把上面的结构扩展成64位。可以通过cpuid指令来检查CPU的这种特征:

以EAX=1执行CPUID指令,然后判断ECX寄存器的bit 2,即DTES64位:

64-bit DS Area. A value of 1 indicates the processor supports DS
area using 64-bit layout

 

 


IP 地址: 已记录   报告
   2010-05-24, 20:14 下午
microbe0821 离线,最后访问时间: 2011/11/15 4:40:06 microbe0821

发帖数前150位
注册: 2010-04-26
发 贴: 7
Re: 执行和完成调用BTS的代码是属于系统或者CPU的哪一部分呢?可以调试吗?
Reply Quote
好的,谢谢老师,我已经在试了。
老师这个是在Intel手册上看到的么?难道我看漏了?

是不是只有BTS_RECORD才是64位的,DEBUG_STORE是不是也要一并改成64位的哇?
IP 地址: 已记录   报告
   2010-05-24, 20:43 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 执行和完成调用BTS的代码是属于系统或者CPU的哪一部分呢?可以调试吗?
Reply Quote

目前的手册说的不是很清楚,建议你看一下LINUX内核的源代码


IP 地址: 已记录   报告
   2010-05-25, 22:03 下午
microbe0821 离线,最后访问时间: 2011/11/15 4:40:06 microbe0821

发帖数前150位
注册: 2010-04-26
发 贴: 7
Re: 执行和完成调用BTS的代码是属于系统或者CPU的哪一部分呢?可以调试吗?
Reply Quote

非常谢谢老师的回答,我已经搞定啦,呵呵!

参考以下地址的Linux源代码:http://lwn.net/Articles/259339/

64 bit DS Area,应该就是指DebugStore和BtsRecord都是64位的。


IP 地址: 已记录   报告
高端调试 » 图书 » 《软件调试》的示例程序 » 执行和完成调用BTS的代码是属于系统或者CPU的哪一部分呢?可以调试吗?

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