CN105843738A - 一种进程间通信的统计调试方法及*** - Google Patents
一种进程间通信的统计调试方法及*** Download PDFInfo
- Publication number
- CN105843738A CN105843738A CN201610165212.4A CN201610165212A CN105843738A CN 105843738 A CN105843738 A CN 105843738A CN 201610165212 A CN201610165212 A CN 201610165212A CN 105843738 A CN105843738 A CN 105843738A
- Authority
- CN
- China
- Prior art keywords
- function
- module
- communication
- process communication
- socket
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Telephonic Communication Services (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种进程间通信的统计调试方法及***,该方法包括:在网络设备间的进程通信***中封装套接字发送函数,以使进程通信***中各个模块函数调用封装后的套接字发送函数进行进程通信;采用封装后的套接字发送函数对各个模块函数的进程通信消息进行统计与记录,得到每一模块函数对***通信函数的调用次数;若模块函数对***通信函数的调用次数大于预设阈值,确定该模块函数为问题模块函数。本发明实施例能够准确地定位出频繁进行进程通信的模块函数,进而避免模块函数频繁进行不必要的进程通信,而导致***性能下降或***卡顿的问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种进程间通信的统计调试方法及***。
背景技术
socket,即套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)***的开发工作既可以在本地单机上进行,也可以跨网络进行。也就是说它可以让不在同一台计算机但通过网络连接计算机上的进程进行通信。也因为这样,套接字明确地将客户端和服务器区分开来。
目前,socket的实现具体为:服务器应用程序用***调用socket来创建一个套接字,它是***分配给该服务器进程的类似文件描述符的资源,它不能与其他的进程共享。接下来,服务器进程会给套接字起个名字,我们使用***调用bind来给套接字命名。然后服务器进程就开始等待客户连接到这个套接字。然后,***调用listen来创建一个队列并将其用于存放来自客户的进入连接。最后,服务器通过***调用accept来接受客户的连接。它会创建一个与原有的命名套接不同的新套接字,这个套接字只用于与这个特定客户端进行通信,而命名套接字(即原先的套接字)则被保留下来继续处理来自其他客户的连接。基于socket的客户端比服务器端简单,同样,客户应用程序首先调用socket来创建一个未命名的套接字,然后将服务器的命名套接字作为一个地址来调用connect与服务器建立连接。一旦连接建立,就可以像使用底层的文件描述符那样用套接字来实现进程双向数据的通信。
但是,用套接字来实现进程双向数据的通信通过一些***调用函数,如read/write(最简单的套接口写入函数)、recv/send(增加了flags标记)、recvfrom/sendto(增加了套接口地址与套接口长度参数)、readv/writev(没有标记与套接口地址,但是具有分散写入的能力)、recvmsg/sendmsg(增加标记,套接口地址与长度,分散写入以及附属数据的能力),使用这些函数可进行进程间的通信的数据收发操作。但进程间通信函数都是***调用,频繁的进程间通信会导致***性能下降或***卡顿,特别是一些网络设备命令下发和处理在不同进程中,进程通信方式又被其他模块共用(如日志模块)时,在大流量日志情况下频繁的***调用会影响***的正常运行,而进程间通信没有统计调试功能,无法定位具体是哪个模块哪个函数在频繁进行进程通信导致问题。
发明内容
针对现有技术方案存在的问题和不足,本发明提供了一种进程间通信的统计调试方法及***,以解决现有技术中无法定位频繁进行进程通信的模块函数,而导致***性能下降或***卡顿的问题。
根据本发明的一个方面,提供了一种进程间通信的统计调试方法,该方法包括:
在网络设备间的进程通信***中封装套接字发送函数,以使进程通信***中各个模块函数调用封装后的套接字发送函数进行进程通信;
采用封装后的套接字发送函数对各个模块函数的进程通信消息进行统计与记录,得到每一模块函数对***通信函数的调用次数;
若模块函数对***通信函数的调用次数大于预设阈值,确定该模块函数为问题模块函数。
其中,所述方法还包括:
获取被调用的***通信函数的名称和位置信息;
根据用户触发的查看指令,对确定出的问题模块函数、所述问题模块函数对***通信函数的调用次数以及所述被调用的***通信函数的名称和位置信息进行输出展示。
其中,所述采用封装后的套接字发送函数对各个模块函数的进程通信消息进行统计与记录,进一步包括:
创建结构体,并声明全局变量结构体数组,其中,所述结构体至少包括模块ID、模块名称、调用函数名称、调用函数行号、调用次数和目的进程名称,所述全局变量结构体数组以所述最大模块ID为下标,用于对发送方向的进程通信消息进行统计与记录;
当进程通信***中模块函数调用封装后的套接字发送函数进行进程通信时,获取该模块函数的模块ID、预调用的***通信函数的函数名称和函数行号,以及目的进程名称;
根据模块函数的模块ID将获取的信息传入所述全局变量结构体数组,对发送方向的进程通信消息进行统计与记录。
其中,在所述对发送方向的进程通信消息进行统计与记录之前,所述方法还包括:
根据预先设置的标志位的取值,确定是否执行所述对发送方向的进程通信消息进行统计与记录的步骤。
其中,所述方法还包括:
根据用户触发的清除指令,对确定出的问题模块函数以及所述问题模块函数对***通信函数的调用次数进行清除。
根据本发明的另一个方面,提供了一种进程间通信的统计调试***,该***包括:
函数封装单元,用于在网络设备间的进程通信***中封装套接字发送函数,以使进程通信***中各个模块函数调用封装后的套接字发送函数进行进程通信;
消息统计单元,用于采用函数封装单元封装后的套接字发送函数对各个模块函数的进程通信消息进行统计与记录,得到每一模块函数对***通信函数的调用次数;
第一确定单元,用于若模块函数对***通信函数的调用次数大于预设阈值,确定该模块函数为问题模块函数。
其中,所述消息统计单元,还用于获取被调用的***通信函数的名称和位置信息;
相应的,所述***还包括:输出单元:
所述输出单元,用于根据用户触发的查看指令,对确定出的问题模块函数、所述问题模块函数对***通信函数的调用次数以及所述被调用的***通信函数的名称和位置信息进行输出展示。
其中,所述消息统计单元,进一步包括:
创建子单元,用于创建结构体,并声明全局变量结构体数组,其中,所述结构体至少包括模块ID、模块名称、调用函数名称、调用函数行号、调用次数和目的进程名称,所述全局变量结构体数组以所述最大模块ID为下标,用于对发送方向的进程通信消息进行统计与记录;
获取子单元,用于当进程通信***中模块函数调用封装后的套接字发送函数进行进程通信时,获取该模块函数的模块ID、预调用的***通信函数的函数名称和函数行号,以及目的进程名称;
统计子单元,用于根据模块函数的模块ID将获取的信息传入所述全局变量结构体数组,对发送方向的进程通信消息进行统计与记录。
其中,所述***还包括:
第二确定单元,用于在所述统计子单元对发送方向的进程通信消息进行统计与记录之前,根据预先设置的标志位的取值,确定第二确定单元是否执行所述对发送方向的进程通信消息进行统计与记录的操作。
其中,所述***还包括:处理单元,用于根据用户触发的清除指令,对确定出的问题模块函数以及所述问题模块函数对***通信函数的调用次数进行清除。
本发明的有益效果为:
本发明提供的进程间通信的统计调试方法及***,通过在网络设备间的进程通信***中封装套接字发送函数,各个模块函数通过调用封装后的套接字发送函数进行进程通信,并对各个模块函数的进程通信消息进行统计与记录,得到每一模块函数对***通信函数的调用次数,当调用次数大于预设阈值时,则确定该模块函数为问题模块函数。本发明能够准确地定位出频繁进行进程通信的模块函数,进而避免模块函数频繁进行不必要的进程通信,而导致***性能下降或***卡顿的问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例提出的一种进程间通信的统计调试方法的流程图;
图2为本发明实施例提出的一种进程间通信的统计调试***的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
图1示出了本发明实施例的一种进程间通信的统计调试方法的流程图。
如图1所示,本发明实施例提出的进程间通信的统计调试方法具体包括以下步骤:
步骤S11、在网络设备间的进程通信***中封装套接字发送函数,以使进程通信***中各个模块函数调用封装后的套接字发送函数进行进程通信。
步骤S12、采用封装后的套接字发送函数对各个模块函数的进程通信消息进行统计与记录,得到每一模块函数对***通信函数的调用次数。
可理解的是,用套接字来实现进程双向数据的通信需要通过调用一些***通信函数,使用这些函数可进行进程间的通信的数据收发操作。具体如,read/write(套接口写入函数)、recv/send(增加了flags标记)、recvfrom/sendto(增加了套接口地址与套接口长度参数)、readv/writev(没有标记与套接口地址,但是具有分散写入的能力)、recvmsg/sendmsg(增加标记,套接口地址与长度,分散写入以及附属数据的能力)等。
步骤S13、若模块函数对***通信函数的调用次数大于预设阈值,确定该模块函数为问题模块函数。
本发明实施例提供的进程间通信的统计调试方法,通过在网络设备间的多进程通信***中封装套接字发送函数,并在封装函数中增加进程通信的按模块的统计调试功能,以便统计查看各模块函数在进程通信中对***通信函数的调用次数,以达到定位频繁进行进程通信的模块函数的目的,避免模块函数频繁进行不必要的进程通信,而导致***性能下降或***卡顿的问题。
本发明实施例,步骤S12中的采用封装后的套接字发送函数对各个模块函数的进程通信消息进行统计与记录,进一步包括以下附图中未示出的步骤:
创建结构体,并声明全局变量结构体数组,其中,所述结构体至少包括模块ID、模块名称、调用函数名称、调用函数行号、调用次数和目的进程名称,所述全局变量结构体数组以所述最大模块ID为下标,用于对发送方向的进程通信消息进行统计与记录;
当进程通信***中模块函数调用封装后的套接字发送函数进行进程通信时,获取该模块函数的模块ID、预调用的***通信函数的函数名称和函数行号,以及目的进程名称;
根据模块函数的模块ID将获取的信息传入所述全局变量结构体数组,对发送方向的进程通信消息进行统计与记录。
进一步地,在所述对发送方向的进程通信消息进行统计与记录之前,所述方法还包括以下步骤:根据预先设置的标志位的取值,确定是否执行所述对发送方向的进程通信消息进行统计与记录的步骤。
下面通过一个具体实施例对本发明的技术方案进行详细说明。
创建结构体并声明全局变量结构体数组(如struct socket_debug_info g_socket_debug_info[MOUID_MAX]),结构体成员包括模块ID、模块名称、调用函数名称、调用函数行号、调用次数、目的进程名称等,声明的全局变量结构体数组以最大模块ID为下标,对发送方向的进程通信消息进行统计与记录,同时声明全局变量作为标志位控制统计功能是否开启(如g_g_socket_debug_flag);
封装进程通信发送函数,新增加四个函数入参,分别为模块ID、调用函数名称、调用函数行号、目的进程名称;在需要进程通信的各模块函数中均调用封装后的进程通信发送函数,并把当前模块ID及_LINE_、_FUNCTION_、目的进程名称作为入参传入封装的进程通信发送函数,在该封装函数中会以传入的模块ID作为之前声明的全局变量数组下标,统计该模块的调用的进程通信函数的相关信息到全局变量数组中,包括模块ID、模块名称、调用函数名称、调用函数行号、调用次数累加、目的进程名称等,具体如下:
g_socket_debug_info[MOU_ID].mou_id=MOU_ID;
g_socket_debug_info[MOU_ID].mou_name=get_name_by_id(MOU_ID);
g_socket_debug_info[MOU_ID].pfunc=_FUNCTION;
g_socket_debug_info[MOU_ID].func_line=_LINE_;
g_socket_debug_info[MOU_ID].count=count++;
g_socket_debug_info[MOU_ID].dest_task=PID;其中,PID为赋值发往的目的进程PID,该统计功能通过之前声明的全局变量标志位控制是否开启或关闭。
在本发明实施例中,所述方法还包括以下附图中未示出的以下步骤:
获取被调用的***通信函数的名称和位置信息。需要说明的是,本实施例中的被调用的***通信函数的位置信息为被调用的***函数的行号。
根据用户触发的查看指令,对确定出的问题模块函数、所述问题模块函数对***通信函数的调用次数以及所述被调用的***通信函数的名称和位置信息进行输出展示。
在本发明实施例中,所述方法还包括以下附图中未示出的以下步骤:根据用户触发的清除指令,对确定出的问题模块函数以及所述问题模块函数对***通信函数的调用次数进行清除。
在本发明另一实施例中,所述方法还包括根据用户触发的控制指令,控制进程通信统计调试功能开启或关闭的步骤。本发明实施例中,增加开关的目的是在需要使用时开启,平时为不影响性能可默认关闭;通过统计显示的信息可快速知道进程通信的模块、函数及具体行号,可根据调用次数的增加情况判断是否有频繁的进程通信发生,作为判断***性能下降或***卡顿的依据。
在实际应用中,可通过新增命令行控制进程通信统计调试功能开启或关闭,以及查看或清除统计到的进程通信信息,查看功能为以MOUID_MAX为最大值for循环的方式遍历g_socket_debug_info[]数组结构体,将统计保存的信息打印输出;清除功能为以MOUID_MAX为最大值for循环的方式遍历g_socket_debug_info[]数组结构体并使成员清空(memset也可)。
本发明实施例提供的进程间通信的统计调试方法,便于统计查看各进程各模块进程通信函数调用的次数与频率,同时输出调用函数名称及行号,以达到定位频繁的进程通信导致***性能下降或***卡顿问题的目的。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
图2示出了本发明另一实施例提出的一种进程间通信的统计调试***的结构示意图。
如图2所示,本发明实施例提出的进程间通信的统计调试***包括函数封装单元201、消息统计单元202和第一确定单元203,其中:
所述函数封装单元201,用于在网络设备间的进程通信***中封装套接字发送函数,以使进程通信***中各个模块函数调用封装后的套接字发送函数进行进程通信;
所述消息统计单元202,用于采用函数封装单元封装后的套接字发送函数对各个模块函数的进程通信消息进行统计与记录,得到每一模块函数对***通信函数的调用次数;
所述第一确定单元203,用于若模块函数对***通信函数的调用次数大于预设阈值,确定该模块函数为问题模块函数。
本发明实施例中,所述消息统计单元,还用于获取被调用的***通信函数的名称和位置信息;
相应的,所述***还包括附图中未示出的输出单元:
所述输出单元,用于根据用户触发的查看指令,对确定出的问题模块函数、所述问题模块函数对***通信函数的调用次数以及所述被调用的***通信函数的名称和位置信息进行输出展示。
本发明实施例中,所述消息统计单元,进一步包括创建子单元、获取子单元和统计子单元,其中:
所述创建子单元,用于创建结构体,并声明全局变量结构体数组,其中,所述结构体至少包括模块ID、模块名称、调用函数名称、调用函数行号、调用次数和目的进程名称,所述全局变量结构体数组以所述最大模块ID为下标,用于对发送方向的进程通信消息进行统计与记录;
所述获取子单元,用于当进程通信***中模块函数调用封装后的套接字发送函数进行进程通信时,获取该模块函数的模块ID、预调用的***通信函数的函数名称和函数行号,以及目的进程名称;
所述统计子单元,用于根据模块函数的模块ID将获取的信息传入所述全局变量结构体数组,对发送方向的进程通信消息进行统计与记录。
本发明实施例中,所述***还包括附图中未示出的第二确定单元,所述第二确定单元,用于在所述统计子单元对发送方向的进程通信消息进行统计与记录之前,根据预先设置的标志位的取值,确定第二确定单元是否执行所述对发送方向的进程通信消息进行统计与记录的操作。
其中,所述***还包括附图中未示出的处理单元,所述处理单元用于根据用户触发的清除指令,对确定出的问题模块函数以及所述问题模块函数对***通信函数的调用次数进行清除。
对于***实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
综上,本发明实施例提供的进程间通信的统计调试方法及***,通过在网络设备间的进程通信***中封装套接字发送函数,各个模块函数通过调用封装后的套接字发送函数进行进程通信,并对各个模块函数的进程通信消息进行统计与记录,得到每一模块函数对***通信函数的调用次数,当调用次数大于预设阈值时,则确定该模块函数为问题模块函数。本发明能够准确地定位出频繁进行进程通信的模块函数,进而避免模块函数频繁进行不必要的进程通信,而导致***性能下降或***卡顿的问题。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的***中的模块可以按照实施例描述进行分布于实施例的***中,也可以进行相应变化位于不同于本实施例的一个或多个***中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种进程间通信的统计调试方法,其特征在于,所述方法包括:
在网络设备间的进程通信***中封装套接字发送函数,以使进程通信***中各个模块函数调用封装后的套接字发送函数进行进程通信;
采用封装后的套接字发送函数对各个模块函数的进程通信消息进行统计与记录,得到每一模块函数对***通信函数的调用次数;
若模块函数对***通信函数的调用次数大于预设阈值,确定该模块函数为问题模块函数。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取被调用的***通信函数的名称和位置信息;
根据用户触发的查看指令,对确定出的问题模块函数、所述问题模块函数对***通信函数的调用次数以及所述被调用的***通信函数的名称和位置信息进行输出展示。
3.根据权利要求1或2所述的方法,其特征在于,所述采用封装后的套接字发送函数对各个模块函数的进程通信消息进行统计与记录,进一步包括:
创建结构体,并声明全局变量结构体数组,其中,所述结构体至少包括模块ID、模块名称、调用函数名称、调用函数行号、调用次数和目的进程名称,所述全局变量结构体数组以所述最大模块ID为下标,用于对发送方向的进程通信消息进行统计与记录;
当进程通信***中模块函数调用封装后的套接字发送函数进行进程通信时,获取该模块函数的模块ID、预调用的***通信函数的函数名称和函数行号,以及目的进程名称;
根据模块函数的模块ID将获取的信息传入所述全局变量结构体数组,对发送方向的进程通信消息进行统计与记录。
4.根据权利要求3所述的方法,其特征在于,在所述对发送方向的进程通信消息进行统计与记录之前,所述方法还包括:
根据预先设置的标志位的取值,确定是否执行所述对发送方向的进程通信消息进行统计与记录的步骤。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据用户触发的清除指令,对确定出的问题模块函数以及所述问题模块函数对***通信函数的调用次数进行清除。
6.一种进程间通信的统计调试***,其特征在于,所述***包括:
函数封装单元,用于在网络设备间的进程通信***中封装套接字发送函数,以使进程通信***中各个模块函数调用封装后的套接字发送函数进行进程通信;
消息统计单元,用于采用函数封装单元封装后的套接字发送函数对各个模块函数的进程通信消息进行统计与记录,得到每一模块函数对***通信函数的调用次数;
第一确定单元,用于若模块函数对***通信函数的调用次数大于预设阈值,确定该模块函数为问题模块函数。
7.根据权利要求6所述的***,其特征在于,所述消息统计单元,还用于获取被调用的***通信函数的名称和位置信息;
相应的,所述***还包括:输出单元:
所述输出单元,用于根据用户触发的查看指令,对确定出的问题模块函数、所述问题模块函数对***通信函数的调用次数以及所述被调用的***通信函数的名称和位置信息进行输出展示。
8.根据权利要求6或7所述的***,其特征在于,所述消息统计单元,进一步包括:
创建子单元,用于创建结构体,并声明全局变量结构体数组,其中,所述结构体至少包括模块ID、模块名称、调用函数名称、调用函数行号、调用次数和目的进程名称,所述全局变量结构体数组以所述最大模块ID为下标,用于对发送方向的进程通信消息进行统计与记录;
获取子单元,用于当进程通信***中模块函数调用封装后的套接字发送函数进行进程通信时,获取该模块函数的模块ID、预调用的***通信函数的函数名称和函数行号,以及目的进程名称;
统计子单元,用于根据模块函数的模块ID将获取的信息传入所述全局变量结构体数组,对发送方向的进程通信消息进行统计与记录。
9.根据权利要求8所述的***,其特征在于,所述***还包括:
第二确定单元,用于在所述统计子单元对发送方向的进程通信消息进行统计与记录之前,根据预先设置的标志位的取值,确定第二确定单元是否执行所述对发送方向的进程通信消息进行统计与记录的操作。
10.根据权利要求6所述的***,其特征在于,所述***还包括:
处理单元,用于根据用户触发的清除指令,对确定出的问题模块函数以及所述问题模块函数对***通信函数的调用次数进行清除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610165212.4A CN105843738A (zh) | 2016-03-22 | 2016-03-22 | 一种进程间通信的统计调试方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610165212.4A CN105843738A (zh) | 2016-03-22 | 2016-03-22 | 一种进程间通信的统计调试方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105843738A true CN105843738A (zh) | 2016-08-10 |
Family
ID=56588255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610165212.4A Pending CN105843738A (zh) | 2016-03-22 | 2016-03-22 | 一种进程间通信的统计调试方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105843738A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106485152A (zh) * | 2016-09-30 | 2017-03-08 | 北京奇虎科技有限公司 | 漏洞检测方法及装置 |
CN109032813A (zh) * | 2018-06-29 | 2018-12-18 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109039952A (zh) * | 2018-06-29 | 2018-12-18 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109062705A (zh) * | 2018-06-29 | 2018-12-21 | Oppo(重庆)智能科技有限公司 | 进程间通信的监控方法、电子装置以及可读存储介质 |
CN109062707A (zh) * | 2018-06-29 | 2018-12-21 | Oppo(重庆)智能科技有限公司 | 电子装置及其限制进程间通信的方法、存储介质 |
CN109062787A (zh) * | 2018-07-17 | 2018-12-21 | 北京中科网威信息技术有限公司 | 一种基于申威架构的进程间通信的统计调试方法及装置 |
CN109117340A (zh) * | 2018-06-29 | 2019-01-01 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的监控方法、存储介质 |
CN109117278A (zh) * | 2018-06-29 | 2019-01-01 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109144745A (zh) * | 2018-06-29 | 2019-01-04 | Oppo(重庆)智能科技有限公司 | 进程间通信的监控方法、电子装置以及可读存储介质 |
CN109240899A (zh) * | 2017-07-10 | 2019-01-18 | 北京京东尚科信息技术有限公司 | 信息获取方法和装置 |
-
2016
- 2016-03-22 CN CN201610165212.4A patent/CN105843738A/zh active Pending
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106485152A (zh) * | 2016-09-30 | 2017-03-08 | 北京奇虎科技有限公司 | 漏洞检测方法及装置 |
CN109240899A (zh) * | 2017-07-10 | 2019-01-18 | 北京京东尚科信息技术有限公司 | 信息获取方法和装置 |
CN109144745A (zh) * | 2018-06-29 | 2019-01-04 | Oppo(重庆)智能科技有限公司 | 进程间通信的监控方法、电子装置以及可读存储介质 |
CN109032813A (zh) * | 2018-06-29 | 2018-12-18 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109062707A (zh) * | 2018-06-29 | 2018-12-21 | Oppo(重庆)智能科技有限公司 | 电子装置及其限制进程间通信的方法、存储介质 |
CN109039952B (zh) * | 2018-06-29 | 2022-06-07 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109117340A (zh) * | 2018-06-29 | 2019-01-01 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的监控方法、存储介质 |
CN109117278A (zh) * | 2018-06-29 | 2019-01-01 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109039952A (zh) * | 2018-06-29 | 2018-12-18 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109062705A (zh) * | 2018-06-29 | 2018-12-21 | Oppo(重庆)智能科技有限公司 | 进程间通信的监控方法、电子装置以及可读存储介质 |
CN109062707B (zh) * | 2018-06-29 | 2020-12-25 | Oppo(重庆)智能科技有限公司 | 电子装置及其限制进程间通信的方法、存储介质 |
CN109032813B (zh) * | 2018-06-29 | 2021-01-26 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109144745B (zh) * | 2018-06-29 | 2021-04-27 | Oppo(重庆)智能科技有限公司 | 进程间通信的监控方法、电子装置以及可读存储介质 |
CN109062705B (zh) * | 2018-06-29 | 2021-06-01 | Oppo(重庆)智能科技有限公司 | 进程间通信的监控方法、电子装置以及可读存储介质 |
CN109117340B (zh) * | 2018-06-29 | 2022-03-29 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的监控方法、存储介质 |
CN109062787A (zh) * | 2018-07-17 | 2018-12-21 | 北京中科网威信息技术有限公司 | 一种基于申威架构的进程间通信的统计调试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105843738A (zh) | 一种进程间通信的统计调试方法及*** | |
CN108023829B (zh) | 报文处理方法及装置、存储介质、电子设备 | |
US20060026169A1 (en) | Communication method with reduced response time in a distributed data processing system | |
CN111294792B (zh) | 一种缓存状态上报方法、终端和计算机存储介质 | |
CN106571978B (zh) | 数据包捕获方法及装置 | |
CN106559447A (zh) | Jslee容器的业务处理方法及*** | |
US20150304227A1 (en) | Queue Management Method and Apparatus | |
CN114357029A (zh) | 业务数据的处理方法、装置、设备、介质及程序产品 | |
WO2021190088A1 (zh) | 任务派发方法、装置、任务执行***和服务器 | |
WO2021238259A1 (zh) | 一种数据传输方法、装置、设备及计算机可读存储介质 | |
CN114138506A (zh) | 消息队列调度方法及其装置、设备、介质、产品 | |
CN112148506A (zh) | 消息处理方法、装置、平台和存储介质 | |
CN102170401B (zh) | 一种数据的处理方法和设备 | |
CN113746883A (zh) | 链路跟踪方法及*** | |
US20200104193A1 (en) | Port Groups | |
CN107885593B (zh) | 用户认证方法和装置 | |
CN1808510A (zh) | 仪表***中的基于网络触发 | |
CN108243091B (zh) | 一种信息共享装置和信息共享方法 | |
CN112748883A (zh) | 一种io请求流水线处理设备、方法、***及存储介质 | |
CN113094349A (zh) | 一种基于虚拟机的双***日志上报方法及*** | |
CN109862044A (zh) | 一种转换装置、网络设备及数据传输方法 | |
CN116737673B (zh) | 嵌入式操作***中文件***的调度方法、设备及存储介质 | |
US7720793B2 (en) | Method and system for selectively processing test data using subscriptions in a multi-formatter architecture | |
CN109343938A (zh) | 一种事件统计方法 | |
CN116340018A (zh) | 基于消息订阅与派发的嵌入式软件任务间通信方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |