计算机的系统内存探测方法技术方案

技术编号:39896465 阅读:6 留言:0更新日期:2023-12-30 13:09
本发明专利技术实施例提供了一种计算机的系统内存探测方法

【技术实现步骤摘要】
计算机的系统内存探测方法、装置、操作系统及存储介质


[0001]本专利技术涉及操作系统
,特别涉及一种计算机的系统内存探测方法

装置

操作系统及存储介质


技术介绍

[0002]软件调试器帮助很多嵌入式计算机程序员找到嵌入式目标计算机程序中的错误

[0003]嵌入式调试器为设备软件的开发人员提供交叉调试环境,与本地调试相比,远程交叉调试中需要
GdbServer
程序,它和目标程序都是运行在计算机中,
GDB
调试器与
GdbServer
之间通过网络或者串口进行通讯,并基于
RSP
调试协议进行调试

嵌入式软件调试器能被用于确定问题原因,然而传统的嵌入式软件调试器具有能力限制,往往只能够调试一种嵌入式计算机程序,例如用户进程,或者嵌入式系统中的任务

操作系统本身以及系统的服务程序

中断处理程序等,这些程序也有调试的需求
(
操作系统开发人员
)。
但是这些程序往往不能通过提供给用户的软件调试工具进行调试,只能通过硬件仿真器进行调试

硬件仿真器存在价格高,连接不方便等问题,不适合普通用户使用

因此需要提供系统级调试功能,主机端调试器在调试期间需要读取大量的内存,计算机端调试器需要保证读写内存期间不会产生异常,否则会导致计算机端调试无法正常工作,导致调试中断,调试使用不稳定

调试用户程序,调试器可以依赖操作系统提供的相关机制,如通过
MMU
提供的接口检测该内存是否映射,是否有读取权限,但是调试操作系统本身时,操作系统还没初始化
MMU
,上述功能无法使用,因此需要提供一种有效的方法探测该内存是否可读写,如果不能读写需返回错误码,而不是导致调试器异常


技术实现思路

[0004]有鉴于此,本专利技术实施例提供了一种计算机的系统内存探测方法

装置

操作系统及存储介质,所述方法包括:远程调试器通过计算机的调试代理测试计算机的系统内存;当出现所述内存访问异常时,计算机进入内存访问异常处理函数;当判断出导致访问异常的指令为调试代理的内存访问指令时,内存访问异常处理函数退出运行,计算机返回至调试代理的内存错误返回指令;内存错误返回指令向调试代理反馈内存访问错误码;调试代理根据所述内存访问错误码停止所述测试,向远程调试器反馈系统内存访问错误码

本专利技术实施例的技术方案在计算机出现系统内存访问异常时远程调试器不会挂起,提高调试系统的稳定性和可用性,提升了用户体验,缩短问题排查时间

[0005]第一方面,本专利技术实施例提供了一种计算机的系统内存探测方法,包括:远程调试器通过计算机的调试代理测试计算机的系统内存;当出现所述内存访问异常时,计算机进入内存访问异常处理函数;当判断出导致所述内存访问异常的指令为所述调试代理的内存访问指令时,所述内存访问异常处理函数退出运行,计算机返回至所述调试代理的内存错误返回指令;所述内存错误返回指令向调试代理反馈内存访问错误码;调试根据所述内存访问错误码代理停止所述测试,并向远程调试器反馈系统内存访问错误码

[0006]由上,通过出现内存访问异常时计算机进入内存访问异常处理函数,以及当判断出导致访问异常的指令为调试代理的内存访问指令时,返回至调试代理的内存错误返回指令,在计算机出现系统内存访问异常时远程调试器不会挂起,提高调试系统的稳定性和可用性,提升了用户体验,缩短问题排查时间

[0007]在第一方面的一种可能实施方式中,所述内存访问指令包括以任一访问宽度读或写任一地址的所述系统内存的指令,所述访问宽度为字节的整数倍,根据所述计算机的操作系统获得

[0008]由上,通过内存访问指令以各种各访问宽度读或写各地址的系统内存,实现对目标计算机的系统内存全面测试

