国产剧情视频在线观看-国产剧情麻豆女教师在线观看-国产剧情精品在线观看-国产剧情精品-国产剧情91-国产玖玖在线观看

Rss & SiteMap

曙海教育集團論壇 http://www.bjzhda.cn

曙海教育集團論壇
共1 條記錄, 每頁顯示 10 條, 頁簽: [1]
[瀏覽完整版]

標題:查找嵌入式C語言程序/軟件中的缺陷的多種技術討論

1樓
wangxinxin 發表于:2010-12-15 12:32:28
 

基于模式的靜態代碼分析、運行時內存監測、單元測試以及數據流分析等軟件驗證技術是查找嵌入式C語言程序/軟件缺陷行之有效的方法。上述技術中的每一種都能查找出某一類特定的錯誤。即便如此,如果用戶僅采用上述技術中的一種或者幾種來進行驗證,這樣的驗證方法很有可能會漏過對程序中的一些缺陷的檢查。解決此類問題的一種安全和有效的策略就是同時使用上述軟件驗證中的所有互補技術。這樣就能建立起一個牢固的框架來幫助用戶檢查出可能會避開某種特定技術的缺陷。與此同時,用戶也自然地建立起一個能檢測出關鍵并且難以查找的功能性錯誤的環境。

本文將詳盡闡述基于模式的靜態代碼分析、運行時內存錯誤檢測、單元測試以及數據流分析等自動化技術共同使用時是如何查找出嵌入式C語言程序/軟件中的缺陷的。本文中將以Parasoft C++test為例來演示上述各項技術。C++teST是一個經廣泛的最佳實踐證明能提升軟件開發團隊開發效率以及軟件質量的自動化集成解決方案。

當讀者在閱讀本文以及任何時候思考查找到的缺陷時,關注文中的截圖是很重要的。自動化檢測例如內存崩潰和死鎖的缺陷,毫無疑問對任何開發團隊都是一項必不可少的任務。盡管如此,最致命的缺陷卻是功能性錯誤,這往往是難以自動發現的。在本文的結論部分我們將簡要地討論一下查找這些缺陷的技術。

情景簡介

為了給出一個具體的示例,我們將就一個我們最近遇到的案例來介紹以及演示我們所推薦的缺陷查找策略:一個運行在ARM 板上的簡單傳感器應用程序。

假設我們已經創建了該應用系統,但是當我們將程序上載到系統目標板上并試圖運行該程序時,我們沒有在LCD屏上看到所預期的輸出。

我們尚不明確系統不能正常工作的原因,因此我們設法對系統進行調試,但是在目標板上進行調試是一件耗時而且煩人的事。因為我們不得不手動分析調試器的結果并試圖人工判斷出問題的真正原因。或者我們使用一些被證實能自動定位出錯誤的工具或技術來幫助我們減輕負擔。

從這一點而言,我們要么期待使用調試器來調試程序能夠帶來好運,要么我們嘗試使用一種自動化的測試策略來查找代碼中所存在的錯誤。如果自動化技術仍然沒有幫助我們查找到錯誤,那么我們不得不回到使用調試器作為最后的辦法。

基于模式的靜態代碼分析

這里,我們假設僅在絕對必要的情況下才使用調試器進行調試,因此我們從運行基于模式的靜態代碼分析開始。它將查找到如下圖所示的問題:

這是違反了 MISRA 的一個規則,此違規說明該處的賦值運算符存在一些可疑情況。的確,編程者此處的本意是使用比較運算符而不是賦值運算符。因此我們將此處檢測到的沖突修改掉,并重新運行程序。

我們發現有了一些改善:一些輸出被顯示在了LCD屏上了。但是,由于一次訪問違規,程序崩潰掉了。因此我們需要再次地做出選擇。我們是應該使用調試器還是繼續使用自動化的錯誤檢測技術。由于經驗告訴我們自動化錯誤檢測技術能非常高效地檢查出我們當前程序所遇到的內存崩潰這類問題,因此我們決定使用運行時內存監測來查找問題。

整個程序的運行時內存監測

為了進行運行時內存監測,我們使用 C++test 來插裝應用程序。這樣的插裝是輕量級的,所以經過插裝后的程序適合在目標板上運行。當我們把程序上載到目標板上并運行經過插裝的程序后,我們將結果下載到PC上,如下的錯誤將被報告出來:

該結果指出在第48行代碼處產生了一次讀取數組越界的錯誤。顯然,msgIndex變量的值肯定超過了數組的范圍。如果我們隨著堆棧追蹤上一級的原因,我們將發現此處的打印信息所指示的值的確超出了數組的范圍(因為在調用printMessage()函數前我們給出了一個錯誤的條件)。我們可以刪除掉這個不必要的條件(value <= 20)以修改這個錯誤。

