亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

軟件監(jiān)測方法、裝置以及系統(tǒng)的制作方法

文檔序號:6358994閱讀:126來源:國知局
專利名稱:軟件監(jiān)測方法、裝置以及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤其涉及一種軟件監(jiān)測方法、裝置以及系統(tǒng)。
背景技術(shù)
在使用并行技術(shù)的軟件系統(tǒng)中,例如應(yīng)用多線程技術(shù)以及多核處理技術(shù)等軟件系統(tǒng),軟件系統(tǒng)中程序的串行部分成為整個系統(tǒng)性能的瓶頸因素,而串行部分主要體現(xiàn)在各種鎖程序所保護的臨界區(qū),包括信號量,互斥鎖程序(Mutex),自旋鎖程序(Spinlock),開關(guān)中斷,讀寫鎖程序等等。如果能夠詳細、準(zhǔn)確地統(tǒng)計串行部分中各種鎖程序的相關(guān)信息, 則可以為整個軟件系統(tǒng)的性能優(yōu)化提供數(shù)據(jù)依據(jù)。在現(xiàn)有技術(shù)條件下常見的一種軟件監(jiān)測方法是通過軟件自身會給鎖程序函數(shù)進行插樁替換的方式來統(tǒng)計軟件的鎖程序使用信息。一些軟件軟件監(jiān)測工具如Valgrind Mutextrace等,普遍使用這種軟件插樁的軟件監(jiān)測技術(shù),其過程一般為先替換或增加被檢測目標(biāo)軟件的某段指令(通常為函數(shù)的入口和返回)為檢測程序的指令;再強制執(zhí)行檢測程序,以獲取鎖程序的相關(guān)信息。然而,這種軟件監(jiān)測方式需要修改目標(biāo)程序并強制執(zhí)行監(jiān)測程序,這樣在運行軟件系統(tǒng)的同時增加系統(tǒng)的運行負擔(dān)。對于較為大型的軟件系統(tǒng)來說,軟件系統(tǒng)具有數(shù)量龐大的臨界區(qū)和對應(yīng)管理臨界區(qū)的鎖程序,而利用現(xiàn)有的插樁方式進行軟件分析的話,插樁的數(shù)量也是非常龐大的,這樣致使軟件系統(tǒng)通常會在高負荷的環(huán)境下進行測試和數(shù)據(jù)搜集,帶來較大的系統(tǒng)開銷,并嚴(yán)重干擾應(yīng)用程序的正常運行,追蹤導(dǎo)致難以統(tǒng)計出完整而詳細的鎖程序使用信息。

