程序调试方法、装置及系统和嵌入式设备与流程

文档序号:25345111发布日期:2021-06-08 11:32阅读:72来源:国知局
程序调试方法、装置及系统和嵌入式设备与流程

1.本发明涉及嵌入式设备及进程管理技术领域,尤其涉及一种程序调试方法、一种程序调试装置、一种程序调试系统以及一种嵌入式设备。


背景技术:

2.随着技术的不断进步,嵌入式设备功能越来越强大,因此就需要更多的进程去完成不同的职责。例如在完成一些复杂的功能时,可能需要多个进程协作才可以完成,那么在开发调试过程中如何定位问题来实现多进程的调试就显得尤为重要。
3.相关技术在基于linux操作系统的应用开发过程中,经常会使用gdb调试工具去调试应用程序,例如添加断点,定位代码错误位置等等。然而,gdb调试工具只能调试单个进程,并且常用于调试进程的逻辑错误,当开发的业务需要多个进程间相互协作时,gdb调试工具就无法满足开发要求了。
4.在应用开发时也有使用记录日志、分析日志的方式进行调试,常用工具为printf,其可以根据指定格式从标准输出设备中输出信息;这种方式在终端运行应用程序时可以直观的看到打印信息。虽然打印信息通常会定位到问题所在,但是当业务复杂且涉及到多个进程时,分析日志会耗费大量的时间。


技术实现要素:

5.因此,为克服相关技术的至少部分缺陷和不足,本发明实施例提出一种程序调试方法、一种程序调试装置、一种程序调试系统以及一种嵌入式设备。
6.一方面,本发明实施例提出的一种程序调试方法,包括:创建步骤,为待调试应用程序的进程创建套接字,其中所述套接字用于调试管理进程与所述待调试应用程序的进程建立进程间通讯通道;接收步骤,通过所述进程间通讯通道接收调试指令;响应步骤,响应所述调试指令,调用通讯处理函数;调试步骤,利用所述通讯处理函数对所述调试指令进行解析得到调试内容数据、并根据所述调试内容数据调用目标调试函数进行调试操作得到调试结果;以及发送步骤,通过所述进程间通讯通道发送所述调试结果至所述调试管理进程,以供所述调试管理进程输出所述调试结果。
7.本实施例的程序调试方法通过一个专门的调试管理进程去管理调试其他应用程序进程,将应用程序的调试集中到一起,因此调试比较方便;并且可以在应用程序的运行过程中进行调试,无需对应用程序重新编译以及重新启动,提高了应用程序开发效率。
8.在本发明的一个实施例中,所述响应步骤具体包括:响应所述调试指令,从调试工具库中调用所述通讯处理函数,其中所述调试工具库包含所述通讯处理函数和公用调试函数库;以及所述调试步骤具体包括:利用所述通讯处理函数对所述调试指令进行解析得到所述调试内容数据、并根据所述调试内容数据查找所述公用调试函数库以调用所述目标调试函数进行调试操作得到调试结果。
9.在本发明的一个实施例中,所述程序调试方法还包括:注册步骤,为所述待调试应
用程序注册私有调试函数以得到私有调试函数库;所述响应步骤具体包括:响应所述调试指令,从调试工具库中调用所述通讯处理函数,其中所述调试工具库包含所述通讯处理函数和公用调试函数库;以及所述调试步骤具体包括:利用所述通讯处理函数对所述调试指令进行解析得到所述调试内容数据、根据所述调试内容数据查找所述公用调试函数库、并在所述公用调试函数库中未找到所述目标调试函数时再查找所述私有调试函数库以调用所述目标调试函数进行调试操作得到调试结果。
10.在本发明的一个实施例中,所述调试管理进程和所述待调试应用程序的进程运行在同一台安装有linux操作系统的嵌入式设备上。
11.在本发明的一个实施例中,所述调试管理进程和所述待调试应用程序的进程分别运行在安装有linux操作系统且网络连接的多台嵌入式设备上。
12.另一方面,本发明实施例提供的一种程序调试装置,包括:创建模块,用于为待调试应用程序的进程创建套接字,其中所述套接字用于调试管理进程与所述待调试应用程序的进程建立进程间通讯通道;接收模块,用于通过所述进程间通讯通道接收调试指令;响应模块,用于响应所述调试指令,调用通讯处理函数;调试模块,用于利用所述通讯处理函数对所述调试指令进行解析得到调试内容数据、并根据所述调试内容数据调用目标调试函数进行调试操作得到调试结果;以及发送模块,用于通过所述进程间通讯通道发送所述调试结果至所述调试管理进程,以供所述调试管理进程输出所述调试结果。
13.在本发明的一个实施例中,所述响应模块具体用于:响应所述调试指令,从调试工具库中调用所述通讯处理函数,其中所述调试工具库包含所述通讯处理函数和公用调试函数库;以及所述调试模块具体用于:利用所述通讯处理函数对所述调试指令进行解析得到所述调试内容数据、并根据所述调试内容数据查找所述公用调试函数库以调用所述目标调试函数进行调试操作得到调试结果。
14.在本发明的一个实施例中,所述程序调试装置还包括:注册模块,用于为所述待调试应用程序注册私有调试函数以得到私有调试函数库;所述响应模块具体用于:响应所述调试指令,从调试工具库中调用所述通讯处理函数,其中所述调试工具库包含所述通讯处理函数和公用调试函数库;以及所述调试模块具体用于:利用所述通讯处理函数对所述调试指令进行解析得到调试内容数据、根据所述调试内容数据查找所述公用调试函数库、并在所述公用调试函数库中未找到所述目标调试函数时再查找所述私有调试函数库以调用所述目标调试函数进行调试操作得到调试结果。
15.再一方面,本发明实施例提供的一种程序调试系统,包括:处理器和连接所述处理器的存储器;其中所述存储器存储有所述处理器执行的指令,且所述指令使得所述处理器执行操作以进行前述任意一种程序调试方法。
16.又一方面,本发明实施例提供的一种嵌入式设备,包括:嵌入式处理器,安装有嵌入式操作系统且用于执行前述任意一种程序调试方法。
17.由上可知,本发明上述技术特征可以具有如下一个或多个有益效果:通过一个专门的调试管理进程去管理调试其他应用程序进程,将应用程序的调试集中到一起,因此调试比较方便;并且可以在应用程序的运行过程中进行调试,无需对应用程序重新编译以及重新启动,提高了应用程序开发效率;再者,可进行本地和远程的调试,解决了嵌入式设备不在身边调试困难的问题;此外,通过公用调试函数库提供常用的调试函数,可快速定位到
常见问题,提高开发效率;另外,待调试应用程序可以注册私有调试函数,使进程调试更加的方便快捷。
附图说明
18.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1为本发明第一实施例的一种程序调试方法的流程图。
20.图2为本发明第一实施例的另一种程序调试方法的流程图。
21.图3为本发明第一实施例的待调试应用程序的进程和调试管理进程运行在同一台嵌入式设备上的示意图。
22.图4为本发明第一实施例的待调试应用程序的进程和调试管理进程分别运行在多台嵌入式设备上的示意图。
23.图5为本发明第二实施例的一种程序调试装置的模块示意图。
24.图6为本发明第二实施例的另一种程序调试装置的模块示意图。
25.图7为本发明第三实施例的一种程序调试系统的结构示意图。
26.图8为本发明第四实施例的一种计算机可读存储介质的结构示意图。
具体实施方式
27.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
28.【第一实施例】
29.如图1所示,本发明第一实施例提供的一种程序调试方法,包括:创建步骤s11、接收步骤s13、响应步骤s15、调试步骤s17以及发送步骤s19。
30.其中,所述创建步骤s11用于为待调试应用程序的进程创建套接字(socket),其中所述套接字用于调试管理进程与所述待调试应用程序的进程建立进程间通讯通道;所述接收步骤s13用于通过所述进程间通讯通道接收调试指令;所述响应步骤s15用于响应所述调试指令,调用通讯处理函数;所述调试步骤s17用于利用所述通讯处理函数对所述调试指令进行解析得到调试内容数据、并根据所述调试内容数据调用目标调试函数进行调试操作得到调试结果;以及所述发送步骤s19用于通过所述进程间通讯通道发送所述调试结果至所述调试管理进程,以供所述调试管理进程输出所述调试结果。
31.在另一具体实施方式中,如图2所示,本实施例的程序调试方法还包括:注册步骤s10,用于为所述待调试应用程序注册私有调试函数以得到私有调试函数库。
32.为便于更清楚地理解本实施例,下面将对本实施例的程序调试方法进行举例说明。
33.具体地,本实施例例如是基于arm嵌入式处理器的linux操作系统多个进程间的管
理,提供一种本地或远程快速调试应用程序的方法,其通过公用调试函数库可以为应用程序进程提供常用的调试函数,也可以使应用程序注册私有调试函数以使得进程调试更加的方便快捷。此处的公用调试函数库例如有调试工具库提供且包括多个公有调试函数;此外所述调试工具库还提供通讯处理函数,其为待调试应用程序的进程收到调试指令后所需的处理函数。这些公有调试函数例如用于:
34.1)查看指定进程都存在哪些通讯链路,以用于判断进程间通信的状态;
35.2)获取和设置指定进程log文件的最大大小;
36.3)查看指定进程目前的事件,以用于定位进程是否正常执行;
37.4)暂停和继续执行指定进程的事件;
38.5)读取和设置共享内存的备份信息,以用于调试进程间通讯
39.6)设置和读取进程间通讯的发包延时,以用于调试进程间通讯的相关问题;
40.7)修改进程的优先级,以管理进程的优先级。
41.承上述,当待调试应用程序启动时,可以选择是否注册私有调试函数,接着为待调试应用程序的进程创建套接字(对应创建步骤s11)并等待调试管理进程连接。值得一提的是,待调试应用程序是否注册私有调试函数以得到私有调试函数库(对应注册步骤s10)取决于所述待调试应用程序自身的程序代码;而此处创建的套接字可以是本地套接字,也可以是基于tcp协议的套接字,或者两者都创建。
42.当用户输入相关调试指令后,调试管理进程需要通过前述创建的套接字与待调试应用程序的进程建立进程间通讯通道,然而通过所述进程间通讯通道发送相关调试指令至待调试应用程序的进程。
43.待调试应用程序的进程通过所述进程间通讯通道在收到调试指令(对应接收步骤s13)后,从调试工具库中调用通讯处理函数(对应响应步骤s15),利用调用的通讯处理函数对收到的调试指令进行解析得到调试内容数据、并根据所述调试内容数据调用目标调试函数进行调试操作得到调试结果(对应调试步骤s17)。此处值得说明的是,所述通讯处理函数在解析得到调试内容数据之后,例如根据所述调试内容数据按照先查找公用调试函数库再查找私有调试函数库的方式来调用所述目标调试函数,也即当所述目标调试函数在公用调试函数库中能够查找到则无需再查找私有调试函数库,而当所述目标调试函数在公用调试函数库中无法查找到则继续查找私有调试函数库。
44.接下来,待调试应用程序的进程获知到所述通讯处理函数返回的调试结果后,通过所述进程间通讯通道将所述调试结果发给所述调试管理进程(对应发送步骤s19)。如此一来,调试管理进程收到调试结果后,进行显示输出以供用户查看。
45.参见图3,本实施例的程序调试方法可以是本地调试方法,也即调试管理进程和待调试应用程序的进程运行在同一台嵌入式设备30上。此处的嵌入式设备30包括嵌入式处理器31例如是arm嵌入式处理器,所述arm嵌入式处理器比如安装有嵌入式操作系统像linux操作系统等。
46.又或者,如图4所示,本实施例的程序调试方法可以是远程调试方法,也即调试管理进程和待调试应用程序的进程分别运行在多台嵌入式设备40a、40b上。此处的嵌入式设备40a、40b网络连接在一起,嵌入式设备40a包括嵌入式处理器41a例如是arm嵌入式处理器,所述arm嵌入式处理器比如安装有嵌入式操作系统像linux操作系统等;类似地,嵌入式
设备40b包括嵌入式处理器41b例如是arm嵌入式处理器。
47.综上所述,本实施例通过一个专门的调试管理进程去管理调试其他应用程序进程,将应用程序的调试集中到一起,因此调试比较方便;并且可以在应用程序的运行过程中进行调试,无需对应用程序重新编译以及重新启动,提高了应用程序开发效率;再者,可进行本地和远程的调试,解决了嵌入式设备不在身边调试困难的问题;此外,通过公用调试函数库提供常用的调试函数,可快速定位到常见问题,提高开发效率;另外,待调试应用程序可以注册私有调试函数,使进程调试更加的方便快捷。
48.【第二实施例】
49.如图5所示,本发明第二实施例提供的一种程序调试装置500,包括:创建模块51、接收模块53、响应模块55、调试模块57和发送模块59。
50.其中,所述创建模块51例如用于为待调试应用程序的进程创建套接字,其中所述套接字用于调试管理进程与所述待调试应用程序的进程建立进程间通讯通道;所述接收模块53例如用于通过所述进程间通讯通道接收调试指令;所述响应模块55例如用于响应所述调试指令,调用通讯处理函数;所述调试模块57例如用于利用所述通讯处理函数对所述调试指令进行解析得到调试内容数据、并根据所述调试内容数据调用目标调试函数进行调试操作得到调试结果;以及所述发送模块59例如用于通过所述进程间通讯通道发送所述调试结果至所述调试管理进程,以供所述调试管理进程输出所述调试结果。
51.此外,所述程序调试装置500还关联有调试工具库501,且所述调试工具库501例如提供通讯调试函数和公用调试函数库以供所述响应模块55和所述调试模块57使用。举例来说,所述响应模块55响应所述调试指令,从调试工具库中调用所述通讯处理函数;所述调试模块57利用所述通讯处理函数对所述调试指令进行解析得到所述调试内容数据、并根据所述调试内容数据查找所述公用调试函数库以调用所述目标调试函数进行调试操作得到调试结果。
52.至于创建模块51、接收模块53、响应模块55、调试模块57和发送模块59的具体功能细节可参考前述第一实施例中的详细描述,在此不再赘述。此外,值得一提的是,创建模块51、接收模块53、响应模块55、调试模块57和发送模块59可以为软件模块,存储于非易失性存储器中且由处理器执行相关操作以进行前述第一实施例中的步骤s11、s13、s15、s17和s19。
53.参见图6,在另一个具体实施方式中,本实施例的程序调试装置除了包括前述的创建模块51、接收模块53、响应模块55、调试模块57和发送模块59之外,还包括注册模块50。
54.其中,所述注册模块50用于为所述待调试应用程序注册私有调试函数以得到私有调试函数库503,供所述调试模块57使用;举例来说,所述调试模块57利用所述通讯处理函数对所述调试指令进行解析得到调试内容数据、根据所述调试内容数据查找所述公用调试函数库、并在所述公用调试函数库中未找到所述目标调试函数时再查找所述私有调试函数库以调用所述目标调试函数进行调试操作得到调试结果。
55.再者,对于注册模块50、创建模块51、接收模块53、响应模块55、调试模块57和发送模块59,其具体功能细节仍可参考前述第一实施例中的详细描述,在此不再赘述。此外,值得一提的是,注册模块50、创建模块51、接收模块53、响应模块55、调试模块57和发送模块59可以为软件模块,存储于非易失性存储器中且由处理器执行相关操作以进行前述第一实施
例中的步骤s10、s11、s13、s15、s17和s19。
56.【第三实施例】
57.如图7所示,本发明第三实施例提供的一种程序调试系统70,包括:处理器71和存储器73;其中,存储器73存储由处理器71执行的指令,且所述指令例如使得处理器71执行操作以进行前述第一实施例所述的程序调试方法。
58.【第四实施例】
59.本发明第四实施例提供的一种计算机可读存储介质80,其为非易失性存储器且存储有程序代码,当所述程序代码被一个或多个处理器执行时,例如使得所述一个或多个处理器执行前述第一实施例所述的程序调试方法。
60.另外,可以理解的是,前述各个实施例仅为本发明的示例性说明,在技术特征不冲突、结构不矛盾、不违背本发明的发明目的前提下,各个实施例的技术方案可以任意组合、搭配使用。
61.在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和/或方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多路单元或模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
62.所述作为分离部件说明的单元/模块可以是或者也可以不是物理上分开的,作为单元/模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多路网络单元上。可以根据实际的需要选择其中的部分或者全部单元/模块来实现本实施例方案的目的。
63.另外,在本发明各个实施例中的各功能单元/模块可以集成在一个处理单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一个单元/模块中。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用硬件加软件功能单元/模块的形式实现。
64.上述以软件功能单元/模块的形式实现的集成的单元/模块,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)的一个或多个处理器执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。
65.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1