void handleSensorValue(int value)

{

initialize();

int index = -1;

if (value >= 0 && value <= 10) {

index = VALUE_LOW;

} else if ((value > 10) && (value <= 20)) {

index = VALUE_HIGH;

}

printMessage(index, value);

}

然后我們重新運行程序,將不會再報告任何內存錯誤。當我們把程序上載到目標板上時,它似乎如我們預期那么在工作了。盡管如此,我們仍然有一些擔心。

我們僅查找到我們所執行的代碼路徑中的一個內存寫溢出實例,我們憑什么能夠斷定我們尚未執行到的代碼就不會有內存寫溢出錯誤了呢?如果我們檢查覆蓋率分析,我們就會發現reportSensorFailure()這個函數從未被執行到。我們有必要對這個函數進行測試,但是具體如何進行呢?建立一個調用該函數的單元測試用例就是一個不錯的辦法。

在單元測試中使用運行時內存監測:我們使用C++test的測試用例向導來創建一個測試用例的框架,并向其中添加一些測試代碼。然后運行該測試用例——以檢查上面提到的未經測試的函數,同時打開運行時內存監測功能。使用C++teST,全過程大約只需要數秒鐘。

結果標明該函數已經被覆蓋到了,但同時也查找到了新的錯誤:

我們的測試用例查找到了更多的內存相關錯誤。很顯然,當失敗處理函數被調用時,我們的內存初始化存在問題(空指針)。通過更進一步的分析,我們發現在reportSensorValue()函數中存在函數調用順序錯誤。finalize()函數先于printMessage()函數被調用,但是finalize()函數中釋放了printMessage()函數需要使用的內存。

void finalize()

{

if (messages) {

free(messages[0]);

free(messages[1]);

free(messages[2]);

}

free(messages);

}

將函數調用順序進行修改后,我們重新運行程序。

這樣我們就解決了上面報告中的第一個錯誤。現在我們再來分析報告中的第二個錯誤:即打印信息中的AccessViolatiONException。產生這個錯誤的原因是相應的消息列表未經初始化。為了解決該問題,我們在打印該信息前調用一次initialize()函數來對其進行初始化。經修改后的函數如下所示:

void reportSensorFailure()

{

initialize();

printMessage(ERROR, 0);

finalize();

}

當我們再次運行該測試用例時,僅有一個任務被報告出來:未經驗證的單元測試用例(an unvalidated unit test case),這其實并不算一條錯誤。我們只需對輸出進行一下驗證,以將該測試用例轉換為回歸測試。通過創建合適的斷言,C++test會自動為我們完成這些步驟。

接下來我們再次運行整個程序。覆蓋率分析告訴我們幾乎整個程序都已經被覆蓋到了,并且沒有發現任何內存錯誤。

這樣就結束了嗎?其實不然。雖然我們運行了整個程序并為未覆蓋到的函數創建了單元測試用例,但還是有一些路徑是沒有被覆蓋到的。我們仍然可以繼續創建單元測試用例,但是若指望通過這樣的方法來覆蓋程序中的所有路徑將耗費相當長的時間。或者我們使用另外的方法,使用數據流分析來對這些路徑進行模擬。

數據流分析

我們使用C++test的BugDetective來進行數據流分析,BugDetective能模擬系統中的不同路徑并檢查這些路徑中是否存在潛在的問題。進行數據流分析后,我們得到如下結果:

仔細分析報告的結果,我們發現程序中存在一條未被覆蓋到的潛在路徑可能會造成在finalize()函數中出現兩次free的操作。在程序中,reportSensorValue()函數調用了finalize()函數,然后finalize()函數調用了free()。同時,finalize()函數還會被mainLoop()函數調用。我們可以修改finalize()函數以使其更加智能化,從而修復這個問題,修改后的代碼如下:

void finalize()

{

if (messages) {

free(messages[0]);

free(messages[1]);

free(messages[2]);

free(messages);

messages = 0;

}

}

現在我們再次運行數據流分析,得到的結果將只有兩個問題:

這里我們可能使用了-1作為索引來訪問了數組。這是由于整型變量index被設置的初始值為-1,并且存在一條可能通過if語句的路徑在未將該整型變量正確的進行初始化之前便調用了printMessage()函數。運行時分析未檢查到這樣的一條路徑,并且該路徑很有可能在真實世界中永遠不可能被執行到。這就是靜態數據流分析相對于運真實運行時內存監測最主要的不足:數據流分析能檢查出潛在的路徑,這些路徑可能包含在程序實際執行過程中不會執行到或不存在的路徑。盡管如此,為了做到有備無患,我們刪除了上述的不必要的條件(value>=0)以修改這個潛在的錯誤。

void handleSensorValue(int value)

{

initialize();

int index = -1;

if (value <= 10) {

index = VALUE_LOW;

} else {

index = VALUE_HIGH;

}

printMessage(index, value);

}

相同地,我們也對最后一個報告的錯誤進行相應的處理。現在我們再次運行數據流分析,將不會再有錯誤被報告出來。

為了確保程序運行一切正常,我們重新運行整個分析過程。首先,我們開啟運行時內存監測并運行應用程序,一切表現正常。然后我們開啟內存監測并運行單元測試,一個任務被報告出來:

我們的單元測試檢測到reportSensorFailure()函數的行為已經發生了改變。這是由于我們已經對finalize()函數進行了修改——為了糾正之前報告的一個問題所做的修改。此處報告的任務是為了讓我們注意此修改,并提示我們應該對測試用例進行相應的審查,并且確定是否應該對代碼或者測試用例進行相應的修改,以表示這種新的行為實際上是我們所預期的行為。在檢查完代碼之后,我們發現后者(修改)是正確的并且應該更新斷言的正確條件。

/* CPPtest_TEST_CASE_BEGIN test_reportSensorFailure */

/* CPPTEST_TEST_CASE_CONTEXT void reportSensorFailure(void) */

void sensor_tests_test_reportSensorFailure()

{

/* Pre-condition initialization */

/* Initializing global variable messages */

{

messages  = 0 ;

}

{

/* Tested function call */

reportSensorFailure();

/* Post-condition check */

CPPTEST_ASSERT(0 == ( messages ));

}

}

/* CPPTEST_TEST_CASE_END test_reportSensorFailure */

作為最終的確認,我們需要獨立地運行整個程序——在IDE中關閉掉運行時內存監測來對程序進行構建。結果顯示一切如我們所預期一樣運行。

總結

作為全文的結尾,讓我們一起對上述各個步驟進行一個鳥瞰式的總結。

首先,我們開發的程序并未如我么所預期那樣運行,我們不得不在兩種解決方法中選擇一種來查找程序中的錯誤:通過運行調試器或者使用自動錯誤檢測技術。

如果我們使用調試器運行代碼來查找錯誤,我們將會看到一些很奇怪的現象:程序中的一些變量總是被賦予了相同的值。基于這種現象我們不得不通過排除法來查找問題的原因——即在應該使用比較運算符的地方我們錯誤地使用了賦值運算符。而靜態代碼分析則能為我們自動地檢查出該邏輯錯誤。運行時內存分析是不可能檢查出這種錯誤的,因為這種錯誤與內存無關。數據流分析也很有可能找不到這類錯誤因為數據流分析僅僅是通過這些路徑而不會驗證這些條件的正確性。

當我們解決了這個問題后,程序可以運行了,但是仍然還有內存相關的問題。內存相關的問題是很難被調試器發現的;當用戶使用調試器調試程序時,用戶并不知道內存的實際大小。但是自動錯誤檢查工具能夠做到這點。因此,為了查找這些內存問題,我們將整個程序進行插裝,并使用運行時內存分析工具來運行程序。這樣我們就能知道到底是那一片內存發生了寫溢出錯誤。

盡管如此,在審查覆蓋率分析結果的時候,我們注意到在目標板上測試的時候,并不是全部代碼都被覆蓋到了。通過自動化的工具得到這樣的覆蓋率信息是簡單的,因為工具會自動地

跟蹤覆蓋率,但是,如果我們是通過調試器,就不得不判斷哪一部分程序經過了驗證。而這通常只能依靠我們人工記錄的方式來實現。

當工具提醒我們一些代碼未被覆蓋到時,我們決定改變單元測試來額外地增加我們測試執行的覆蓋率。這就揭示了程序中另外一些問題。在目標系統的正常測試中,覆蓋所有函數也許是不可能完成的任務,因為其中一些函數可能是硬件的失敗處理函數或僅在某些小概率的特定情況下才會被調用的函數。而對這些函數的測試對于一些注重安全性的程序而言又是至關重要的。試想在飛機上用來處理速度傳感器問題的程序中存在著代碼錯誤:我們會有系統崩潰的危險,而不是導致某個設備為非工作狀態。因此,通過創建單元測試用例來覆蓋這類型的執行路徑往往是對其進行有效測試的唯一方法。

