精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux內核測試和調試

系統 Linux
AuToTest 是一個全自動測試框架,存在的主要目的就是測試 Linux 內核,當然也可以用來測試其他東西,比如測試一塊新硬件是否能穩定工作。AuToTest 是開源軟件,以 GPL 方式授權,運行于 server-client 架構(即 C/S 架構)。

自動測試工具

這里列出一些能滿足不同需求的測試工具供你選擇。本小節只是簡單介紹個大概,并不提供詳細操作指南。

AuToTest

AuToTest 是一個全自動測試框架,存在的主要目的就是測試 Linux 內核,當然也可以用來測試其他東西,比如測試一塊新硬件是否能穩定工作。AuToTest 是開源軟件,以 GPL 方式授權,運行于 server-client 架構(即 C/S 架構)。你可以通過配置 server 端來對運行了 client 端的系統執行初始化、運行與監測工作,也可以自己在目標系統上讓 client 運行起來。另外你可以為這個測試框架添加測試用例,詳情請參考AuToTest 白皮書

Linaro Automated Validation Architecture

LAVA 自動測試框架用于自動安裝于運行測試。舉個例子:你在 LAVA 里面只需運行幾個命令就可以跑 LTP(LCTT:Linux Test Project,中文是 Linux 測試計劃,SGI發起并由IBM負責維護,目的是為開源社區提供測試套件來驗證Linux的可靠性、健壯性和穩定性)。通過 LAVA 命令可以自動為你安裝 LTP 所需要的所有依賴包,下載源碼、編譯編碼、將 LTP 安裝到某個獨立的地方,方便卸載 LTP 時能移除所有二進制文件。安裝好 LTP 后,運行 LAVA 命令時添加 'ltp' 選項就可以運行 LTP 測試任務了,它會將測試結果以文件方式保存下來,文件名包含測試名稱、時間戳。這些測試結果可以留著供以后參考。這是個發現軟件退化(如果軟件退化了的話)的好方法。下面列出 LAVA 配合 LTP 使用的一些命令:

顯示 LAVA 支持的測試列表:

  1. lava-test list-tests

安裝測試套件:

  1. lava-test install ltp

運行測試:

  1. lava-test run ltp

查看結果:

  1. lava-test results show ltp-timestamp.0

卸載測試套件:

  1. lava-test uninstall ltp

內核調試功能

Linux 內核本身包含很多調試功能,比如 kmemcheck 和 kmemleak。

[[118997]]

kmemcheck

kmemcheck 是一個動態檢查工具,可以檢測出一些未被初始化的內存(LCTT:內核態使用這些內存可能會造成系統崩潰)并發出警告。它的功能與 Valgrind 類似,只是 Valgrind 運行在用戶態,而 kmemchecke 運行在內核態。編譯內核時加上 CONFIG_KMEMCHECK 選項打開 kmemcheck 調試功能。你可以閱讀 Documentation/kmemcheck.txt 來學習如何配置使用這個功能,以及如何看懂調試結果。

kmemleak

kmemleak 通過類似于垃圾收集器的功能來檢測內核是否有內存泄漏問題。而 kmemleak 與垃圾收集器的不同之處在于前者不會釋放孤兒目標(LCTT:不會再被使用的、應該被釋放而沒被釋放的內存區域),而是將它們打印到 /sys/kernel/debug/kmemleak 文件中。用戶態的 Valgrind 也有一個類似的功能,使用 --leak-check 選項可以檢測并報錯內存泄漏問題,但并不釋放這個孤兒內存。編譯內核時使用 CONFIG_DEBUG_KMEMLEAK 選項打開 kmemcleak 調試功能。閱讀 Documentation/kmemleak.txt 來學習怎么使用這個工具并讀懂調試結果。

內核調試接口

Linux 內核通過配置選項、調試用的 API、接口和框架來支持動態或靜態的調試。我們現在就好好學習學習這些牛逼的功能,從靜態編譯選項開始講。

調試配置選項:靜態編譯

