受保护系统的应用程序调试方法及智能终端的制作方法_3

文档序号:9810440阅读:来源:国知局
进程发送输出重定向请求,获得应用程序的进程针对该请求的允许信息后,将应用程序的进程的标准输出、标准错误的文件描述符,分别重定向到进程管理器101所在进程的标准输出文件、标准错误文件。
[0068]当后续应用程序启动运行时,进程管理器101可以从本进程的标准输出文件、标准错误文件中,分别直接获取应用程序正常运行或调试的输出信息、出错信息,进程管理器101可以将包含应用程序调试结果的输出信息和/或出错信息输出,例如虚拟打印并显示到显示设备上,便于进程管理器101或者调试员在后续调试应用程序的过程中,监控调试信息。
[0069]S204:调试启动器103输出进程连接命令到命令处理器104。
[0070]具体地,调试启动器103直接获取上述步骤S203中存储的、为应用程序分配的进程的进程标识;根据获取的进程标识、以及本智能终端中预设的调试器的名称,生成进程连接命令。
[0071]较佳地,进程连接命令中可以包括多个命令行。例如,命令行gdb attachapp Ii cat 1n_pid;该命令行中gdb表示调试器的名称,attach表示连接,appl i cat 1n_pid表示应用程序的进程的进程标识。
[0072]较佳地,调试启动器103获取上述步骤S203中涉及的进程标识的存储位置,包括指定文件的存放路径、以及进程标识在指定文件中的位置;根据获取的进程标识的存储位置、以及本智能终端中预设的调试器的名称,生成进程连接命令。
[0073]例如进程连接命令中的命令行可以包括gdb attach'cat/tmp/app_id',该命令行中/ tmp/app_id表示指定文件的存放路径。
[0074]调试启动器103将生成的进程连接命令输出到命令处理器104。
[0075]S205:命令处理器104接收到进程连接命令后,通过识别出其中的关键字涉及调试器102,启动调试器102,并将进程连接命令转发至调试器102。
[0076]具体地,命令处理器104接收到进程连接命令后,从中解析出调试器的名称作为关键字,根据该关键字进行查询,从本智能终端中查询出名称与该关键字相一致的调试器作为该关键字涉及调试器102。
[0077]较佳地,调试器102可以是GDB(Gnu’s not unix DeBugger,非unix调试器)。
[0078]命令处理器104启动调试器102,将接收的进程连接命令转发至调试器102。
[0079]S206:智能终端中的调试器102接收到进程连接命令后,根据其中携带的进程标识的存储位置或进程标识,连接进程,以准备调试所述进程中的应用程序。
[0080]具体地,调试器102根据进程连接命令中携带的进程标识的存储位置,获取进程标识;根据获取的进程标识连接对应进程。
[0081]较佳地,调试器102接收到进程连接命令后,从中解析出指定文件的存放路径和进程标识在指定文件中的位置;根据解析出的存放路径查找出指定文件,进而根据解析出的进程标识在指定文件中的位置,从查找出的指定文件中获取为应用程序分配的进程的进程标识。之后,调试器102根据获取的进程标识,连接该进程标识对应的进程,即连接为应用程序分配的进程。
[0082]或者,调试器102直接根据进程连接命令中携带的进程标识,连接该进程标识所对应的进程。
[0083]较佳地,调试器102接收到进程连接命令后,从中解析出进程标识;根据解析出的进程标识,连接该进程标识对应的进程,即连接为应用程序分配的进程。
[0084]调试器102连接进程后,可以根据调试员的预先或实时的设置,随时启动对进程中的应用程序的调试;此时可以认为调试器102已经完成调试进程中的应用程序的准备工作。
[0085]S207:进程管理器101在延时启动命令所指示的延时时间到达前,暂缓启动上述为应用程序所分配的进程,以等待调试器102连接该进程;当该延时时间到达时,启动该进程,以使得调试器102调试该进程中的应用程序。
[0086]具体地,进程管理器101根据上述步骤S201中携带于延时启动命令中的进程延迟启动的延迟时间,进行计时;当计时结果表明该延迟时间未到达时,进程管理器101暂缓启动上述步骤S203中为应用程序所分配的进程,以等待上述步骤S206中调试器102连接该进程以完成调试进程的准备。
[0087]可以理解,本步骤中进程管理器101暂缓启动进程的过程,与上述步骤S206在时间上是存在交叠的。
[0088]例如,对于本步骤中进程管理器101暂缓启动进程的过程、以及上述步骤S206这两个过程而言,该两个过程可以同时开始,也可以一个过程在先开始而另一个过程在后开始;该两个过程可以同时结束,也可以上述步骤S206在先结束而本步骤中进程管理器101暂缓启动进程的过程在后结束。
[0089]当计时结果表明延时启动命令中的延迟时间到达时,进程管理器1I启动上述步骤S203中为应用程序所分配的进程,该进程启动后开始运行应用程序;进程管理器101在启动进程的同时,调试器102可以开始调试该进程中的应用程序。
[0090]较佳地,进程管理器101启动进程的方法具体可以是调用该进程中的应用程序的主函数。
[0091]可以理解,调试员预先将延时启动命令中的延迟时间设置得较为合理,利用上述步骤S201-步骤S207的方法,可以使得上述步骤S206中调试器102连接为应用程序分配的进程成功的同时,使得上述步骤S207中进程管理器101启动该进程;即调试器102调试进程中的应用程序的准备工作,与应用程序的启动几乎在同一时刻完成。此时调试器102可以对进程中包括启动阶段在内的应用程序的运行全过程进行调试。其中,较为合理的延迟时间可以通过经验数据或者实验等来确定。
[0092]优选地,为了保证调试器102可以更加可靠地对应用程序的启动阶段进行调试,调试员预先将延时启动命令中的延迟时间设置得更为合理,利用上述步骤S201-步骤S207的方法,可以使得上述步骤S206中调试器102连接为应用程序分配的进程在先,即调试器102完成调试进程中的应用程序的准备工作在先,而上述步骤S207中进程启动运行在后。因此,调试器102可以对进程中包括启动阶段在内的应用程序的运行全过程进行调试。
[0093]更优的,当被调试的应用程序退出或终止(例如正常退出、异常终止或错误终止)时,进程管理器101可以从上述步骤S203中已经重定向的标准输入、输出和错误文件中,获取最后的错误日志信息,并从获取的信息中解析出应用程序的退出状态代码,将退出状态代码转发至调试启动器103并展示给调试员,从而可以帮助调试员分析应用程序的运行状
??τ O
[0094]事实上,进程管理器101可以运行多个实例以调试多个应用程序,多个进程管理器101的实例之间互相独立。从而多个调试启动器103可以分别启动同一智能终端中的多个进程管理器101的实例,用于对该智能终端中的多个应用程序同时进行调试,大大缩短了调试多个应用程序需要花费的调试时间,整体上提升了应用程序的调试效率。
[0095]事实上,上述步骤S201-S203所耗费的时间是可以预设或确定的。例如,通过实验来确定该时间。而且,进程标识的存储位置,包括指定文件及其存放路径都是可以在步骤S201之前设定的。
[0096]因此,更优的,调试器启动器103可以输出一个复合命令。该复合命令包括:延时启动命令、进程连接命令,以及依次输出延时启动命令、进程连接命令之间的延迟时间。使得调试器启动器103输出该复合命令的执行效果,等同于上述步骤S201和S204的效果总和。
[0097]例如,调试器启动器103输出复合命令中可以包括命令行invoker delay_timeapplicat1n_name; sleep I ;gdb attach cat/tmp/app_id。该命令行中 invoker delay_time applicat1n_name表不延时启动命令,gdb attach 'cat/tmp/app_id'表不进程连接命令,s Ieep I表示依次输出延时启动命令、进程连接命令之间的延迟时间。
[0098]本发明的实施例中,对于智
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1