欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種進(jìn)程間通信的統(tǒng)計(jì)調(diào)試方法及系統(tǒng)的制作方法

文檔序號(hào):10488866閱讀:228來(lái)源:國(guó)知局
一種進(jìn)程間通信的統(tǒng)計(jì)調(diào)試方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種進(jìn)程間通信的統(tǒng)計(jì)調(diào)試方法及系統(tǒng),該方法包括:在網(wǎng)絡(luò)設(shè)備間的進(jìn)程通信系統(tǒng)中封裝套接字發(fā)送函數(shù),以使進(jìn)程通信系統(tǒng)中各個(gè)模塊函數(shù)調(diào)用封裝后的套接字發(fā)送函數(shù)進(jìn)行進(jìn)程通信;采用封裝后的套接字發(fā)送函數(shù)對(duì)各個(gè)模塊函數(shù)的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄,得到每一模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù);若模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)大于預(yù)設(shè)閾值,確定該模塊函數(shù)為問(wèn)題模塊函數(shù)。本發(fā)明實(shí)施例能夠準(zhǔn)確地定位出頻繁進(jìn)行進(jìn)程通信的模塊函數(shù),進(jìn)而避免模塊函數(shù)頻繁進(jìn)行不必要的進(jìn)程通信,而導(dǎo)致系統(tǒng)性能下降或系統(tǒng)卡頓的問(wèn)題。
【專利說(shuō)明】
一種進(jìn)程間通信的統(tǒng)計(jì)調(diào)試方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種進(jìn)程間通信的統(tǒng)計(jì)調(diào)試方法及系統(tǒng)。
【背景技術(shù)】
[0002]socket,即套接字是一種通信機(jī)制,憑借這種機(jī)制,客戶/服務(wù)器(即要進(jìn)行通信的進(jìn)程)系統(tǒng)的開發(fā)工作既可以在本地單機(jī)上進(jìn)行,也可以跨網(wǎng)絡(luò)進(jìn)行。也就是說(shuō)它可以讓不在同一臺(tái)計(jì)算機(jī)但通過(guò)網(wǎng)絡(luò)連接計(jì)算機(jī)上的進(jìn)程進(jìn)行通信。也因?yàn)檫@樣,套接字明確地將客戶端和服務(wù)器區(qū)分開來(lái)。
[0003]目前,socket的實(shí)現(xiàn)具體為:服務(wù)器應(yīng)用程序用系統(tǒng)調(diào)用socket來(lái)創(chuàng)建一個(gè)套接字,它是系統(tǒng)分配給該服務(wù)器進(jìn)程的類似文件描述符的資源,它不能與其他的進(jìn)程共享。接下來(lái),服務(wù)器進(jìn)程會(huì)給套接字起個(gè)名字,我們使用系統(tǒng)調(diào)用bind來(lái)給套接字命名。然后服務(wù)器進(jìn)程就開始等待客戶連接到這個(gè)套接字。然后,系統(tǒng)調(diào)用listen來(lái)創(chuàng)建一個(gè)隊(duì)列并將其用于存放來(lái)自客戶的進(jìn)入連接。最后,服務(wù)器通過(guò)系統(tǒng)調(diào)用accept來(lái)接受客戶的連接。它會(huì)創(chuàng)建一個(gè)與原有的命名套接不同的新套接字,這個(gè)套接字只用于與這個(gè)特定客戶端進(jìn)行通信,而命名套接字(即原先的套接字)則被保留下來(lái)繼續(xù)處理來(lái)自其他客戶的連接?;趕ocket的客戶端比服務(wù)器端簡(jiǎn)單,同樣,客戶應(yīng)用程序首先調(diào)用socket來(lái)創(chuàng)建一個(gè)未命名的套接字,然后將服務(wù)器的命名套接字作為一個(gè)地址來(lái)調(diào)用connect與服務(wù)器建立連接。一旦連接建立,就可以像使用底層的文件描述符那樣用套接字來(lái)實(shí)現(xiàn)進(jìn)程雙向數(shù)據(jù)的通信。
[0004]但是,用套接字來(lái)實(shí)現(xiàn)進(jìn)程雙向數(shù)據(jù)的通信通過(guò)一些系統(tǒng)調(diào)用函數(shù),如read/write(最簡(jiǎn)單的套接口寫入函數(shù))、recv/send(增加了flags標(biāo)記)、recvfrom/sendto(增加了套接口地址與套接口長(zhǎng)度參數(shù)hreadv/writev(沒(méi)有標(biāo)記與套接口地址,但是具有分散寫入的能力)、recvmsg/sendmsg(增加標(biāo)記,套接口地址與長(zhǎng)度,分散寫入以及附屬數(shù)據(jù)的能力),使用這些函數(shù)可進(jìn)行進(jìn)程間的通信的數(shù)據(jù)收發(fā)操作。但進(jìn)程間通信函數(shù)都是系統(tǒng)調(diào)用,頻繁的進(jìn)程間通信會(huì)導(dǎo)致系統(tǒng)性能下降或系統(tǒng)卡頓,特別是一些網(wǎng)絡(luò)設(shè)備命令下發(fā)和處理在不同進(jìn)程中,進(jìn)程通信方式又被其他模塊共用(如日志模塊)時(shí),在大流量日志情況下頻繁的系統(tǒng)調(diào)用會(huì)影響系統(tǒng)的正常運(yùn)行,而進(jìn)程間通信沒(méi)有統(tǒng)計(jì)調(diào)試功能,無(wú)法定位具體是哪個(gè)模塊哪個(gè)函數(shù)在頻繁進(jìn)行進(jìn)程通信導(dǎo)致問(wèn)題。

【發(fā)明內(nèi)容】

[0005]針對(duì)現(xiàn)有技術(shù)方案存在的問(wèn)題和不足,本發(fā)明提供了一種進(jìn)程間通信的統(tǒng)計(jì)調(diào)試方法及系統(tǒng),以解決現(xiàn)有技術(shù)中無(wú)法定位頻繁進(jìn)行進(jìn)程通信的模塊函數(shù),而導(dǎo)致系統(tǒng)性能下降或系統(tǒng)卡頓的問(wèn)題。
[0006]根據(jù)本發(fā)明的一個(gè)方面,提供了一種進(jìn)程間通信的統(tǒng)計(jì)調(diào)試方法,該方法包括:
[0007]在網(wǎng)絡(luò)設(shè)備間的進(jìn)程通信系統(tǒng)中封裝套接字發(fā)送函數(shù),以使進(jìn)程通信系統(tǒng)中各個(gè)模塊函數(shù)調(diào)用封裝后的套接字發(fā)送函數(shù)進(jìn)行進(jìn)程通信;
[0008]采用封裝后的套接字發(fā)送函數(shù)對(duì)各個(gè)模塊函數(shù)的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄,得到每一模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù);
[0009]若模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)大于預(yù)設(shè)閾值,確定該模塊函數(shù)為問(wèn)題模塊函數(shù)。
[0010]其中,所述方法還包括:
[0011 ]獲取被調(diào)用的系統(tǒng)通信函數(shù)的名稱和位置信息;
[0012]根據(jù)用戶觸發(fā)的查看指令,對(duì)確定出的問(wèn)題模塊函數(shù)、所述問(wèn)題模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)以及所述被調(diào)用的系統(tǒng)通信函數(shù)的名稱和位置信息進(jìn)行輸出展示。
[0013]其中,所述采用封裝后的套接字發(fā)送函數(shù)對(duì)各個(gè)模塊函數(shù)的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄,進(jìn)一步包括:
[0014]創(chuàng)建結(jié)構(gòu)體,并聲明全局變量結(jié)構(gòu)體數(shù)組,其中,所述結(jié)構(gòu)體至少包括模塊ID、模塊名稱、調(diào)用函數(shù)名稱、調(diào)用函數(shù)行號(hào)、調(diào)用次數(shù)和目的進(jìn)程名稱,所述全局變量結(jié)構(gòu)體數(shù)組以所述最大模塊ID為下標(biāo),用于對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄;
[0015]當(dāng)進(jìn)程通信系統(tǒng)中模塊函數(shù)調(diào)用封裝后的套接字發(fā)送函數(shù)進(jìn)行進(jìn)程通信時(shí),獲取該模塊函數(shù)的模塊ID、預(yù)調(diào)用的系統(tǒng)通信函數(shù)的函數(shù)名稱和函數(shù)行號(hào),以及目的進(jìn)程名稱;
[0016]根據(jù)模塊函數(shù)的模塊ID將獲取的信息傳入所述全局變量結(jié)構(gòu)體數(shù)組,對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄。
[0017]其中,在所述對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄之前,所述方法還包括:
[0018]根據(jù)預(yù)先設(shè)置的標(biāo)志位的取值,確定是否執(zhí)行所述對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄的步驟。
[0019]其中,所述方法還包括:
[0020]根據(jù)用戶觸發(fā)的清除指令,對(duì)確定出的問(wèn)題模塊函數(shù)以及所述問(wèn)題模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)進(jìn)行清除。
[0021]根據(jù)本發(fā)明的另一個(gè)方面,提供了一種進(jìn)程間通信的統(tǒng)計(jì)調(diào)試系統(tǒng),該系統(tǒng)包括:
[0022]函數(shù)封裝單元,用于在網(wǎng)絡(luò)設(shè)備間的進(jìn)程通信系統(tǒng)中封裝套接字發(fā)送函數(shù),以使進(jìn)程通信系統(tǒng)中各個(gè)模塊函數(shù)調(diào)用封裝后的套接字發(fā)送函數(shù)進(jìn)行進(jìn)程通信;
[0023]消息統(tǒng)計(jì)單元,用于采用函數(shù)封裝單元封裝后的套接字發(fā)送函數(shù)對(duì)各個(gè)模塊函數(shù)的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄,得到每一模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù);
[0024]第一確定單元,用于若模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)大于預(yù)設(shè)閾值,確定該模塊函數(shù)為問(wèn)題模塊函數(shù)。
[0025]其中,所述消息統(tǒng)計(jì)單元,還用于獲取被調(diào)用的系統(tǒng)通信函數(shù)的名稱和位置信息;
[0026]相應(yīng)的,所述系統(tǒng)還包括:輸出單元:
[0027]所述輸出單元,用于根據(jù)用戶觸發(fā)的查看指令,對(duì)確定出的問(wèn)題模塊函數(shù)、所述問(wèn)題模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)以及所述被調(diào)用的系統(tǒng)通信函數(shù)的名稱和位置信息進(jìn)行輸出展示。
[0028]其中,所述消息統(tǒng)計(jì)單元,進(jìn)一步包括:
[0029]創(chuàng)建子單元,用于創(chuàng)建結(jié)構(gòu)體,并聲明全局變量結(jié)構(gòu)體數(shù)組,其中,所述結(jié)構(gòu)體至少包括模塊ID、模塊名稱、調(diào)用函數(shù)名稱、調(diào)用函數(shù)行號(hào)、調(diào)用次數(shù)和目的進(jìn)程名稱,所述全局變量結(jié)構(gòu)體數(shù)組以所述最大模塊ID為下標(biāo),用于對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄;
[0030]獲取子單元,用于當(dāng)進(jìn)程通信系統(tǒng)中模塊函數(shù)調(diào)用封裝后的套接字發(fā)送函數(shù)進(jìn)行進(jìn)程通信時(shí),獲取該模塊函數(shù)的模塊ID、預(yù)調(diào)用的系統(tǒng)通信函數(shù)的函數(shù)名稱和函數(shù)行號(hào),以及目的進(jìn)程名稱;
[0031]統(tǒng)計(jì)子單元,用于根據(jù)模塊函數(shù)的模塊ID將獲取的信息傳入所述全局變量結(jié)構(gòu)體數(shù)組,對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄。
[0032]其中,所述系統(tǒng)還包括:
[0033]第二確定單元,用于在所述統(tǒng)計(jì)子單元對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄之前,根據(jù)預(yù)先設(shè)置的標(biāo)志位的取值,確定第二確定單元是否執(zhí)行所述對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄的操作。
[0034]其中,所述系統(tǒng)還包括:處理單元,用于根據(jù)用戶觸發(fā)的清除指令,對(duì)確定出的問(wèn)題模塊函數(shù)以及所述問(wèn)題模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)進(jìn)行清除。
[0035]本發(fā)明的有益效果為:
[0036]本發(fā)明提供的進(jìn)程間通信的統(tǒng)計(jì)調(diào)試方法及系統(tǒng),通過(guò)在網(wǎng)絡(luò)設(shè)備間的進(jìn)程通信系統(tǒng)中封裝套接字發(fā)送函數(shù),各個(gè)模塊函數(shù)通過(guò)調(diào)用封裝后的套接字發(fā)送函數(shù)進(jìn)行進(jìn)程通信,并對(duì)各個(gè)模塊函數(shù)的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄,得到每一模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù),當(dāng)調(diào)用次數(shù)大于預(yù)設(shè)閾值時(shí),則確定該模塊函數(shù)為問(wèn)題模塊函數(shù)。本發(fā)明能夠準(zhǔn)確地定位出頻繁進(jìn)行進(jìn)程通信的模塊函數(shù),進(jìn)而避免模塊函數(shù)頻繁進(jìn)行不必要的進(jìn)程通信,而導(dǎo)致系統(tǒng)性能下降或系統(tǒng)卡頓的問(wèn)題。
[0037]上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【附圖說(shuō)明】
[0038]通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0039]圖1為本發(fā)明實(shí)施例提出的一種進(jìn)程間通信的統(tǒng)計(jì)調(diào)試方法的流程圖;
[0040]圖2為本發(fā)明實(shí)施例提出的一種進(jìn)程間通信的統(tǒng)計(jì)調(diào)試系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0041]下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。
[0042]本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個(gè)”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說(shuō)明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。
[0043]本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(yǔ)(包括技術(shù)術(shù)語(yǔ)和科學(xué)術(shù)語(yǔ)),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語(yǔ),應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非被特定定義,否則不會(huì)用理想化或過(guò)于正式的含義來(lái)解釋。
[0044]圖1示出了本發(fā)明實(shí)施例的一種進(jìn)程間通信的統(tǒng)計(jì)調(diào)試方法的流程圖。
[0045]如圖1所示,本發(fā)明實(shí)施例提出的進(jìn)程間通信的統(tǒng)計(jì)調(diào)試方法具體包括以下步驟:
[0046]步驟S11、在網(wǎng)絡(luò)設(shè)備間的進(jìn)程通信系統(tǒng)中封裝套接字發(fā)送函數(shù),以使進(jìn)程通信系統(tǒng)中各個(gè)模塊函數(shù)調(diào)用封裝后的套接字發(fā)送函數(shù)進(jìn)行進(jìn)程通信。
[0047]步驟S12、采用封裝后的套接字發(fā)送函數(shù)對(duì)各個(gè)模塊函數(shù)的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄,得到每一模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)。
[0048]可理解的是,用套接字來(lái)實(shí)現(xiàn)進(jìn)程雙向數(shù)據(jù)的通信需要通過(guò)調(diào)用一些系統(tǒng)通信函數(shù),使用這些函數(shù)可進(jìn)行進(jìn)程間的通信的數(shù)據(jù)收發(fā)操作。具體如,read/write(套接口寫入函數(shù))、recv/send(增加了flags標(biāo)記)、recvfrom/sendto(增加了套接口地址與套接口長(zhǎng)度參數(shù))、readv/writev(沒(méi)有標(biāo)記與套接口地址,但是具有分散寫入的能力)、recvmsg/s endms g (增加標(biāo)記,套接口地址與長(zhǎng)度,分散寫入以及附屬數(shù)據(jù)的能力)等。
[0049]步驟S13、若模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)大于預(yù)設(shè)閾值,確定該模塊函數(shù)為問(wèn)題模塊函數(shù)。
[0050]本發(fā)明實(shí)施例提供的進(jìn)程間通信的統(tǒng)計(jì)調(diào)試方法,通過(guò)在網(wǎng)絡(luò)設(shè)備間的多進(jìn)程通信系統(tǒng)中封裝套接字發(fā)送函數(shù),并在封裝函數(shù)中增加進(jìn)程通信的按模塊的統(tǒng)計(jì)調(diào)試功能,以便統(tǒng)計(jì)查看各模塊函數(shù)在進(jìn)程通信中對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù),以達(dá)到定位頻繁進(jìn)行進(jìn)程通信的模塊函數(shù)的目的,避免模塊函數(shù)頻繁進(jìn)行不必要的進(jìn)程通信,而導(dǎo)致系統(tǒng)性能下降或系統(tǒng)卡頓的問(wèn)題。
[0051]本發(fā)明實(shí)施例,步驟S12中的采用封裝后的套接字發(fā)送函數(shù)對(duì)各個(gè)模塊函數(shù)的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄,進(jìn)一步包括以下附圖中未示出的步驟:
[0052]創(chuàng)建結(jié)構(gòu)體,并聲明全局變量結(jié)構(gòu)體數(shù)組,其中,所述結(jié)構(gòu)體至少包括模塊ID、模塊名稱、調(diào)用函數(shù)名稱、調(diào)用函數(shù)行號(hào)、調(diào)用次數(shù)和目的進(jìn)程名稱,所述全局變量結(jié)構(gòu)體數(shù)組以所述最大模塊ID為下標(biāo),用于對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄;
[0053]當(dāng)進(jìn)程通信系統(tǒng)中模塊函數(shù)調(diào)用封裝后的套接字發(fā)送函數(shù)進(jìn)行進(jìn)程通信時(shí),獲取該模塊函數(shù)的模塊ID、預(yù)調(diào)用的系統(tǒng)通信函數(shù)的函數(shù)名稱和函數(shù)行號(hào),以及目的進(jìn)程名稱;
[0054]根據(jù)模塊函數(shù)的模塊ID將獲取的信息傳入所述全局變量結(jié)構(gòu)體數(shù)組,對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄。
[0055]進(jìn)一步地,在所述對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄之前,所述方法還包括以下步驟:根據(jù)預(yù)先設(shè)置的標(biāo)志位的取值,確定是否執(zhí)行所述對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄的步驟。
[0056]下面通過(guò)一個(gè)具體實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說(shuō)明。
[0057]創(chuàng)建結(jié)構(gòu)體并聲明全局變量結(jié)構(gòu)體數(shù)組(如struct socket_debug_info g_socket_debug_info[M0UID_MAX]),結(jié)構(gòu)體成員包括模塊ID、模塊名稱、調(diào)用函數(shù)名稱、調(diào)用函數(shù)行號(hào)、調(diào)用次數(shù)、目的進(jìn)程名稱等,聲明的全局變量結(jié)構(gòu)體數(shù)組以最大模塊ID為下標(biāo),對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄,同時(shí)聲明全局變量作為標(biāo)志位控制統(tǒng)計(jì)功能是否開啟(如g_g_socket_debug_flag);
[0058]封裝進(jìn)程通信發(fā)送函數(shù),新增加四個(gè)函數(shù)入?yún)?,分別為模塊ID、調(diào)用函數(shù)名稱、調(diào)用函數(shù)行號(hào)、目的進(jìn)程名稱;在需要進(jìn)程通信的各模塊函數(shù)中均調(diào)用封裝后的進(jìn)程通信發(fā)送函數(shù),并把當(dāng)前模塊ID&_LINE_、_FUNCT1N_、目的進(jìn)程名稱作為入?yún)魅敕庋b的進(jìn)程通信發(fā)送函數(shù),在該封裝函數(shù)中會(huì)以傳入的模塊ID作為之前聲明的全局變量數(shù)組下標(biāo),統(tǒng)計(jì)該模塊的調(diào)用的進(jìn)程通信函數(shù)的相關(guān)信息到全局變量數(shù)組中,包括模塊ID、模塊名稱、調(diào)用函數(shù)名稱、調(diào)用函數(shù)行號(hào)、調(diào)用次數(shù)累加、目的進(jìn)程名稱等,具體如下:
[0059]g_socket_debug_info[MOU_ID].mou_id=M0U_ID;
[0060]g_socket_debug_info[MOU_ID].mou_name = get_name_by_id(MOU_ID);
[0061]g_socket_debug_info[MOU_ID].pfunc=_FUNCT10N;
[0062]g_socket_debug_info[MOU_ID].func_line =_LINE_;
[0063]g_socket_debug_info[MOU_ID].count = count++;
[0064]g_socket_debug_info[MOU_ID].dest_task = PID;其中,PID為賦值發(fā)往的目的進(jìn)程PID,該統(tǒng)計(jì)功能通過(guò)之前聲明的全局變量標(biāo)志位控制是否開啟或關(guān)閉。
[0065]在本發(fā)明實(shí)施例中,所述方法還包括以下附圖中未示出的以下步驟:
[0066]獲取被調(diào)用的系統(tǒng)通信函數(shù)的名稱和位置信息。需要說(shuō)明的是,本實(shí)施例中的被調(diào)用的系統(tǒng)通信函數(shù)的位置信息為被調(diào)用的系統(tǒng)函數(shù)的行號(hào)。
[0067]根據(jù)用戶觸發(fā)的查看指令,對(duì)確定出的問(wèn)題模塊函數(shù)、所述問(wèn)題模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)以及所述被調(diào)用的系統(tǒng)通信函數(shù)的名稱和位置信息進(jìn)行輸出展示。
[0068]在本發(fā)明實(shí)施例中,所述方法還包括以下附圖中未示出的以下步驟:根據(jù)用戶觸發(fā)的清除指令,對(duì)確定出的問(wèn)題模塊函數(shù)以及所述問(wèn)題模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)進(jìn)行清除。
[0069]在本發(fā)明另一實(shí)施例中,所述方法還包括根據(jù)用戶觸發(fā)的控制指令,控制進(jìn)程通信統(tǒng)計(jì)調(diào)試功能開啟或關(guān)閉的步驟。本發(fā)明實(shí)施例中,增加開關(guān)的目的是在需要使用時(shí)開啟,平時(shí)為不影響性能可默認(rèn)關(guān)閉;通過(guò)統(tǒng)計(jì)顯示的信息可快速知道進(jìn)程通信的模塊、函數(shù)及具體行號(hào),可根據(jù)調(diào)用次數(shù)的增加情況判斷是否有頻繁的進(jìn)程通信發(fā)生,作為判斷系統(tǒng)性能下降或系統(tǒng)卡頓的依據(jù)。
[0070]在實(shí)際應(yīng)用中,可通過(guò)新增命令行控制進(jìn)程通信統(tǒng)計(jì)調(diào)試功能開啟或關(guān)閉,以及查看或清除統(tǒng)計(jì)到的進(jìn)程通信信息,查看功能為以M0UID_MAX為最大值for循環(huán)的方式遍歷g_socket_debug_info[;^ji|;組結(jié)構(gòu)體,將統(tǒng)計(jì)保存的信息打印輸出;清除功能為以M0UID_1八父為最大值;^1'循環(huán)的方式遍歷8_80 01^1:_(16131^_;[1^0[]數(shù)組結(jié)構(gòu)體并使成員清空(memset也可)。
[0071]本發(fā)明實(shí)施例提供的進(jìn)程間通信的統(tǒng)計(jì)調(diào)試方法,便于統(tǒng)計(jì)查看各進(jìn)程各模塊進(jìn)程通信函數(shù)調(diào)用的次數(shù)與頻率,同時(shí)輸出調(diào)用函數(shù)名稱及行號(hào),以達(dá)到定位頻繁的進(jìn)程通信導(dǎo)致系統(tǒng)性能下降或系統(tǒng)卡頓問(wèn)題的目的。
[0072]對(duì)于方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明實(shí)施例并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明實(shí)施例,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本發(fā)明實(shí)施例所必須的。
[0073]圖2示出了本發(fā)明另一實(shí)施例提出的一種進(jìn)程間通信的統(tǒng)計(jì)調(diào)試系統(tǒng)的結(jié)構(gòu)示意圖。
[0074]如圖2所示,本發(fā)明實(shí)施例提出的進(jìn)程間通信的統(tǒng)計(jì)調(diào)試系統(tǒng)包括函數(shù)封裝單元201、消息統(tǒng)計(jì)單元202和第一確定單元203,其中:
[0075]所述函數(shù)封裝單元201,用于在網(wǎng)絡(luò)設(shè)備間的進(jìn)程通信系統(tǒng)中封裝套接字發(fā)送函數(shù),以使進(jìn)程通信系統(tǒng)中各個(gè)模塊函數(shù)調(diào)用封裝后的套接字發(fā)送函數(shù)進(jìn)行進(jìn)程通信;
[0076]所述消息統(tǒng)計(jì)單元202,用于采用函數(shù)封裝單元封裝后的套接字發(fā)送函數(shù)對(duì)各個(gè)模塊函數(shù)的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄,得到每一模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù);
[0077]所述第一確定單元203,用于若模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)大于預(yù)設(shè)閾值,確定該模塊函數(shù)為問(wèn)題模塊函數(shù)。
[0078]本發(fā)明實(shí)施例中,所述消息統(tǒng)計(jì)單元,還用于獲取被調(diào)用的系統(tǒng)通信函數(shù)的名稱和位置信息;
[0079]相應(yīng)的,所述系統(tǒng)還包括附圖中未示出的輸出單元:
[0080]所述輸出單元,用于根據(jù)用戶觸發(fā)的查看指令,對(duì)確定出的問(wèn)題模塊函數(shù)、所述問(wèn)題模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)以及所述被調(diào)用的系統(tǒng)通信函數(shù)的名稱和位置信息進(jìn)行輸出展示。
[0081]本發(fā)明實(shí)施例中,所述消息統(tǒng)計(jì)單元,進(jìn)一步包括創(chuàng)建子單元、獲取子單元和統(tǒng)計(jì)子單元,其中:
[0082]所述創(chuàng)建子單元,用于創(chuàng)建結(jié)構(gòu)體,并聲明全局變量結(jié)構(gòu)體數(shù)組,其中,所述結(jié)構(gòu)體至少包括模塊ID、模塊名稱、調(diào)用函數(shù)名稱、調(diào)用函數(shù)行號(hào)、調(diào)用次數(shù)和目的進(jìn)程名稱,所述全局變量結(jié)構(gòu)體數(shù)組以所述最大模塊ID為下標(biāo),用于對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄;
[0083]所述獲取子單元,用于當(dāng)進(jìn)程通信系統(tǒng)中模塊函數(shù)調(diào)用封裝后的套接字發(fā)送函數(shù)進(jìn)行進(jìn)程通信時(shí),獲取該模塊函數(shù)的模塊ID、預(yù)調(diào)用的系統(tǒng)通信函數(shù)的函數(shù)名稱和函數(shù)行號(hào),以及目的進(jìn)程名稱;
[0084]所述統(tǒng)計(jì)子單元,用于根據(jù)模塊函數(shù)的模塊ID將獲取的信息傳入所述全局變量結(jié)構(gòu)體數(shù)組,對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄。
[0085]本發(fā)明實(shí)施例中,所述系統(tǒng)還包括附圖中未示出的第二確定單元,所述第二確定單元,用于在所述統(tǒng)計(jì)子單元對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄之前,根據(jù)預(yù)先設(shè)置的標(biāo)志位的取值,確定第二確定單元是否執(zhí)行所述對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄的操作。
[0086]其中,所述系統(tǒng)還包括附圖中未示出的處理單元,所述處理單元用于根據(jù)用戶觸發(fā)的清除指令,對(duì)確定出的問(wèn)題模塊函數(shù)以及所述問(wèn)題模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)進(jìn)行清除。
[0087]對(duì)于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
[0088]綜上,本發(fā)明實(shí)施例提供的進(jìn)程間通信的統(tǒng)計(jì)調(diào)試方法及系統(tǒng),通過(guò)在網(wǎng)絡(luò)設(shè)備間的進(jìn)程通信系統(tǒng)中封裝套接字發(fā)送函數(shù),各個(gè)模塊函數(shù)通過(guò)調(diào)用封裝后的套接字發(fā)送函數(shù)進(jìn)行進(jìn)程通信,并對(duì)各個(gè)模塊函數(shù)的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄,得到每一模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù),當(dāng)調(diào)用次數(shù)大于預(yù)設(shè)閾值時(shí),則確定該模塊函數(shù)為問(wèn)題模塊函數(shù)。本發(fā)明能夠準(zhǔn)確地定位出頻繁進(jìn)行進(jìn)程通信的模塊函數(shù),進(jìn)而避免模塊函數(shù)頻繁進(jìn)行不必要的進(jìn)程通信,而導(dǎo)致系統(tǒng)性能下降或系統(tǒng)卡頓的問(wèn)題。
[0089]通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可以通過(guò)硬件實(shí)現(xiàn),也可以借助軟件加必要的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該軟件產(chǎn)品可以存儲(chǔ)在一個(gè)非易失性存儲(chǔ)介質(zhì)(可以是CD-R0M,U盤,移動(dòng)硬盤等)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0090]本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施例的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的。
[0091]本領(lǐng)域技術(shù)人員可以理解實(shí)施例中的系統(tǒng)中的模塊可以按照實(shí)施例描述進(jìn)行分布于實(shí)施例的系統(tǒng)中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個(gè)或多個(gè)系統(tǒng)中。上述實(shí)施例的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。
[0092]以上所述僅是本發(fā)明的部分實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種進(jìn)程間通信的統(tǒng)計(jì)調(diào)試方法,其特征在于,所述方法包括: 在網(wǎng)絡(luò)設(shè)備間的進(jìn)程通信系統(tǒng)中封裝套接字發(fā)送函數(shù),以使進(jìn)程通信系統(tǒng)中各個(gè)模塊函數(shù)調(diào)用封裝后的套接字發(fā)送函數(shù)進(jìn)行進(jìn)程通信; 采用封裝后的套接字發(fā)送函數(shù)對(duì)各個(gè)模塊函數(shù)的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄,得到每一模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù); 若模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)大于預(yù)設(shè)閾值,確定該模塊函數(shù)為問(wèn)題模塊函數(shù)。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 獲取被調(diào)用的系統(tǒng)通信函數(shù)的名稱和位置信息; 根據(jù)用戶觸發(fā)的查看指令,對(duì)確定出的問(wèn)題模塊函數(shù)、所述問(wèn)題模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)以及所述被調(diào)用的系統(tǒng)通信函數(shù)的名稱和位置信息進(jìn)行輸出展示。3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述采用封裝后的套接字發(fā)送函數(shù)對(duì)各個(gè)模塊函數(shù)的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄,進(jìn)一步包括: 創(chuàng)建結(jié)構(gòu)體,并聲明全局變量結(jié)構(gòu)體數(shù)組,其中,所述結(jié)構(gòu)體至少包括模塊ID、模塊名稱、調(diào)用函數(shù)名稱、調(diào)用函數(shù)行號(hào)、調(diào)用次數(shù)和目的進(jìn)程名稱,所述全局變量結(jié)構(gòu)體數(shù)組以所述最大模塊ID為下標(biāo),用于對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄; 當(dāng)進(jìn)程通信系統(tǒng)中模塊函數(shù)調(diào)用封裝后的套接字發(fā)送函數(shù)進(jìn)行進(jìn)程通信時(shí),獲取該模塊函數(shù)的模塊ID、預(yù)調(diào)用的系統(tǒng)通信函數(shù)的函數(shù)名稱和函數(shù)行號(hào),以及目的進(jìn)程名稱;根據(jù)模塊函數(shù)的模塊ID將獲取的信息傳入所述全局變量結(jié)構(gòu)體數(shù)組,對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,在所述對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄之前,所述方法還包括: 根據(jù)預(yù)先設(shè)置的標(biāo)志位的取值,確定是否執(zhí)行所述對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄的步驟。5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 根據(jù)用戶觸發(fā)的清除指令,對(duì)確定出的問(wèn)題模塊函數(shù)以及所述問(wèn)題模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)進(jìn)行清除。6.一種進(jìn)程間通信的統(tǒng)計(jì)調(diào)試系統(tǒng),其特征在于,所述系統(tǒng)包括: 函數(shù)封裝單元,用于在網(wǎng)絡(luò)設(shè)備間的進(jìn)程通信系統(tǒng)中封裝套接字發(fā)送函數(shù),以使進(jìn)程通信系統(tǒng)中各個(gè)模塊函數(shù)調(diào)用封裝后的套接字發(fā)送函數(shù)進(jìn)行進(jìn)程通信; 消息統(tǒng)計(jì)單元,用于采用函數(shù)封裝單元封裝后的套接字發(fā)送函數(shù)對(duì)各個(gè)模塊函數(shù)的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄,得到每一模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù); 第一確定單元,用于若模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)大于預(yù)設(shè)閾值,確定該模塊函數(shù)為問(wèn)題模塊函數(shù)。7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述消息統(tǒng)計(jì)單元,還用于獲取被調(diào)用的系統(tǒng)通信函數(shù)的名稱和位置信息; 相應(yīng)的,所述系統(tǒng)還包括:輸出單元: 所述輸出單元,用于根據(jù)用戶觸發(fā)的查看指令,對(duì)確定出的問(wèn)題模塊函數(shù)、所述問(wèn)題模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)以及所述被調(diào)用的系統(tǒng)通信函數(shù)的名稱和位置信息進(jìn)行輸出展示。8.根據(jù)權(quán)利要求6或7所述的系統(tǒng),其特征在于,所述消息統(tǒng)計(jì)單元,進(jìn)一步包括: 創(chuàng)建子單元,用于創(chuàng)建結(jié)構(gòu)體,并聲明全局變量結(jié)構(gòu)體數(shù)組,其中,所述結(jié)構(gòu)體至少包括模塊ID、模塊名稱、調(diào)用函數(shù)名稱、調(diào)用函數(shù)行號(hào)、調(diào)用次數(shù)和目的進(jìn)程名稱,所述全局變量結(jié)構(gòu)體數(shù)組以所述最大模塊ID為下標(biāo),用于對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄; 獲取子單元,用于當(dāng)進(jìn)程通信系統(tǒng)中模塊函數(shù)調(diào)用封裝后的套接字發(fā)送函數(shù)進(jìn)行進(jìn)程通信時(shí),獲取該模塊函數(shù)的模塊ID、預(yù)調(diào)用的系統(tǒng)通信函數(shù)的函數(shù)名稱和函數(shù)行號(hào),以及目的進(jìn)程名稱; 統(tǒng)計(jì)子單元,用于根據(jù)模塊函數(shù)的模塊ID將獲取的信息傳入所述全局變量結(jié)構(gòu)體數(shù)組,對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄。9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 第二確定單元,用于在所述統(tǒng)計(jì)子單元對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄之前,根據(jù)預(yù)先設(shè)置的標(biāo)志位的取值,確定第二確定單元是否執(zhí)行所述對(duì)發(fā)送方向的進(jìn)程通信消息進(jìn)行統(tǒng)計(jì)與記錄的操作。10.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 處理單元,用于根據(jù)用戶觸發(fā)的清除指令,對(duì)確定出的問(wèn)題模塊函數(shù)以及所述問(wèn)題模塊函數(shù)對(duì)系統(tǒng)通信函數(shù)的調(diào)用次數(shù)進(jìn)行清除。
【文檔編號(hào)】G06F11/36GK105843738SQ201610165212
【公開日】2016年8月10日
【申請(qǐng)日】2016年3月22日
【發(fā)明人】高福亮
【申請(qǐng)人】漢柏科技有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
梓潼县| 白沙| 抚顺县| 洪泽县| 英山县| 封开县| 荆门市| 吉木萨尔县| 邵阳市| 四子王旗| 石林| 鄱阳县| 青神县| 泽州县| 宁乡县| 米脂县| 固阳县| 墨江| 荣昌县| 个旧市| 田林县| 句容市| 海盐县| 康保县| 定西市| 祁阳县| 逊克县| 眉山市| 陆川县| 靖远县| 内黄县| 秭归县| 凌云县| 拉孜县| 安新县| 西峡县| 翁牛特旗| 汤原县| 五大连池市| 祁门县| 美姑县|