计算机的系统内存探测方法、装置、操作系统及存储介质与流程

文档序号:36509754发布日期:2023-12-29 07:00阅读:22来源:国知局
计算机的系统内存探测方法与流程

本发明涉及操作系统,特别涉及一种计算机的系统内存探测方法、装置、操作系统及存储介质。


背景技术:

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

2、嵌入式调试器为设备软件的开发人员提供交叉调试环境,与本地调试相比,远程交叉调试中需要gdbserver程序,它和目标程序都是运行在计算机中,gdb调试器与gdbserver之间通过网络或者串口进行通讯,并基于rsp调试协议进行调试。嵌入式软件调试器能被用于确定问题原因,然而传统的嵌入式软件调试器具有能力限制,往往只能够调试一种嵌入式计算机程序,例如用户进程,或者嵌入式系统中的任务。操作系统本身以及系统的服务程序、中断处理程序等,这些程序也有调试的需求(操作系统开发人员)。但是这些程序往往不能通过提供给用户的软件调试工具进行调试,只能通过硬件仿真器进行调试。硬件仿真器存在价格高,连接不方便等问题,不适合普通用户使用。因此需要提供系统级调试功能,主机端调试器在调试期间需要读取大量的内存,计算机端调试器需要保证读写内存期间不会产生异常,否则会导致计算机端调试无法正常工作,导致调试中断,调试使用不稳定。调试用户程序,调试器可以依赖操作系统提供的相关机制,如通过mmu提供的接口检测该内存是否映射,是否有读取权限,但是调试操作系统本身时,操作系统还没初始化mmu,上述功能无法使用,因此需要提供一种有效的方法探测该内存是否可读写,如果不能读写需返回错误码,而不是导致调试器异常。


技术实现思路

1、有鉴于此,本发明实施例提供了一种计算机的系统内存探测方法、装置、操作系统及存储介质,所述方法包括:远程调试器通过计算机的调试代理测试计算机的系统内存;当出现所述内存访问异常时,计算机进入内存访问异常处理函数;当判断出导致访问异常的指令为调试代理的内存访问指令时,内存访问异常处理函数退出运行,计算机返回至调试代理的内存错误返回指令;内存错误返回指令向调试代理反馈内存访问错误码;调试代理根据所述内存访问错误码停止所述测试,向远程调试器反馈系统内存访问错误码。本发明实施例的技术方案在计算机出现系统内存访问异常时远程调试器不会挂起,提高调试系统的稳定性和可用性,提升了用户体验,缩短问题排查时间。

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

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

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

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

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

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

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

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

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

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

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

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

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

15、由上,通过内存访问异常对应的异常处理函数来调用内存访问异常处理函数,无需修改计算机的异常向量表,且更新内存访问异常处理函数也不影响内存访问异常对应的异常处理函数。

16、第二方面,本发明实施例提供了一种计算机的系统内存探测装置,包括:远程内存探测模块,用于远程调试器通过计算机的调试代理测试计算机的系统内存;访问异常响应模块,用于当出现所述内存访问异常时,计算机进入内存访问异常处理函数;访问异常处理模块,用于当判断出导致所述内存访问异常的指令为所述调试代理的内存访问指令时,所述内存访问异常处理函数退出运行,计算机返回至所述调试代理的内存错误返回指令;错误本地反馈模块,用于所述内存错误返回指令向调试代理反馈内存访问错误码;错误远程反馈模块,用于调试代理根据所述内存访问错误码停止所述测试,并向远程调试器反馈系统内存访问错误码。

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

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

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

20、在第二方面的一种可能实施方式中,访问异常处理模块在判断导致所述内存访问异常的指令是否为所述调试代理的内存访问指令时,具体用于所述内存访问异常处理函数判断所述调试代理的上下文的pc值是否为所述调试代理的任一内存访问指令的pc值。

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

22、在第二方面的一种可能实施方式中,访问异常处理模块在停止所述内存访问异常处理函数退出运行且使计算机返回至所述调试代理的内存错误返回指令时,具体用于:所述内存访问异常处理函数修改所述调试代理的上下文的pc值为所述内存错误返回指令的pc值,之后所述内存访问异常处理函数退出运行;计算机返回至所述调试代理的上下文的pc值指向的指令。

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

24、在第二方面的一种可能实施方式中,还包括:异常处理注册模块,用于所述调试代理注册所述内存访问异常处理函数。

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

26、在第二方面的一种可能实施方式中,远程内存探测模块具体用于远程调试器通过计算机的调试代理调用内存测试接口测试计算机的系统内存;所述内存错误返回指令位于所述内存测试接口中;错误本地反馈模块具体用于:所述内存错误返回指令向所述内存测试接口反馈所述内存访问错误码,所述内存测试接口向调试代理反馈所述内存访问错误码。

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

28、在第二方面的一种可能实施方式中,访问异常响应模块具体用于当出现所述内存访问异常时,计算机进入所述内存访问异常对应的异常处理函数,所述异常处理函数调用所述内存访问异常处理函数。

29、由上,通过内存访问异常对应的异常处理函数来调用内存访问异常处理函数,无需修改计算机的异常向量表,且更新内存访问异常处理函数也不影响内存访问异常对应的异常处理函数。

30、第三方面,本发明实施例提供了一种操作系统,其所包括的程序被计算机执行时用于执行第一方面任一实施方式所述方法。

31、第四方面,本发明实施例提供了一种计算设备,包括:总线;通信接口,其与所述总线连接;至少一个处理器,其与所述总线连接;以及至少一个存储器,其与所述总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行本发明第一方面任一所述实施方式。

32、第五方面,本发明实施例提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行本发明第一方面任一所述实施方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1