大部分 Linux 內核以及內核模塊都包含調試選項,你只要在編譯內核或內核模塊的時候添加這個靜態調試選項,程序運行時后就會產生調試信息,并記錄在 dmesg 緩存中。

調試的 API

調試 API 的一個很好的例子是 DMA-debug,用來調試驅動是否錯誤使用了 DMA 提供的 API。它會跟蹤每個設備的映射關系,檢測程序有沒有試圖為一些根本不存在的映射執行“取消映射”操作,檢測代碼建立 DMA 映射后可能產生的“映射丟失”的錯誤。內核配置選項 CONFIG_HAVE_DMA_APT_DEBUG 和 CONFIG_DMA_API_DEBUG 可以為內核提供這個功能。其中,CONFIG_DMA_API_DEBUG 選項啟用后,內核調用 DMA 的 API 的同時也會調用 Debug-dma 接口。舉例來說,當一個驅動調用 dma_map_page() 函數來映射一個 DMA 緩存時,dma_map_page() 會調用debug_dma_map_page() 函數來跟蹤這個緩存,直到驅動調用 dma_unmap_page() 來取消映射。詳細內容請參考使用 DMA 調試 API 檢測潛在的數據污染和內存泄漏問題

#p#

動態調試

動態調試功能就是你可以決定在程序運行過程中是否要 pr_debug(), dev_dbg(), print_hex_dump_debug(), print_hex_dump_bytes() 這些函數正常運行起來。什么意思?當程序運行過程中出現錯誤時,你可以指定程序打印有針對性的、詳細的調試信息。這功能牛逼極了,我們不再需要為了添加調試代碼定位一個問題,而重新編譯安裝內核。你可以指定 CONDIF_DYNAMIC_DEBUG 選項打開動態調試功能,然后通過 /sys/kernel/debug/dynamic_debug/control 接口指定要打印哪些調試日志。下面分別列出代碼級別和模塊級別打印日志的操作方法:

讓 kernel/power/suspend.c 源碼第340行的 pr_debug() 函數打印日志:

  1. echo 'file suspend.c line 340 +p' > /sys/kernel/debug/dynamic_debug/control

讓內核模塊在加載過程中打開動態調試功能:

使用 modprobe 命令加在模塊時加上 dyndbg='plmft' 選項。

讓內核模塊的動態調試功能在重啟后依然有效:

編輯 /etc/modprobe.d/modname.conf 文件(沒有這個文件就創建一個),添加 dyndbg='plmft' 選項。然而對于哪些通過 initramfs 加載的驅動來說,這個配置基本無效(LCTT:免費奉送點比較高級的知識哈。系統啟動時,需要先讓 initramfs 掛載一個虛擬的文件系統,然后再掛載啟動盤上的真實文件系統。這個虛擬文件系統里面的文件是 initramfs 自己提供的,也就是說你在真實的文件系統下面配置了 /etc/modprobe.d/modname.conf 這個文件,initramfs 是壓根不去理會的。站在內核驅動的角度看:如果內核驅動在 initramfs 過程中被加載到內核,這個驅動讀取到的 /etc/modprobe.d/modname.conf 是 initramfs 提供的,而不是你編輯的那個。所以會有上述“寫了配置文件后重啟依然無效”的結論)。對于這種刁民,呃,刁驅動,我們需要修改 grub 配置文件,在 kernel 那一行添加 module.dyndbg='plmft' 參數,這樣你的驅動就可以開機啟動動態調試功能了。

想打印更詳細的調試信息,可以使用 dynamic_debug.verbose=1 選項。參考 Documentation/dynamic-debug-howto.txt 文件獲取更多信息。

設置追蹤點

到目前為止,我們介紹了多種動態和靜態調試方法。靜態調試選項和靜態調試鉤子函數(比如 DMA Debug API)需要的編譯過程打開或關閉,導致了一個難過的事實:需要重新編譯安裝內核。而動態編譯功能省去了“重新編譯”這件麻煩事,但是也有不足的地方,就是調試代碼引入了條件變量,用于判斷是否打印調試信息。這種方法可以讓你在程序運行時決定是否打印日志,但需要執行額外的判斷過程。“追蹤點”代碼只會在程序運行過程中使用“追蹤點”功能才會被觸發。也就是說,“追蹤點”代碼與上述說的兩種方法都不一樣。當用不到它時,它不會運行(LCTT:動態調試的話,代碼每次都需要查看下變量,然后判斷是否需要打印日志;而“追蹤點”貌似利用某種觸發機制,不需要每次都去查看變量)。當你需要用到它時,程序的代碼會把“追蹤點”代碼包含進去。它不會添加任何條件變量來增加系統的運行負擔。

詳細信息請參考布置追蹤代碼的小技巧

“追蹤點”的原理

追蹤點使用“跳躍標簽”,這是一種使用分支跳轉的編碼修正(code modification)技術。

當關閉追蹤點的時候,其偽代碼看起來時這樣的:

  1. [ code1 ]
  2. nop
  3. back:
  4. [ code2 ]
  5. return;
  6. tracepoint:
  7. [ tracepoint code ]
  8. jmp back;

當打開追蹤點的時候,其偽代碼看起來時這樣的:(注意追蹤點代碼出現的位置)

  1. [ code1 ]
  2. jmp tracepoint
  3. back:
  4. [ code2 ]
  5. return;
  6. tracepoint:
  7. [ tracepoint code ]
  8. jmp back;

(LCTT:咳咳,解釋解釋上面兩段偽代碼吧,能看懂的大神請忽略這段注釋。不使用追蹤點時,代碼運行過程是:code1->code2->return結束;使用追蹤點時,代碼運行過程是:code1->跳到tracepoint code執行調試代碼->跳回code2->return結束。兩段代碼的唯一區別就是第二行,前者為 nop(不做任何操作),后者為 jmp tracepoint (跳到調試代碼)。)

Linux 電源管理子系統的測試

使用靜態調試、動態調試和追蹤調試技術,我們來跑一下磁盤的電源管理測試。當系統被掛起時,內核會為磁盤創建一個休眠鏡像,使磁盤進入休眠模式,當系統重新被喚醒時,內核又利用這個休眠鏡像重新喚醒磁盤。

設置掛起設備與喚醒設備需要的時間:

  1. echo 1 > /sys/power/pm_print_times

以 reboot 模式掛起磁盤:

  1. echo reboot > /sys/power/disk
  2. echo disk > /sys/power/state

以 shutdown 模式掛起磁盤 —— 與 reboot 模式一樣,只是重新喚醒磁盤的話還需要電源提供。

  1. echo shutdown > /sys/power/disk
  2. echo disk > /sys/power/state

以 platform 模式掛起磁盤 —— 能測試更多內容,比如 BIOS 掛起和喚醒,會涉及到 ACPI 功能。我們推薦你使用這種方式,把 BIOS 也拉下水陪你玩掛起和喚醒游戲。

  1. echo platform > /sys/power/disk
  2. echo disk > /sys/power/state

#p#

Linux 內核補丁測試

你試過自己寫內核補丁嗎?本節介紹在把你的補丁包提交到 Linux 郵箱列表之前,需要做哪些操作。另外我們還會介紹如何把它發送出去。

寫好代碼后,編譯它。把 make 過程產生的輸出保存到文檔中,查看新代碼有沒有警告信息。找到所有的警告信息,處理掉。當你的代碼編譯過程沒有任何不正常的輸出,安裝這個內核,然后啟動測試。如果啟動正常,查看 dmesg 里面有沒于錯誤,與老內核生成的 dmesg 日志做個比較。運行一些壓力測試,請參考我們以前講過的測試內容。如果這個補丁用于修復某個 bug,請確保真的已經修復了。如果真的修復了,請確保能通過系統測試。找出打你補丁的模塊下面的回歸測試工具,運行一下。如果補丁涉及到其他架構,你需要交叉編譯然后測試一下。請通過下面的目錄查找測試工具:

如果你對你的補丁測試結果感到很滿意,你就可以提交補丁了。請確保提交 commit 的信息要描述得非常清楚。要讓內核維護者和其他開發者看懂補丁所修改的內容,這一點非常重要。生成補丁后,執行 scripts/checkpatch.pl 腳本,找到 checkpatch 是產生的錯誤或警告(如果有的話),修復它們。重新生成補丁,直到補丁通過這個腳本的測試。重新測試這個補丁。將本補丁用于其他的內核源碼上,保證不會有沖突產生。

現在你做好提交補丁的準備了。先運行 scriptst/get_maintainer.pl 來確認你應該把補丁發給哪個內核維護者。注意不要以附件形式發送補丁,而是以純文本形式粘貼在郵件里面。確保你的郵件客戶端可以發送純文本信息,你可以試試給自己發送一份補丁郵件來測試你的郵件客戶端的功能。收到自己的郵件后,運行 checkpatch 命令并給自己的內核源碼打上你的補丁。如果這兩部都能通過,你就可以給 Linux 郵箱列表發送補丁了。使用 git send-email 命令是提交補丁最安全的方式,可以避免你的郵箱的兼容性問題。你的 .gitconfig 文件里面需要配置好有效的 smtp 服務器,詳細操作參考 git 的幫助文檔。

更多提交補丁的規矩,請參考下面的資料:

  • linux_git/Documentation/applying-patches.txt
  • linux_git/Documentation/SubmitChecklist
  • linux_git/Documentation/SubmittingDrivers
  • linux_git/Documentation/SubmittingPatches
  • linuxgit/Documentation/stablekernel_rules.txt
  • linuxgit/Documentation/stableapi_nonsense.txt

下面是一些內核測試教程的資料:

內核測試套件和項目

除我們討論過的測試資源之外,這里還有很多測試項目值得介紹,包括開源的和廠家自己提供的。這些項目每一個都是針對特定領域的,比如嵌入式或者企業自己使用。我們簡單過一下。

Linux 測試項目(LTP)測試套件是一系列工具的集合,用于測試內核的可靠性、健壯性和穩定性。你可以為這個項目添加自己的測試代碼,并且 LTP 項目歡迎你貢獻自己的代碼。runltp 腳本默認情況下會測試下面的子系統:

  • 文件系統壓力測試
  • 磁盤 IO 測試
  • 內存管理壓力測試
  • IPC(進程間通信)測試
  • 調度器測試
  • 命令的功能性驗證測試
  • 系統調用功能驗證測試

LTP-DDT 是一個基于 LTP 的測試應用(LCTT:就是 LTP 的閹割版么),專注于測試嵌入式設備驅動。

Linux Driver Verification 這個項目的目標是提高 Linux 設備驅動的質量,它為設備驅動驗證開發了集成環境平臺,并且利用與時俱進的研究來增強驗證工具的質量。

一致性測試

如果你有將某個 Unix 平臺下的應用一直到另一個平臺的經驗,你就能理解 Linux Standard Base (LSB) 和 LSB 一致性測試套件的重要性了。LSB 是 Linux Foundation 工作組創建的用于降低支持不同 Linux 平臺所需要的開銷,方法就是通過降低不同 Linux 發行版之間的差別,保證應用在不同發行版之間的可移植性。前事不忘后事之師,Unix 世界的分歧在 Linux 世界一定要避免。這就是為什么你可以把一個 rpm 包轉化成 deb 包后還能安裝并正常運行的秘密。

靜態分析工具

靜態分析之所以會被稱為“靜態分析”,是因為這些工具只分析代碼,并不執行它們。分析 Linux 內核代碼的靜態分析工具有很多,Sparse 是 Linus Torvalds 寫的專門用于檢查內核靜態類型的工具。它是一個語義檢查器,會為 C 語言的語義建立語義檢析樹,執行惰性類型評估。內核編譯系統支持 sparse,并且為編譯內核的命令提供開啟 sparse 的選項。

為內核所有需要重新編譯的 C 文件執行 sparse 語義檢查:

  1. make C=1 allmodconfig