發(fā)明內(nèi)容
本發(fā)明實施例提供一種軟件監(jiān)測方法、裝置以及系統(tǒng),以解決分析過程中引入過大系統(tǒng)開銷而致使難以統(tǒng)計出完整而詳細的鎖程序使用信息的問題。本發(fā)明實施例提供一種軟件監(jiān)測方法,所述方法在鎖程序被調(diào)用或釋放時記錄鎖程序地址以及使用所述鎖程序的線程標(biāo)識;將所述鎖程序地址以及使用所述鎖程序的線程標(biāo)識進行編碼轉(zhuǎn)化為內(nèi)存地址,并通過所述內(nèi)存地址訪問內(nèi)存;偵聽內(nèi)存總線以識別所述內(nèi)存地址的訪問內(nèi)存信號并獲取所述鎖程序的追蹤信息,所述鎖程序的追蹤信息包括所述內(nèi)存地址以及時間信息;根據(jù)所述追蹤信息獲得所述鎖程序的使用信息,所述使用信息包括所述鎖程序地址、使用所述鎖程序的線程標(biāo)識以及所述線程占用鎖程序的時間。本發(fā)明實施例提供一種軟件監(jiān)測裝置,包括動態(tài)庫模塊、通信模塊、偵聽模塊以及數(shù)據(jù)分析模塊,其中所述動態(tài)庫模塊用于記錄鎖程序地址以及使用所述鎖程序的線程標(biāo)識;所述通信模塊用于將所述鎖程序地址以及使用所述鎖程序的線程標(biāo)識進行編碼轉(zhuǎn)化為內(nèi)存地址并通過所述內(nèi)存地址訪問內(nèi)存;所述偵聽模塊用于偵聽內(nèi)存總線以識別所述內(nèi)存地址的訪問內(nèi)存信號并獲取所述鎖程序的追蹤信息,所述鎖程序的追蹤信息包括所述內(nèi)存地址以及時間信息;所述數(shù)據(jù)分析模塊用于根據(jù)所述追蹤信息獲得所述鎖程序的使用信息,所述使用信息包括所述鎖程序地址、使用所述鎖程序的線程標(biāo)識以及所述線程占用鎖程序的時間。上述軟件監(jiān)測方法、裝置以及系統(tǒng)只有鎖程序地址以及線程標(biāo)識的記錄和編碼轉(zhuǎn)化地址通過軟件部分實現(xiàn),而偵聽、存儲以及分析方面均可以利用旁路硬件來實現(xiàn),例如, 通過在內(nèi)存接口或插槽上插卡來實現(xiàn)對內(nèi)存總線的偵聽、存儲以及分析,而旁路硬件無需對目標(biāo)程序做任何修改,不占用系統(tǒng)的處理資源,也不影響應(yīng)用程序的運行環(huán)境,從而通過這樣軟硬結(jié)合的方式可以在不帶來額外的系統(tǒng)開銷的情況下,實現(xiàn)對應(yīng)系統(tǒng)性能的分析。