接下來,我們修復了工具檢查到的所有問題,同時通過驗證相應的結果創建了一個回歸測試用例(作為報告的任務之一引導我們完成)。然后我們運行數據流分析來覆蓋在目標系統上即便使用單元測試也未執行到的路徑。在此之前,我們幾乎已經達到了100%的代碼行覆蓋率,但是我們的路徑覆蓋率卻未達到這個水平。BugDetective幫我們發現了這些方面的一些潛在問題。這些問題可能并沒有實際發生或者有可能永遠不會發生。也許在實際運行時,這些問題僅僅會在當其條件滿足的情況下才會出現,并且在現實生活中,這些條件可能永遠不可能滿足。盡管如此,我們不能保證隨著代碼的升級,應用程序不會執行到這些路徑。

安全起見,我們仍然修改了所報告的問題以排除任何可能影響它的實際應用執行的風險。在修改代碼的同時,我們同時也引入了回歸測試,當我們再次運行單元測試時立即被檢測到。在所有的自動化錯誤檢測方法中,回歸測試是唯一能夠幫助我們檢查到代碼是否發生了功能性的改變的方法,并且能驗證出對代碼進行的修改是否引入了功能性的錯誤以及不可預知的副作用。最后,我們修改了回歸測試套件,并重新測試代碼,發現一切運行正常。

正如讀者所見,我們使用的一切測試方法——基于模式的靜態代碼分析、內存分析、單元測試、數據流分析以及回歸測試——并不是相互競爭的關系,恰好相反,它們是一種互補的關系。將上述工具結合使用,它們就是一套具有強大作用的工具集,并為嵌入式C語言程序/軟件提供一個無可比擬的自動化錯誤檢測解決方案。

總而言之,通過自動地查找很多關于內存和其它編碼的缺陷,我們成功地讓程序運行起來了。盡管如此,值得注意的是,最危險的缺陷卻是實際的功能性錯誤:例如程序并未如所指定的要求運行。而不幸的是,這些錯誤往往是非常難以被發現的。

查找這類缺陷的最好的一個方式就是通過同行代碼審查來實現。即另指派至少一人來檢查代碼并且審查代碼與需求內容的一致性,這樣用戶就能對實際程序是否會如預期那樣運行有一個很好的*估。

另外一個十分有用的策略是圍繞代碼創建一個回歸測試套件,這能幫助用戶快捷地驗證代碼與規范的一致性。在本文所描述的示例情景中,單元測試被用來強制執行應用程序級的運行時內存監測所未覆蓋到的代碼:它能覆蓋到當前程序的功能性,在此之后,我們對代碼做了一些修改,它能提醒我們代碼出現的相應的功能性問題。事實上,這種單元測試用例應該被更早地創建起來:理想情況下,當用戶在實現程序的功能時就應該被創建起來。這樣,用戶就能得到更高的覆蓋率并同時構建起一個更強壯的“安全網”來捕捉關鍵的功能性改變。

Parasoft的C++test能幫助用戶完成這兩個任務:從自動化到管理同行代碼審查流程,以及幫助團隊創建,持續地運行并維護一個高效的回歸測試套件。

關于Parasoft C++test

Parasoft C++test是一個經廣泛的最佳實踐證明能提升軟件開發團隊開發效率以及軟件質量的自動化集成解決方案。C++test能進行諸如編碼策略增強、靜態代碼分析、運行時內存監測、自動同行代碼審查以及單元和組件測試,從而為軟件開發團隊提供一種更加實用的方法來確保其C以及C++程序能如所預期那樣工作。C++test可以用于在通用開發IDE下的桌面平臺中,以及在回歸測試時通過命令行以批處理模式的方式運行。同時,C++test還集成了Parasoft的報告系統,該系統能提供具有細分能力的基于Web 的儀表板,這使得開發團隊根據C++test的測試結果和其他的一些關鍵進程指標來更加方便地跟蹤項目的狀態和趨勢。

通過在宿主機上進行大量的測試以及在目標系統中進行的平滑的驗證,C++test能夠幫助軟件開發團隊減少花在嵌入式系統開發中的時間、精力以及成本。隨著代碼在宿主機上的構建,C++test的自動化框架使得開發者能在目標硬件系統尚未準備好的情況下就開始測試以提升代碼質量。這大大地縮短了花在目標系統上測試的時間。早期在宿主機上構建的測試套件可以被重用來在仿真器或真實的目標板上驗證程序的功能性。

共1 條記錄, 每頁顯示 10 條, 頁簽: [1]