為內核所有 C 文件(即使不需要重新編譯)執行 sparse 語義檢查:

  1. make C=2 allmodconfig

Sparse 的資源:

Smatch 分析程序代碼的邏輯錯誤。它可以檢測到諸如“為一個沒鎖上的 spinlock 執行解鎖”的邏輯錯誤。內核源碼支持 smatch:

在 Linux 內核中運行 smatch:

  1. make CHECK="~/path/to/smatch/smatch -p=kernel" C=1 bzImage modules | tee warns.txt

請參考下面的資料來獲取和編譯 smatch。需要注意的是 smatch 是個正在發展的項目,架構會不斷變化。

那么我們該怎么處理 Sparse 和 Smatch 所發現的語義和邏輯上的錯誤呢?一些錯誤可以被分離為日常問題或模塊問題,可以輕易被解決。但是有些語義錯誤涉及到全局,因為剪切粘貼了一些代碼。在一些環境中,當一些接口函數被廢棄不再使用,或者僅僅做了寫微小的修改,你就需要大規模更新源碼。這時候你需要 Coccinelle 來幫忙。,Coccinelle 使用 SmPL 語言(語義包語言)來為 C 代碼提供匹配和轉換代碼的功能。Coccinelle 的從一開始就作為 Linux 的附屬產品持續發展的。

舉個例子:foo(int) 函數突然變成 foo(int, char *) 函數,多出了一個輸入參數(可以把第二個參數置為 null)。所有調用 foo() 函數的代碼都需要更新了,這可能是個悲摧的體力活。但是使用 Coccinelle 的話,這項工作瞬間變得輕松,腳本會幫你找到調用 foo(parameter1) 的代碼,然后替換成 foo(parameter1, NULL)。做完這些后,所有調用這個函數的代碼都可以運行一遍,驗證下第二個參數為 NULL 是否能正常工作。關于 Coccinelle 的更多信息,以及在不同項目中(當然,也包括 Linux 內核這個項目)的使用方法,請參考項目主頁:Cocinelle

參考文獻

本文涵蓋了很多方面,這里列出一些參考文檔供讀者做進一步研究。

原文鏈接:http://linux.cn/article-3682-1.html   http://linux.cn/article-3684-1.html

責任編輯:牛小雨 來源: linux中國
相關推薦

2010-01-22 11:01:04

linux內核模塊

2018-12-27 10:56:04

Linux內核現狀

2017-01-12 19:15:03

Linux內核調試自構proc

2021-07-11 06:45:18

Linux內核靜態

2022-02-08 15:15:26

OpenHarmonlinux鴻蒙

2023-04-10 09:44:22

內核鼠標調試鴻蒙

2019-10-16 10:50:13

Linux內核測試

2013-09-02 16:08:50

調試Windows

2023-05-11 08:33:17

測試和調試Python

2025-10-27 01:55:00

2016-08-23 09:17:08

LinuxD狀態TASK_RUNNIN

2025-11-17 00:00:55

2013-12-16 14:33:17

Linux內核Linux Kerne

2012-07-25 13:21:17

ibmdw

2023-02-28 09:47:42

2011-01-14 15:30:44

2021-02-20 06:08:07

LinuxWindows內核

2009-02-09 09:51:00

網絡故障測試調試

2010-03-05 10:31:24

Ubuntu PHP

2010-03-02 09:17:32

Linux local
點贊
收藏

51CTO技術棧公眾號

