|
这两种模式同时都可以在硬件和CPU指令级模拟器上工作。
对于调试应用程序,我们采用插桩(stub)的方式,它是在目标机器的操作系统和调试器内分别加入些调试功能模块,二者互通信息来进行调试。如果目标操作系统支持调试的功能,直接通过调试器进行调试功能的处理。如果目标机器不支持调试的功能,就需要用软件接管目标系统的全部异常处理(exception handler)及部分中断处理,在其中插入调试端口通信模块,与主机的调试器交互。
调试器需要完成的功能:
- 调试器与目标操作系统通过指定通信通路(串口、网卡、并口,USB)进行通信;
- 目标操作系统对于被调试程序的所有异常处理最终都要转向通信模块,告知调试器当前的异常号;调试器据此向xIDE用户显示被调试程序产生了哪一类异常(断点、内存缺页等);
- 调试器对于用户修改和控制被调试程序的请求,将转换成对被调试程序的地址空间或目标平台的某些寄存器的访问,并通过目标操作系统完成这些请求。
对于调试OS或frameware,我们采用片上调试(On Chip Debugging)。我们通过GDB来控制硬件开发板上的ICE。
|