Copyright © 2000 - 2009 曙海教育集團
Powered By 曙海教育集團 Version 2.2
Processed in .01563 s, 2 queries.
国产剧情视频在线观看-国产剧情麻豆女教师在线观看-国产剧情精品在线观看-国产剧情精品-国产剧情91-国产玖玖在线观看
<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>
    成人免费网站在线观看| 国产精品毛片va一区二区三区| 日本精品视频网站| 国产精品美女免费看| 99c视频在线| 欧美日本国产精品| 午夜精品久久久久久久久久久久久| 一本色道久久99精品综合| 青青草久久网络| 日本欧美精品在线| 成人女人免费毛片| 欧美肥老妇视频| 国产精品一区二区久久久| 欧美福利精品| 欧美在线视频一区| 久久99精品久久久久久水蜜桃| 欧美俄罗斯乱妇| 91网站免费看| 自拍偷拍一区二区三区| 国产主播精品在线| 久久精品日产第一区二区三区精品版| 国产综合在线看| 国产精品久久久久久久免费大片| 亚洲国产精品一区在线观看不卡| 日本不卡高字幕在线2019| 国产综合 伊人色| 91av视频导航| 免费精品视频一区二区三区| 91av网站在线播放| 精品欧美一区二区三区久久久| 欧美肥老妇视频| 岛国视频一区| 国产91成人在在线播放| 欧美精品一区在线发布| 亚洲**2019国产| 91久久偷偷做嫩草影院| 高清欧美性猛交| 91久久久一线二线三线品牌| 欧美一区二区色| 欧美高清视频一区二区三区在线观看| 日韩av电影国产| 午夜免费电影一区在线观看| 成人免费看片网址| 国产欧美日韩中文| 欧美国产亚洲精品久久久8v| 国产日韩欧美一区二区三区四区| 国产v综合v亚洲欧美久久| 日韩经典在线视频| 亚洲精品日产aⅴ| 欧洲亚洲免费视频| 婷婷四月色综合| 91av一区二区三区| 国产精欧美一区二区三区| 亚洲激情一区二区| 欧美高清性xxxxhd| 久久精品国产精品青草色艺| 亚洲自拍av在线| 国产91精品在线播放| 亚洲欧美精品在线观看| 国内不卡一区二区三区| 欧美亚洲在线观看| 欧美国产日韩xxxxx| 亚洲欧洲日韩综合二区| 91精品国产自产在线老师啪 | 国产日韩一区欧美| 国产精品91在线观看| 色综合色综合网色综合| 亚洲.欧美.日本.国产综合在线 | 九色91视频| 国产日韩欧美在线| 欧美一级bbbbb性bbbb喷潮片| 欧美尤物一区| 九九九九精品| 欧美韩国日本精品一区二区三区| 好看的日韩精品视频在线| 99视频在线播放| 91免费人成网站在线观看18| 国产一区二区在线播放| 国产免费一区二区三区在线观看| 国产精品第七影院| 欧美在线视频一区| 91精品国产91久久久| 久久久久久av| 久久久久久久av| 亚洲精品永久www嫩草| 久久精品99久久| 91在线无精精品一区二区| 97人人爽人人喊人人模波多| 在线免费观看成人| 久久久久久有精品国产| 久久久久久亚洲精品| 91国产精品电影| 久久久久久久久久久网站| 欧美激情国产高清| 国产做受高潮69| 亚洲视频精品一区| 一区二区三区在线视频看| 偷拍视频一区二区| 欧美肥老妇视频| 久久久久久久97| 51色欧美片视频在线观看| 秋霞av国产精品一区| 69av在线播放| 国产精品久久久久福利| 亚洲影视九九影院在线观看| 91久热免费在线视频| 成人信息集中地欧美| 亚洲wwwav| 精品一区久久| 日韩国产精品一区二区| 亚洲欧洲精品在线观看| 欧美激情视频给我| 天堂资源在线亚洲资源| 欧美在线观看网址综合| 国产精品久久久久77777| 国产精品扒开腿爽爽爽视频| 91久久精品国产| 激情一区二区三区| 在线综合视频网站| 久久久久久香蕉网| 国产精品福利网| 91视频最新| 精品国产一区二区三| 美女精品国产| 色播五月综合| 午夜欧美大片免费观看| 91地址最新发布| 国产精品久久久久久久久影视| 欧美综合第一页| 国产精品稀缺呦系列在线| 91在线播放国产| 另类视频在线观看+1080p| 成人网在线视频| 欧洲成人一区二区| 日本一区二区三区视频在线观看| 欧美激情日韩图片| 国产精品无av码在线观看| 成人免费视频观看视频| 亚洲国产精品久久久久婷婷老年| 国外成人在线直播| 91wwwcom在线观看| 国产精品久久久久免费a∨大胸| 国产精品av网站| 成人激情视频在线| 国产色综合一区二区三区| 夜夜爽99久久国产综合精品女不卡 | 国产日韩在线看| 91精品天堂| 一区二区不卡在线| 成人激情视频在线观看| 欧美一区二区综合| 97在线精品视频| 国产精品视频免费在线| 欧美日韩成人一区二区三区 | 欧美在线视频一区| 国产精品初高中精品久久| 日本一区免费在线观看| 国产成人一区二区| 91精品综合视频| 日韩中文字幕一区| 国产日韩欧美视频| 任我爽在线视频精品一| 欧美在线不卡区| 久久国产精品-国产精品| 4438全国成人免费| 国产精品大陆在线观看| 欧美三级网色| 成人xxxxx| 欧美激情xxxx| 精品一区久久久| 国产精品第3页| 精品视频导航| 日韩电影大全在线观看| 在线不卡日本| 91在线免费看网站| 久久久久久999| 久久综合久久综合这里只有精品| 国产精品久久久亚洲| 免费亚洲一区二区| 人体精品一二三区| av噜噜色噜噜久久| 国产成人激情视频| 色综合电影网| 91手机在线视频| 久久久久久久成人| 久久资源av| 91视频国产一区| 91精品国产99久久久久久| 97久久精品午夜一区二区| 一区二区欧美日韩| 成人综合电影| 久久久久久久久久av| 精品一区日韩成人| 国产精品最新在线观看| 一区二区三区偷拍| 99www免费人成精品| 热99久久精品| 欧美激情第1页| 久久综合九色综合久99| 92裸体在线视频网站| 樱花www成人免费视频| 亚洲一区二区三区777| 69久久夜色精品国产7777 | 亚洲午夜精品一区二区 | 午夜欧美大片免费观看| 欧美日韩国产综合视频在线| 国产在线播放91| 久久人91精品久久久久久不卡| 含羞草久久爱69一区| 国产精品久久久久99| 午夜精品久久久久久久99热浪潮 | 国产精品视频区| 欧美最大成人综合网| 电影午夜精品一区二区三区| 国产精品免费视频xxxx| 欧美高清激情视频| 欧美最猛性xxxxx(亚洲精品)| 亚洲一区精彩视频| 国产精品久久国产三级国电话系列| 亚洲不卡1区| 99久久99久久| 国产成人自拍视频在线观看| 日本午夜精品一区二区| 91久久久一线二线三线品牌| 国产精品久久久久99| 亚洲3p在线观看| 欧美日韩精品综合| 亚洲一区二区免费在线| 成人性生交大片免费观看嘿嘿视频| 国产成人avxxxxx在线看| 欧美激情亚洲激情| 国产综合色一区二区三区| 成人羞羞视频免费| 91免费版网站入口| 国产在线精品播放| 国产精品久久久久久久久影视| 欧美做爰性生交视频| 亚洲一卡二卡| 一本一道久久a久久精品综合 | 日韩av电影院| 欧美丰满老妇厨房牲生活| 亚洲欧洲免费无码| 艳色歌舞团一区二区三区| 亚洲一区二区在线看| 亚洲国产一区二区在线| 动漫3d精品一区二区三区| 亚洲一区二区久久久久久久| 91嫩草国产在线观看| 99精品在线直播| 国产尤物99| 欧美1o一11sex性hdhd| 欧美精品七区| 久久精品久久精品国产大片| 国产精品视频免费观看| 精品国产_亚洲人成在线| 99久久久精品免费观看国产| 粉嫩高清一区二区三区精品视频| 95av在线视频| 精品国产福利| 视频在线99| 欧美国产视频日韩| 欧美激情喷水视频| 日韩免费在线播放| 国产主播欧美精品| 999精品视频一区二区三区| 国产精品 日韩| 国产女人18毛片水18精品| 51色欧美片视频在线观看| 欧美一区第一页| 国产精品国产三级国产专播精品人 | 欧美专区日韩视频| 日本成人激情视频| 日本成人精品在线| 国产中文字幕日韩| 国产一区精品视频| 日本在线观看一区二区| 亚洲成人一区二区三区| 亚洲视频sss| 国产suv精品一区二区三区88区| 国产精品丝袜白浆摸在线 | 91香蕉嫩草影院入口| 97视频中文字幕| 欧美日韩国产综合视频在线| 中文字幕日韩精品一区二区| 青草成人免费视频| 日本最新高清不卡中文字幕| 国产成人精品综合久久久| 91在线免费网站| 国产亚洲一区在线播放 | 国模gogo一区二区大胆私拍 | 欧美极品在线视频| 国产精品第二页| 国产成人亚洲欧美| 亚洲欧洲免费无码| 欧美一级高清免费播放| 91精品久久久久久久久久| 国产精品免费一区二区| 精品一卡二卡三卡四卡日本乱码 | 久久久久免费视频| 91精品国产99| av一区二区三区在线观看| 偷拍视频一区二区| 欧美在线播放视频| www 成人av com| 秋霞久久久久久一区二区| 亚洲一区二区在线看| 日本高清不卡在线| 亚洲资源在线看| 精品一区2区三区| 五月天综合网| 91精品国产免费久久久久久| 久久久免费高清电视剧观看| 成人有码在线播放| 久久久久久久久一区| 91chinesevideo永久地址| 国产欧美 在线欧美| 欧洲久久久久久| 国产精品88a∨| 韩日午夜在线资源一区二区| 欧美高清视频免费观看| 91九色国产视频| 亚洲欧洲一区二区在线观看| 国产精品中文久久久久久久| 日韩av不卡播放| 国产精品高潮呻吟久久av无限 | 久久99精品久久久久久青青日本| 亚洲乱码一区二区三区| 国产精品成久久久久三级| 久久精品欧美| 国产精品久久久久av| 蜜桃91精品入口| 日本一区二区不卡| 美女精品国产| 国产欧美va欧美va香蕉在线| 国产综合18久久久久久| 韩国精品久久久999| av资源站久久亚洲| 亚洲一区尤物| 91九色蝌蚪国产| 久久久亚洲影院你懂的| 国产成人精品福利一区二区三区 | 丁香婷婷久久久综合精品国产| 日本午夜精品一区二区三区| 成人激情春色网| 国产精品一区二区不卡视频| 久久久久久久网站| 国产综合第一页| 国产精品久久综合av爱欲tv| 成人av免费看| 日本久久久久久久| 欧洲久久久久久| 成人av在线亚洲| 久久免费精品视频| 极品尤物一区二区三区| 国产色综合天天综合网| 久草精品电影| 成人免费淫片aa视频免费| 正在播放久久| 久久99九九| 国产精品久在线观看| 日本不卡高清视频一区| 99一区二区三区| 国语自产精品视频在免费| 亚洲www在线观看| 97免费在线视频| 欧美精品七区| 国产传媒一区二区三区| 97婷婷大伊香蕉精品视频| 国产亚洲二区| 91视频最新| 欧美在线视频一二三| 综合一区中文字幕| 欧美日韩视频在线一区二区观看视频 | 亚洲国产午夜伦理片大全在线观看网站 | 亚洲高清在线播放| 高清国产在线一区| 国产精品视频一区国模私拍| 亚洲一区二区三区免费观看| 九九九九精品| 96pao国产成视频永久免费| 欧美中文字幕在线视频| 久久噜噜噜精品国产亚洲综合| 欧美少妇一区| 韩国成人av| 亚洲综合色激情五月| 国产成+人+综合+亚洲欧洲| 久久久久久久av| 日韩精品福利视频| 美日韩精品免费| yellow视频在线观看一区二区| 日本中文字幕不卡免费| 色综合久久88| 亚洲看片网站| 亚洲精品中文字幕在线| 色综合久久久久久久久五月| 91香蕉视频在线下载| 97在线日本国产| 欧美激情亚洲精品| 欧美激情一区二区三区成人 | 国产精品a久久久久久| 午夜一区二区三区| 奇米视频888战线精品播放| 国产精品手机在线| 91精品久久久久久| 欧美亚洲成人免费| 欧美激情极品视频| 欧美丰满片xxx777| 久久久人成影片一区二区三区观看| 日本一区视频在线播放| 欧美成人蜜桃| 欧洲一区二区在线观看| 日韩伦理一区二区三区av在线| 欧美日韩一区二区三| 欧美精品一区二区三区在线四季| 国产精自产拍久久久久久蜜| 欧美综合在线观看| 97视频在线观看视频免费视频| 日韩免费三级| 亚洲国产一区二区三区在线| 日本高清不卡三区| 色姑娘综合网| 伊人婷婷久久| 亚洲免费不卡| 亚州欧美日韩中文视频| 日韩美女视频在线观看| 日韩av日韩在线观看| 日韩免费在线播放| 成人在线播放av| 国产精品久久久久久久久久直播| 亚洲bt天天射| 精品无人乱码一区二区三区的优势 | 欧美在线视频一区二区三区| 日本成人看片网址| 一区二区免费在线视频| 欧美肥老妇视频| 伊人狠狠色丁香综合尤物| 欧美国产视频日韩| 欧洲午夜精品久久久| 国产成人精品a视频一区www| 国产成人精品久久久| 日本久久亚洲电影| 91久久国产精品| 精品免费二区三区三区高中清不卡 | 日韩国产精品一区二区| 欧美日韩电影一区二区三区| 午夜精品一区二区三区在线观看| 久久久久久亚洲精品不卡| 国产精品1234| 99视频在线免费观看| 久久免费视频1| 亚洲成人一区二区三区| 69久久夜色精品国产69| 国产精品久久久久久久久免费看| 国产精品mp4| 国产高清自拍一区| 一本一道久久久a久久久精品91 | 成人动漫视频在线观看完整版 | 欧美在线视频a| 国产美女精彩久久| 国产精品久久久久77777| 97超碰在线播放| 欧洲亚洲一区二区三区四区五区| 97视频在线看| av蓝导航精品导航| http;//www.99re视频| 亚洲国产欧洲综合997久久| 日韩免费av片在线观看| 成人国产亚洲精品a区天堂华泰| 91沈先生播放一区二区| 欧美日韩在线高清| 97热精品视频官网| 3d动漫精品啪啪一区二区三区免费| 亚洲在线第一页| 亚洲一区二区三区免费观看| 国产精品欧美日韩久久| 裸模一区二区三区免费| 97人人做人人爱| 5566av亚洲| 深田咏美在线x99av| 日韩av电影手机在线| 国产色综合天天综合网| 欧美一区2区三区4区公司二百| 久久久之久亚州精品露出| 99re视频在线| 日韩欧美一区二区三区四区 | 国产区日韩欧美| 欧美精品久久久久久久免费观看 | 99久久精品免费看国产一区二区三区| 久久视频在线观看中文字幕| 久久久久国色av免费观看性色 | 91精品国产综合久久久久久丝袜| 鲁丝片一区二区三区| 欧美亚洲另类视频| 91在线观看免费网站| 久久青青草原| 97在线视频一区| 国产欧美日韩综合精品二区| 一级做a爰片久久| 91精品视频在线免费观看| 亚洲一区在线免费| 国产精品黄色av| 色一情一乱一伦一区二区三区丨| 国产日韩中文字幕在线| 中国成人在线视频| 全球成人中文在线| 欧美不卡1区2区3区| 国产精品久久999| 久久国产精品久久| 2020久久国产精品| 久久大片网站| 国产日韩av在线| 中国成人在线视频| 国产一区国产精品| 亚州国产精品久久久| 国产精品久久久久久久小唯西川 | 一区二区视频国产| 九九99久久| 成人网欧美在线视频| 国产精品乱子乱xxxx| 国产在线精品一区| 国产91色在线|免| 国产成人精品在线播放| 欧美激情第一页xxx| 国产精品久久久久久久久免费看 | 日韩精品资源| 成人午夜高潮视频| 欧美激情乱人伦| 国产精品久久7| 国产成人精品av在线| 一级特黄录像免费播放全99| 国产精品theporn88| 综合网五月天| 亚洲qvod图片区电影| 欧美亚州一区二区三区| 麻豆91蜜桃| 91在线网站视频| 日本高清久久天堂| 午夜免费电影一区在线观看| 国产精品一区二区免费看| 国产精品美乳一区二区免费 | 午夜精品一区二区三区视频免费看| 福利精品视频| 国产成人精品在线播放| 欧美黑人极品猛少妇色xxxxx | 午夜精品一区二区三区av| 欧美午夜欧美| av一区二区三区免费| 97国产精品视频人人做人人爱| 欧美资源一区| 国产亚洲福利社区| 91人成网站www| 4p变态网欧美系列| 色综合久久悠悠| 日韩高清av电影| 久久久久久九九九九| 国产精品一区二区性色av| 欧美黄色三级网站| 日韩免费一区二区三区| 欧美激情www| 亚洲综合在线小说| 国产精欧美一区二区三区| 97国产在线视频| 久久人91精品久久久久久不卡| 国产免费一区| 99精品99久久久久久宅男| 国产欧美欧洲在线观看| 日韩av免费网站| 欧洲精品在线视频| 57pao国产成人免费| 日韩性感在线| 欧美一区国产一区| 欧美一区免费视频| 欧美日韩综合精品| 欧美性bbwbbwbbwhd| 久久福利电影| 精品一区二区不卡| 国产精品一区二区欧美黑人喷潮水| ts人妖另类在线| 亚洲va久久久噜噜噜| 国产欧美精品久久久| 欧美亚洲伦理www| 午夜精品一区二区三区在线视频 | 国产精品一区二区三区不卡 | 国产成人精彩在线视频九色| 精品视频在线观看| 欧美亚洲在线视频| 久久av一区二区| 海角国产乱辈乱精品视频| 国产免费一区| 国产91aaa| 欧美壮男野外gaytube| 亚洲91精品在线观看| 国产麻豆日韩| 99在线观看视频| 91久久精品国产91久久性色tv | 亚洲欧美日韩国产yyy| 欧美黄色小视频| 性欧美大战久久久久久久免费观看| 国产精品视频一| 国产成人精品免费视频|