[0009]在第一方面的一种可能实施方式中,判断导致所述内存访问异常的指令是否为所述调试代理的内存访问指令,具体包括:所述内存访问异常处理函数判断所述调试代理的上下文的
PC
值是否为所述调试代理的任一内存访问指令的
PC


[0010]由上,通过判断出现内存访问异常时调试代理的上下文的
PC
值是否为任一内存访问指令的
PC
值,从而判断该内存访问异常时访问的内存是否是出现访问异常

[0011]在第一方面的一种可能实施方式中,所述内存访问异常处理函数退出运行,计算机返回至所述调试代理的内存错误返回指令,具体包括:所述内存访问异常处理函数修改所述调试代理的上下文的
PC
值为所述内存错误返回指令的
PC
值,之后所述内存访问异常处理函数退出运行;计算机返回至所述调试代理的上下文的
PC
值指向的指令

[0012]由上,判断出现内存访问异常时调试代理的上下文的
PC
值是当前的内存访问指令的
PC
值时,通过修改所述调试代理的上下文的
PC
值,使计算机返回至调试代理的内存错误返回指令,以反馈内存访问异常的错误码

[0013]在第一方面的一种可能实施方式中,还包括:所述调试代理注册所述内存访问异常处理函数

[0014]由上,通过注册的内存访问异常处理函数,在出现内存访问异常时运行,以避免挂死在远程调试器上

[0015]在第一方面的一种可能实施方式中,远程调试器通过计算机的调试代理测试计算机的系统内存,具体包括:远程调试器通过计算机的调试代理调用内存测试接口测试计算机的系统内存;所述内存错误返回指令位于所述内存测试接口中;所述内存错误返回指令向调试代理反馈内存访问错误码,具体包括:所述内存错误返回指令向所述内存测试接口反馈所述内存访问错误码,所述内存测试接口向调试代理反馈所述内存访问错误码

[0016]由上,调试代理还提供寄存器测试

断点测试和内存测试等多种功能,通过调试代理提供的内存测试接口测试系统内存和在出现内存访问异常时反馈内存访问错误码,使目标计算机的内存测试与其他远程测试通过一个调试代理完成

[0017]在第一方面的一种可能实施方式中,当出现所述内存访问异常时,计算机进入内存访问异常处理函数,具体包括;当出现所述内存访问异常时,计算机进入所述内存访问异常对应的异常处理函数,所述异常处理函数调用所述内存访问异常处理函数

[0018]由上,通过内存访问异常对应的异常处理函数来调用内存访问异常处理函数,无需修改计算机的异常向量表,且更新内存本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种计算机的系统内存探测方法,其特征在于,包括:远程调试器通过计算机的调试代理测试计算机的系统内存;当出现内存访问异常时,计算机进入内存访问异常处理函数;当判断出导致所述内存访问异常的指令为所述调试代理的内存访问指令时,所述内存访问异常处理函数退出运行,计算机返回至所述调试代理的内存错误返回指令;所述内存错误返回指令向调试代理反馈内存访问错误码;调试代理根据所述内存访问错误码停止所述测试,并向远程调试器反馈系统内存访问错误码
。2.
根据权利要求1所述方法,其特征在于,所述内存访问指令包括以任一访问宽度读或写任一地址的所述系统内存的指令,所述访问宽度为字节的整数倍,根据所述计算机的操作系统获得
。3.
根据权利要求1所述方法,其特征在于,判断导致所述内存访问异常的指令是否为所述调试代理的内存访问指令,具体包括:所述内存访问异常处理函数判断所述调试代理的上下文的
PC
值是否为所述调试代理的任一内存访问指令的
PC

。4.
根据权利要求1所述方法,其特征在于,所述内存访问异常处理函数退出运行,计算机返回至所述调试代理的内存错误返回指令,具体包括:所述内存访问异常处理函数修改所述调试代理的上下文的
PC
值为所述内存错误返回指令的
PC
值,之后所述内存访问异常处理函数退出运行;计算机返回至所述调试代理的上下文的
PC
值指向的指令
。5.
根据权利要求1所述方法,其特征在于,远程调试器通过计算机的调试代理测试计算机的系统内存,具体包括:远程调试器通过计算机的调...

【专利技术属性】
技术研发人员:彭元志
申请(专利权)人:科东广州软件科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1