圖1所示為本發(fā)明一實施例中軟件監(jiān)測方法的流程示意圖。圖2所示為本發(fā)明一實施例中軟件監(jiān)測方法的一部分流程示意圖。圖3所示為本發(fā)明一實施例中軟件監(jiān)測方法的另一部分流程示意圖。圖4所示為本發(fā)明另一實施例中軟件監(jiān)測裝置的示意圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域技術(shù)人員所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。本發(fā)明一實施例提供一種軟件監(jiān)測方法,主要對系統(tǒng)串行部分的相關(guān)信息進行分析,所述分析方法采用非插樁式分析,不對目標(biāo)程序做任何修改,也不依賴于具體的軟件或硬件平臺,在分析運行過程中不引入額外的開銷,從而可以充分記錄分析所需的信息。如圖1所示,本發(fā)明實施例提供一種軟件監(jiān)測方法,包括步驟101、記錄鎖程序地址以及線程標(biāo)識,所述線程標(biāo)識用于標(biāo)識使用所述鎖程序的線程;步驟102、根據(jù)所述鎖程序地址以及使用所述鎖程序線程標(biāo)識獲得內(nèi)存地址,并通過所述內(nèi)存地址訪問內(nèi)存;步驟103、偵聽內(nèi)存總線以識別所述訪問內(nèi)存的信號并根據(jù)所述信號獲取所述鎖程序的追蹤信息,所述鎖程序的追蹤信息包括所述內(nèi)存地址以及訪問時間信息;步驟104、根據(jù)所述追蹤信息獲得所述鎖程序的使用信息,所述使用信息包括所述鎖程序地址、使用所述鎖程序的線程標(biāo)識以及所述線程占用鎖程序的時間,所述占用鎖程序的時間根據(jù)所述訪問時間信息確定。上述步驟101中,所述記錄鎖程序地址以及線程標(biāo)識是在重載與所述鎖程序相關(guān)的函數(shù)的過程中進行。通過動態(tài)插樁的方式或在程序運行前通過加載自定義的動態(tài)連接庫的方式,將與鎖程序相關(guān)的函數(shù)進行重載,在重載函數(shù)中獲取并記錄鎖程序地址以及線程 t示i只,所: ! 可以為 mutex 白勺 pthread_mutex_init>pthread_mutex_lock>pthread_ mutex_unlock> pthread_mutex_trylock 以及 pthread—mutex—destroy 等函數(shù)。上述步驟102中,由于Cache (高速緩沖存儲器)的作用,多線程程序中對鎖程序的訪問可能不需要訪問內(nèi)存而直接被在Cache中命中,而通過對內(nèi)存總線的偵聽而在內(nèi)存總線上監(jiān)控訪問內(nèi)存操作,沒有辦法捕獲到不訪問內(nèi)存的鎖程序變量,而在本實施例的軟硬件協(xié)同檢測機制中,根據(jù)鎖程序的地址以及使用所述鎖程序的線程標(biāo)識獲得一個內(nèi)存地址,所述獲取的內(nèi)存地址的方式可以是映射或者根據(jù)自定編碼規(guī)則進行編碼轉(zhuǎn)換,而所述內(nèi)存地址被設(shè)置為不可緩存,這樣通過所述內(nèi)存地址的訪問內(nèi)存均都能被總線偵聽模塊捕獲到。當(dāng)鎖程序被調(diào)用或釋放時,便觸發(fā)動態(tài)庫模塊記錄鎖程序的地址以及占用的線程標(biāo)識,再由通信模塊將所述鎖程序地址以及占用鎖程序的線程標(biāo)識轉(zhuǎn)化為內(nèi)存地址,以在所述鎖程序被調(diào)用的時候通過所述內(nèi)存地址進行訪問內(nèi)存,所述內(nèi)存地址為內(nèi)存上的物理地址。其中,將所述鎖程序地址以及使用所述鎖程序的線程標(biāo)識通過編碼轉(zhuǎn)化為內(nèi)存地址也是主要映射表來實現(xiàn)的,其中具體的編碼如下
ReservedThread IDLock AddrLock FlagReserved其中字段表示的含義為Thread ID 線程標(biāo)識在線程映射表中的偏移;Lock Addr 鎖程序地址在鎖程序地址映射表中的偏移;Lock Flag 加鎖程序或解鎖程序的標(biāo)志;Reservedl 保留域,指向預(yù)留物理內(nèi)存區(qū)域的首地址;Reserved2 保留域,內(nèi)存控制器將物理內(nèi)存地址的低3位屏蔽。如圖2所述上述步驟103中,偵聽內(nèi)存總線并獲取所述內(nèi)存總線中訪問地址為所述內(nèi)存地址的訪問信息的步驟進一步包括步驟201、預(yù)留物理地址空間,以將對所述鎖程序地址以及使用所述鎖程序的線程標(biāo)識編碼轉(zhuǎn)化的內(nèi)存地址的訪問內(nèi)存映射為對所述物理地址空間的訪問內(nèi)存;步驟202、偵聽所述內(nèi)存總線中的訪問地址并判斷所述訪問地址是否映射在所述物理地址空間內(nèi);步驟203、根據(jù)判斷結(jié)果,將映射在所述物理地址空間內(nèi)的訪問內(nèi)存地址以及時間信息封裝成追蹤信息;步驟204、傳輸所述追蹤信息。上述步驟201中,由被檢測主機預(yù)留所述物理地址空間,用于作為在偵聽過程中所述內(nèi)存地址的訪問內(nèi)存信號捕獲的映射空間,所述物理地址空間由若干段段物理地址組成,在本實施例中所述物理地址空間為兩段段物理地址。上述步驟202和203中,通過映射表識別出內(nèi)存總線中訪問地址為所述鎖程序地址以及使用所述鎖程序的線程標(biāo)識編碼轉(zhuǎn)化的內(nèi)存地址,也就是對所述編碼轉(zhuǎn)化的內(nèi)存地址的訪問內(nèi)存映射為對所述物理地址空間的訪問內(nèi)存,具體過程是,如果所述訪問內(nèi)存地址通過映射表的映射在所述所述物理地址空間內(nèi),則所述訪問內(nèi)存地址為所述編碼轉(zhuǎn)化的內(nèi)存地址,則捕獲所述訪問內(nèi)存地址并記錄時間信息進行封裝。所述線程的ID以及鎖程序編碼轉(zhuǎn)化的內(nèi)存地址。上述識別所述鎖程序地址以及使用所述鎖程序的線程標(biāo)識編碼轉(zhuǎn)化的內(nèi)存地址的步驟在其它實施例中也可以通過注冊表來實現(xiàn),所述注冊表儲存有所有所述鎖程序地址以及使用所述鎖程序的線程標(biāo)識編碼轉(zhuǎn)化的內(nèi)存地址,通過逐一遍歷比對來識別當(dāng)前訪問內(nèi)存地址是否為由所述鎖程序相關(guān)信息編碼轉(zhuǎn)換的地址。所述映射在所述物理地址空間內(nèi)的訪問內(nèi)存地址為鎖程序地址以及使用所述鎖程序的線程標(biāo)識的編碼結(jié)果,因此所述映射在所述物理地址空間內(nèi)的訪問內(nèi)存地址可以反解碼為鎖程序地址以及線程標(biāo)識。所述追蹤信息還包括序列號(SN)與讀寫信息(RW),所述時間信息為時間戳(TS),所述追蹤信息可采用如下格式
權(quán)利要求
1.一種軟件監(jiān)測方法,其特征在于,所述方法包括記錄鎖程序地址以及線程標(biāo)識,所述線程標(biāo)識用于標(biāo)識使用所述鎖程序的線程; 根據(jù)所述鎖程序地址以及所述線程標(biāo)識獲得內(nèi)存地址,并通過所述內(nèi)存地址訪問內(nèi)存;偵聽內(nèi)存總線以識別所述訪問內(nèi)存的信號并根據(jù)所述信號獲取所述鎖程序的追蹤信息,所述鎖程序的追蹤信息包括所述內(nèi)存地址以及訪問時間信息;根據(jù)所述追蹤信息獲得所述鎖程序的使用信息,所述使用信息包括所述鎖程序地址、 使用所述鎖程序的線程標(biāo)識以及所述線程占用鎖程序的時間,所述占用鎖程序的時間根據(jù)所述訪問時間信息確定。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述偵聽內(nèi)存總線以識別所述內(nèi)存地址的訪問內(nèi)存信號并獲取所述鎖程序的追蹤信息的步驟中,通過映射表識別出內(nèi)存總線中訪問地址為所述鎖程序地址以及使用所述鎖程序的線程標(biāo)識所轉(zhuǎn)化的內(nèi)存地址的訪問內(nèi)存信號。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述偵聽內(nèi)存總線以識別所述內(nèi)存地址的訪問內(nèi)存信號并獲取所述鎖程序的追蹤信息包括預(yù)留物理地址空間,通過所述映射表建立所述鎖程序地址以及使用所述鎖程序的線程標(biāo)識編碼轉(zhuǎn)化的內(nèi)存地址與所述物理地址空間之間的映射關(guān)系;偵聽所述內(nèi)存總線中的訪問地址并判斷所述訪問地址是否映射在所述物理地址空間內(nèi);根據(jù)判斷結(jié)果,將映射在所述物理地址空間內(nèi)的訪問內(nèi)存地址以及時間信息封裝成追 fe^fn 息;傳輸所述追蹤信息。
4.根據(jù)權(quán)利要求3項所述的方法,其特征在于,所述物理地址空間為兩段段物理地址, 所述鎖程序以及使用所述鎖程序的線程標(biāo)識編碼轉(zhuǎn)化的內(nèi)存地址通過映射表映射為所述兩段段物理地址區(qū)間內(nèi)的物理地址。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,在所述根據(jù)所述追蹤信息獲得所述鎖程序的使用信息的步驟之前還包括接收并存儲所述追蹤信息,以供離線分析。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)所述鎖程序地址以及所述線程標(biāo)識獲得內(nèi)存地址包括將所述鎖程序地址以及所述線程標(biāo)識編碼轉(zhuǎn)化或者映射為內(nèi)存地址。
7.根據(jù)權(quán)利要求1至6任一項所述的方法,其特征在于,所述追蹤信息中的時間信息包括調(diào)用和釋放鎖程序的時間戳。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述調(diào)用和釋放鎖程序的時間戳是通過時鐘記錄偵聽到所述鎖程序因被調(diào)用或釋放而被編碼轉(zhuǎn)化為內(nèi)存地址并訪問內(nèi)存的時間。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述追蹤信息還包括 序列號,用于在分析的時候檢測有沒有丟失;讀寫信息,用于標(biāo)識此次訪問內(nèi)存是讀或者寫。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述追蹤信息主要由所述鎖程序以及使用所述鎖程序的線程標(biāo)識編碼轉(zhuǎn)化的內(nèi)存地址、所述時間信息、序列號以及讀寫信息封裝而成。
11.根據(jù)權(quán)利要求1至6任一項所述的方法,其特征在于,所述記錄鎖程序地址以及線程標(biāo)識包括通過所述鎖程序被調(diào)用時重載與鎖程序相關(guān)的函數(shù)中記錄所述鎖程序地址以及使用所述鎖程序的線程標(biāo)識。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述與所述鎖程序相關(guān)的函數(shù)通過動態(tài)插樁的方式或者在程序運行前加載自定義的動態(tài)連接庫的方式進行重載。
13.根據(jù)權(quán)利要求1至6任一項所述的方法,其特征在于,所述根據(jù)所述追蹤信息獲得所述鎖程序的使用信息包括根據(jù)所述追蹤信息獲得所述內(nèi)存地址以及所述鎖程序的時間信息;將所述內(nèi)存地址反解碼為鎖程序地址以及使用所述鎖程序的線程標(biāo)識,獲得所述鎖程序地址、使用所述鎖程序的線程標(biāo)識以及所述線程占用鎖程序的時間信息。
14.一種軟件監(jiān)測裝置,其特征在于,所述裝置包括動態(tài)庫模塊,記錄鎖程序地址以及線程標(biāo)識,所述線程標(biāo)識用于標(biāo)識使用所述鎖程序的線程;通信模塊,根據(jù)所述鎖程序地址以及所述線程標(biāo)識獲得內(nèi)存地址,并通過所述內(nèi)存地址訪問內(nèi)存;偵聽模塊,偵聽內(nèi)存總線以識別所述訪問內(nèi)存的信號并根據(jù)所述信號獲取所述鎖程序的追蹤信息,所述鎖程序的追蹤信息包括所述內(nèi)存地址以及訪問時間信息;數(shù)據(jù)分析模塊,根據(jù)所述追蹤信息獲得所述鎖程序的使用信息,所述使用信息包括所述鎖程序地址、使用所述鎖程序的線程標(biāo)識以及所述線程占用鎖程序的時間,所述占用鎖程序的時間根據(jù)所述訪問時間信息確定。
15.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述偵聽模塊包括一映射表,通過所述映射表識別出內(nèi)存總線中訪問地址為所述鎖程序地址以及使用所述鎖程序的線程標(biāo)識所轉(zhuǎn)化的內(nèi)存地址。
16.根據(jù)權(quán)利要求15所述的裝置,其特征在于,所述偵聽模塊在偵聽內(nèi)存總線以識別所述內(nèi)存地址的訪問內(nèi)存信號并獲取所述鎖程序的追蹤信息的過程中包括先由被監(jiān)測主機預(yù)留物理地址空間,以通過所述映射表將所述鎖程序地址以及使用所述鎖程序的線程標(biāo)識編碼轉(zhuǎn)化的內(nèi)存地址映射到所述物理地址空間內(nèi);再通過偵聽來識別內(nèi)存總線中映射在所述物理地址空間內(nèi)的訪問地址,并將所述訪問地址以及時間信息封裝成追蹤信息;最后向數(shù)據(jù)分析模塊發(fā)送所述追蹤信息。
17.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述物理地址空間為兩段段物理地址, 所述線程的ID以及鎖程序編碼轉(zhuǎn)化的內(nèi)存地址通過映射表映射為所述兩段段物理地址區(qū)間內(nèi)的物理地址。
18.根據(jù)權(quán)利要求14所述的裝置,其特征在于,還包括一數(shù)據(jù)存儲模塊,用于接受并存儲所述偵聽模塊產(chǎn)生的所述追蹤信息。
19.根據(jù)權(quán)利要求14至18任一項所述的裝置,其特征在于,所述追蹤信息中的時間信息包括調(diào)用和釋放鎖程序的時間戳。
20.根據(jù)權(quán)利要求19所述的裝置,其特征在于,所述偵聽模塊還包括一時鐘,以通過時鐘校準(zhǔn)記錄捕獲所述鎖程序因被調(diào)用或釋放時被編碼轉(zhuǎn)化為內(nèi)存地址進行訪問內(nèi)存而產(chǎn)生訪問內(nèi)存信號的時間,從而獲得所述鎖程序被調(diào)用或釋放的時間戳。
21.根據(jù)權(quán)利要求14至18任一項所述的裝置,其特征在于,所述動態(tài)庫模塊通過所述鎖程序被調(diào)用時重載與鎖程序相關(guān)的函數(shù)中記錄所述鎖程序地址以及使用所述鎖程序的線程標(biāo)識。
22.根據(jù)權(quán)利要求20所述的裝置,其特征在于,所述與所述鎖程序相關(guān)的函數(shù)通過動態(tài)插樁的方式或在程序運行前加載自定義的動態(tài)連接庫的方式進行重載。
23.根據(jù)權(quán)利要求14至18任一項所述的裝置,其特征在于,所述數(shù)據(jù)分析模塊根據(jù)所述追蹤信息獲得所述內(nèi)存地址以及所述鎖程序的時間信息,再將所述內(nèi)存地址反解碼為鎖程序地址以及使用所述鎖程序的線程標(biāo)識,從而獲得所述鎖程序地址、使用所述鎖程序的線程標(biāo)識以及所述線程占用鎖程序的時間信息。
24.一種軟件監(jiān)測系統(tǒng),包括一軟件檢測裝置以及軟件執(zhí)行主體,所述軟件執(zhí)行主體用于執(zhí)行一軟件程序,其特征在于,所述軟件檢測裝置用于記錄所述軟件程序的鎖程序地址以及線程標(biāo)識,所述線程標(biāo)識用于標(biāo)識使用所述鎖程序的線程;根據(jù)所述鎖程序地址以及所述線程標(biāo)識獲得內(nèi)存地址,并通過所述內(nèi)存地址訪問內(nèi)存;偵聽內(nèi)存總線以識別所述訪問內(nèi)存的信號并根據(jù)所述信號獲取所述鎖程序的追蹤信息,所述鎖程序的追蹤信息包括所述內(nèi)存地址以及訪問時間信息;根據(jù)所述追蹤信息獲得所述鎖程序的使用信息,所述使用信息包括所述鎖程序地址、使用所述鎖程序的線程標(biāo)識以及所述線程占用鎖程序的時間, 所述占用鎖程序的時間根據(jù)所述訪問時間信息確定。
全文摘要
一種軟件監(jiān)測方法、裝置以及系統(tǒng),在鎖程序被調(diào)用或釋放時記錄鎖程序地址以及線程標(biāo)識,所述線程標(biāo)識用于標(biāo)識使用所述鎖程序的線程;根據(jù)所述鎖程序地址以及所述線程標(biāo)識獲得內(nèi)存地址,并通過所述內(nèi)存地址訪問內(nèi)存;偵聽內(nèi)存總線以識別所述訪問內(nèi)存的信號并根據(jù)所述信號獲取所述鎖程序的追蹤信息,所述鎖程序的追蹤信息包括所述內(nèi)存地址以及訪問時間信息;根據(jù)所述追蹤信息獲得所述鎖程序的使用信息,所述使用信息包括所述鎖程序地址、使用所述鎖程序的線程標(biāo)識以及所述線程占用鎖程序的時間,所述占用鎖程序的時間根據(jù)所述訪問時間信息確定。
文檔編號G06F11/36GK102301343SQ201180001455
公開日2011年12月28日 申請日期2011年6月14日 優(yōu)先權(quán)日2011年6月14日
發(fā)明者余加強, 崔澤漢, 張文力, 王超, 陳明宇, 黃永兵 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1