亚洲丝袜在线视频| 日本在线www| 国产乱码精品一区二三赶尸艳谈| 精品国产一区二区三区噜噜噜 | 在线观看麻豆| 欧美日韩一区二区三区四区在线观看 | 91成人国产| 色综合色狠狠天天综合色| 成人黄色av播放免费| 爱爱免费小视频| 亚洲国产日韩在线观看| 999国产精品视频| 亚洲精品精品亚洲| 国产日韩欧美在线看| 天天色天天干天天色| 婷婷成人激情| 美女视频免费一区| 在线观看91久久久久久| wwwxxx黄色片| 蜜芽tv福利在线视频| 国产精品视频久久一区| 日韩经典中文字幕| 在线看无码的免费网站| 成人黄色片在线观看| 欧美人妖在线| 欧洲亚洲精品在线| 深夜福利成人| 在线免费看91| 91久久国产| 欧美一区二区三区不卡| 精品国产一区二区三| 国产成人精品无码免费看夜聊软件| 在线观看麻豆| 国产亚洲欧洲997久久综合| 欧美中文字幕在线观看| 国产人妻精品久久久久野外| 在线天堂新版最新版在线8| 91视频免费看| 国产成人高潮免费观看精品| 69xxx免费| 99精品女人在线观看免费视频| 久久香蕉国产线看观看99| 奇米影视亚洲狠狠色| 精品亚洲永久免费| 欧美一区二区三区久久| 色88888久久久久久影院按摩 | 看黄色一级大片| www.豆豆成人网.com| 亚洲国产精品久久艾草纯爱| 精品欧美一区二区三区久久久 | 国产精品网址在线| 羞羞在线观看视频| 国产精品va视频| 亚洲一区欧美一区| 欧美精品欧美精品| 一区二区三区精彩视频| 欧美日韩一二三四| 亚洲欧美中文在线视频| 九色porny自拍视频| 日本一区二区三区中文字幕| 亚洲一区在线电影| 日本aa在线观看| 免费看男男www网站入口在线| 国产一区欧美日韩| 性日韩欧美在线视频| 精品一区二区三区蜜桃在线| 久久影院一区二区三区| 欧美日韩亚洲91| 一区二区高清视频| 午夜视频免费在线| 精品一区二区在线看| 97香蕉久久超级碰碰高清版| 色婷婷av国产精品| 日韩欧美黄色| 制服丝袜日韩国产| a级黄色片网站| 水中色av综合| 国产成人精品综合在线观看| 国产不卡av在线| 日韩乱码一区二区三区| 久久99久久99小草精品免视看| 欧美亚洲另类在线| 国产肥白大熟妇bbbb视频| 精品一区二区三区在线| 久久久91精品国产| 成人在线短视频| youjizz欧美| 亚洲天堂男人天堂| 亚洲第九十七页| 日韩精品一区二区三区中文| 欧美体内she精视频| www国产黄色| h片在线观看下载| 1024成人网| 中文字幕精品—区二区日日骚| 免费国产在线视频| 久久久久亚洲综合| 丁香婷婷久久久综合精品国产| 国产主播在线播放| 99精品网站| 欧美劲爆第一页| 欧美成人精品欧美一| 99久久影视| 97精品视频在线| 国产日韩欧美中文字幕| 精品综合久久久久久8888| 国产女人精品视频| 欧美一区二区三区激情| 丰满放荡岳乱妇91ww| 999国产视频| 性一交一乱一乱一视频| 久久久久国产一区二区三区四区 | 窝窝社区一区二区| 久久九九全国免费精品观看| 精品国产乱子伦| 国产精品久久久久久久久久10秀| 久久久精品久久| 在线观看黄网站| 粉嫩在线一区二区三区视频| 欧美爱爱视频网站| 日韩成人亚洲| 欧美日韩一区三区| 红桃视频 国产| 24小时成人在线视频| 精品亚洲精品福利线在观看| 五级黄高潮片90分钟视频| 午夜电影亚洲| 性欧美视频videos6一9| 国产成年妇视频| 青青草国产成人99久久| 国产美女被下药99| 中文字幕在线播放不卡| 美女久久久精品| 国产成人福利网站| 亚洲aⅴ在线观看| 亚洲一区在线看| 欧美日韩一区二区区| 九色成人搞黄网站| 欧美日韩国产首页| 成年人性生活视频| 我不卡神马影院| 国产日韩欧美日韩| 特黄视频在线观看| 国产婷婷色一区二区三区在线| 亚洲在线色站| 久久青草视频| 日韩欧美国产一区在线观看| 国产福利在线免费| 6080成人| 在线观看国产精品91| 亚洲中文字幕无码爆乳av| 久久综合九色综合欧美就去吻 | 国产精品尤物福利片在线观看| 亚洲GV成人无码久久精品| 久久精品系列| 国产精品免费久久久久影院| 一级片免费在线播放| 99精品久久久久久| 亚洲精品一区二区三区蜜桃久| 欧美一区二区少妇| 国产精品久久久久久久久免费桃花 | 福利在线小视频| 日韩电影毛片| 5566中文字幕一区二区电影| 欧美xxxooo| 国产久卡久卡久卡久卡视频精品| 91久久久亚洲精品| 香蕉视频免费在线看| 精品久久久久久中文字幕一区奶水 | 99精品在线观看| 日韩免费观看视频| aaa级黄色片| 一区二区三区加勒比av| 亚洲中文字幕无码一区二区三区| av免费在线免费| 色老汉av一区二区三区| 国产精品欧美性爱| 日韩欧美午夜| 欧美一区二区三区免费观看| 免费国产在线视频| 69p69国产精品| 日操夜操天天操| 国产精品99久久久久久久vr| 日韩精品在线视频免费观看| 豆花视频一区| 国语自产精品视频在线看一大j8| 可以在线观看av的网站| 久久久美女毛片| 想看黄色一级片| 99精品国产在热久久婷婷| 538国产精品一区二区免费视频| av免费观看在线| 欧美日韩一区二区在线| 一级性生活免费视频| 视频一区二区三区中文字幕| 精品欧美一区二区久久久伦| 99只有精品| 国产亚洲视频在线| www.av88| 亚洲国产aⅴ成人精品无吗| 亚洲AV成人精品| 久久亚洲综合| 国产玉足脚交久久欧美| 日本成人小视频| 国产精品96久久久久久| 影音先锋在线播放| 精品欧美乱码久久久久久1区2区| 亚洲色图14p| 狠狠色狠狠色综合| 综合视频免费看| 亚洲精品大片| 日本午夜人人精品| 国产理论电影在线| 亚洲丁香婷深爱综合| 欧美一区二区三区粗大| 国产91高潮流白浆在线麻豆 | 91露出在线| 亚洲国产福利在线| 99er热精品视频| 欧美性极品xxxx做受| 日韩精品人妻中文字幕有码| 日韩视频不卡| 日本一道在线观看| 欧美大黑bbbbbbbbb在线| 欧美在线一二三区| 精品久久福利| 日本一本a高清免费不卡| 欧美xxx黑人xxx水蜜桃| 亚洲第一中文字幕| 国产黄色av片| 制服丝袜成人动漫| 一级特黄aaa| 欧美日韩一区二区在线观看| 337p粉嫩色噜噜噜大肥臀| 精品国产31久久久久久| 国产在线视频卡一卡二| 尤物视频一区二区| 国产在线一卡二卡| 99精品视频一区二区三区| 亚洲成人av免费看| 中日韩免视频上线全都免费| 国产成人精品一区二区三区| 很黄的网站在线观看| 精品国产区一区| 青青视频在线免费观看| 福利二区91精品bt7086| 国产污污视频在线观看| 中文字幕亚洲视频| 国产调教在线观看| av亚洲产国偷v产偷v自拍| 妓院一钑片免看黄大片| 97在线精品| 欧美日韩视频免费在线观看| 亚洲澳门在线| 欧美极品少妇无套实战| 亚洲午夜激情在线| 先锋影音网一区| 日韩在线观看| 国产精品一区二区a| 1024国产在线| 色天天综合狠狠色| 日韩性xxxx| 精品性高朝久久久久久久| 精品推荐蜜桃传媒| 欧美tk丨vk视频| 女人18毛片水真多18精品| 亚洲精品久久久久久久久| 中文字幕有码无码人妻av蜜桃| 亚洲第一久久影院| 99热在线观看免费精品| 欧美午夜精品久久久久久超碰| 91porny在线| 色成年激情久久综合| 中文字幕有码无码人妻av蜜桃| 日本二三区不卡| 亚洲最大成人av| 精品国产1区二区| 美女毛片在线看| 久久久精品在线| 国模精品视频| 国产日韩精品入口| 成人另类视频| 视频一区视频二区视频| 伊人久久大香线蕉av不卡| 久久国产精品一区二区三区| 日韩三级av高清片| 久久精品人成| 国产国产精品| 一区二区三区四区视频在线| 欧美日韩91| 国产精品拍拍拍| 国产成人午夜高潮毛片| 亚洲区自拍偷拍| 国产性色一区二区| 91视频免费观看网站| 亚洲三级小视频| 免费成人美女女在线观看| 国产精品乱子久久久久| 精品国产一二区| 国产亚洲欧洲一区高清在线观看| 谁有免费的黄色网址| 一区二区三区四区视频精品免费 | 一区二区日韩av| 中文在线字幕av| 日韩av在线天堂网| 超碰个人在线| 久久视频精品在线| 999国产在线视频| 91黑丝在线观看| 狠狠操一区二区三区| 97国产精品视频人人做人人爱| 色是在线视频| 51国产成人精品午夜福中文下载| 一区二区三区在线免费看| 色一情一乱一伦一区二区三区| 欧美高清视频在线观看mv| 成人av一级片| 国产99精品视频| 欧美丰满熟妇bbbbbb| 天天综合日日夜夜精品| 秋霞av一区二区三区| 欧美丰满美乳xxx高潮www| 91国产精品一区| 亚洲欧美成人在线| jizz日韩| 九色精品免费永久在线| 91视频欧美| 91蜜桃网站免费观看| 偷拍欧美精品| 日本中文字幕精品—区二区| 26uuu色噜噜精品一区| 五月天综合在线| 亚洲成av人影院在线观看| 最新超碰在线| 亚洲最大福利视频网| 少妇一区二区三区| 亚洲人成无码网站久久99热国产| 日韩综合一区| 宅男噜噜噜66国产免费观看| 久久综合精品国产一区二区三区| 激情五月深爱五月| 亚洲三级在线看| 国产永久免费视频| 日韩在线播放一区| av伦理在线| 国产精品香蕉视屏| 亚洲大胆视频| 国产色视频在线播放| 中文欧美字幕免费| 国产在线视频你懂的| 精品国产一区二区三区av性色| 免费国产在线视频| 国产999精品久久久| 久久99国产精品视频| 欧美牲交a欧美牲交aⅴ免费真| 国产老肥熟一区二区三区| 国产av无码专区亚洲av毛网站| 91久久精品一区二区二区| 大胆av不用播放器在线播放| 国产精品美女久久久免费| 97精品97| 日韩女优在线视频| 国产偷v国产偷v亚洲高清| 无码aⅴ精品一区二区三区| 中文字幕国产日韩| 黄色在线网站噜噜噜| 久久伦理网站| 日本中文在线一区| 日本精品在线免费观看| 粉嫩av一区二区三区免费野| 亚洲一级黄色大片| 亚洲美女黄色片| 精品久久在线| 99国产精品白浆在线观看免费| 麻豆精品一区二区| 久久免费看少妇高潮v片特黄| 欧美优质美女网站| 成人高清免费在线| 精品久久一区二区三区蜜桃| 久久久久久久波多野高潮日日| 在线xxxxx| 亚洲三级视频在线观看| 人人妻人人澡人人爽人人欧美一区 | 欧美激情无毛| 亚洲AV无码国产精品| 欧美日韩久久久久久| 欧洲精品二区| 日韩三级电影免费观看| 亚洲人www| 性鲍视频在线观看| 亚洲色图在线播放| 欧美一区二区黄片| 国产精品永久免费| 久久高清免费| 国产成人精品无码片区在线| 欧美日韩国产片| 欧美gv在线观看| 欧美日韩一级在线| 国产亚洲1区2区3区| 中文字幕+乱码+中文字幕明步|