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

在Linux上用strace來理解系統(tǒng)調(diào)用

系統(tǒng) Linux
使用 strace 跟蹤用戶進程和 Linux 內(nèi)核之間的交互。系統(tǒng)調(diào)用是程序從內(nèi)核請求服務的一種編程方式,而 strace 是一個功能強大的工具,可讓你跟蹤用戶進程與 Linux 內(nèi)核之間的交互。

[[281613]]

使用 strace 跟蹤用戶進程和 Linux 內(nèi)核之間的交互。

系統(tǒng)調(diào)用system call是程序從內(nèi)核請求服務的一種編程方式,而 strace 是一個功能強大的工具,可讓你跟蹤用戶進程與 Linux 內(nèi)核之間的交互。

要了解操作系統(tǒng)的工作原理,首先需要了解系統(tǒng)調(diào)用的工作原理。操作系統(tǒng)的主要功能之一是為用戶程序提供抽象機制。

操作系統(tǒng)可以大致分為兩種模式:

  • 內(nèi)核模式:操作系統(tǒng)內(nèi)核使用的一種強大的特權(quán)模式
  • 用戶模式:大多數(shù)用戶應用程序運行的地方    用戶大多使用命令行實用程序和圖形用戶界面(GUI)來執(zhí)行日常任務。系統(tǒng)調(diào)用在后臺靜默運行,與內(nèi)核交互以完成工作。

系統(tǒng)調(diào)用與函數(shù)調(diào)用非常相似,這意味著它們都接受并處理參數(shù)然后返回值。唯一的區(qū)別是系統(tǒng)調(diào)用進入內(nèi)核,而函數(shù)調(diào)用不進入。從用戶空間切換到內(nèi)核空間是使用特殊的 trap 機制完成的。

通過使用系統(tǒng)庫(在 Linux 系統(tǒng)上又稱為 glibc),大部分系統(tǒng)調(diào)用對用戶隱藏了。盡管系統(tǒng)調(diào)用本質(zhì)上是通用的,但是發(fā)出系統(tǒng)調(diào)用的機制在很大程度上取決于機器(架構(gòu))。

本文通過使用一些常規(guī)命令并使用 strace 分析每個命令進行的系統(tǒng)調(diào)用來探索一些實際示例。這些示例使用 Red Hat Enterprise Linux,但是這些命令運行在其他 Linux 發(fā)行版上應該也是相同的:

  1. [root@sandbox ~]# cat /etc/redhat-release
  2. Red Hat Enterprise Linux Server release 7.7 (Maipo)
  3. [root@sandbox ~]#
  4. [root@sandbox ~]# uname -r
  5. 3.10.0-1062.el7.x86_64
  6. [root@sandbox ~]#

首先,確保在系統(tǒng)上安裝了必需的工具。你可以使用下面的 rpm 命令來驗證是否安裝了 strace。如果安裝了,則可以使用 -V 選項檢查 strace 實用程序的版本號:

  1. [root@sandbox ~]# rpm -qa | grep -i strace
  2. strace-4.12-9.el7.x86_64
  3. [root@sandbox ~]#
  4. [root@sandbox ~]# strace -V
  5. strace -- version 4.12
  6. [root@sandbox ~]#

如果沒有安裝,運行命令安裝:

  1. yum install strace

出于本示例的目的,在 /tmp 中創(chuàng)建一個測試目錄,并使用 touch 命令創(chuàng)建兩個文件:

  1. [root@sandbox ~]# cd /tmp/
  2. [root@sandbox tmp]#
  3. [root@sandbox tmp]# mkdir testdir
  4. [root@sandbox tmp]#
  5. [root@sandbox tmp]# touch testdir/file1
  6. [root@sandbox tmp]# touch testdir/file2
  7. [root@sandbox tmp]#

(我使用 /tmp 目錄是因為每個人都可以訪問它,但是你可以根據(jù)需要選擇另一個目錄。)

testdir 目錄下使用 ls 命令驗證該文件已經(jīng)創(chuàng)建:

  1. [root@sandbox tmp]# ls testdir/
  2. file1  file2
  3. [root@sandbox tmp]#

你可能每天都在使用 ls 命令,而沒有意識到系統(tǒng)調(diào)用在其下面發(fā)揮的作用。抽象地來說,該命令的工作方式如下:

命令行工具 -> 從系統(tǒng)庫(glibc)調(diào)用函數(shù) -> 調(diào)用系統(tǒng)調(diào)用

ls 命令內(nèi)部從 Linux 上的系統(tǒng)庫(即 glibc)調(diào)用函數(shù)。這些庫去調(diào)用完成大部分工作的系統(tǒng)調(diào)用。

如果你想知道從 glibc 庫中調(diào)用了哪些函數(shù),請使用 ltrace 命令,然后跟上常規(guī)的 ls testdir/命令:

  1. ltrace ls testdir/

如果沒有安裝 ltrace,鍵入如下命令安裝:

  1. yum install ltrace

大量的輸出會被堆到屏幕上;不必擔心,只需繼續(xù)就行。ltrace 命令輸出中與該示例有關的一些重要庫函數(shù)包括:

  1. opendir("testdir/") = { 3 }
  2. readdir({ 3 }) = { 101879119, "." }
  3. readdir({ 3 }) = { 134, ".." }
  4. readdir({ 3 }) = { 101879120, "file1" }
  5. strlen("file1") = 5
  6. memcpy(0x1665be0, "file1\0", 6) = 0x1665be0
  7. readdir({ 3 }) = { 101879122, "file2" }
  8. strlen("file2") = 5
  9. memcpy(0x166dcb0, "file2\0", 6) = 0x166dcb0
  10. readdir({ 3 }) = nil
  11. closedir({ 3 })                    

通過查看上面的輸出,你或許可以了解正在發(fā)生的事情。opendir 庫函數(shù)打開一個名為 testdir 的目錄,然后調(diào)用 readdir 函數(shù),該函數(shù)讀取目錄的內(nèi)容。最后,有一個對 closedir 函數(shù)的調(diào)用,該函數(shù)將關閉先前打開的目錄。現(xiàn)在請先忽略其他 strlenmemcpy 功能。

你可以看到正在調(diào)用哪些庫函數(shù),但是本文將重點介紹由系統(tǒng)庫函數(shù)調(diào)用的系統(tǒng)調(diào)用。

與上述類似,要了解調(diào)用了哪些系統(tǒng)調(diào)用,只需將 strace 放在 ls testdir 命令之前,如下所示。 再次,一堆亂碼丟到了你的屏幕上,你可以按照以下步驟進行操作:

  1. [root@sandbox tmp]# strace ls testdir/
  2. execve("/usr/bin/ls", ["ls", "testdir/"], [/* 40 vars */]) = 0
  3. brk(NULL) = 0x1f12000
  4. <<< truncated strace output >>>
  5. write(1, "file1 file2\n", 13file1 file2
  6. ) = 13
  7. close(1) = 0
  8. munmap(0x7fd002c8d000, 4096) = 0
  9. close(2) = 0
  10. exit_group(0) = ?
  11. +++ exited with 0 +++
  12. [root@sandbox tmp]#

運行 strace 命令后屏幕上的輸出就是運行 ls 命令的系統(tǒng)調(diào)用。每個系統(tǒng)調(diào)用都為操作系統(tǒng)提供了特定的用途,可以將它們大致分為以下幾個部分:

  • 進程管理系統(tǒng)調(diào)用
  • 文件管理系統(tǒng)調(diào)用
  • 目錄和文件系統(tǒng)管理系統(tǒng)調(diào)用
  • 其他系統(tǒng)調(diào)用

分析顯示到屏幕上的信息的一種更簡單的方法是使用 strace 方便的 -o 標志將輸出記錄到文件中。在 -o 標志后添加一個合適的文件名,然后再次運行命令:

  1. [root@sandbox tmp]# strace -o trace.log ls testdir/
  2. file1  file2
  3. [root@sandbox tmp]#

這次,沒有任何輸出干擾屏幕顯示,ls 命令如預期般工作,顯示了文件名并將所有輸出記錄到文件 trace.log 中。僅僅是一個簡單的 ls 命令,該文件就有近 100 行內(nèi)容:

  1. [root@sandbox tmp]# ls -l trace.log
  2. -rw-r--r--. 1 root root 7809 Oct 12 13:52 trace.log
  3. [root@sandbox tmp]#
  4. [root@sandbox tmp]# wc -l trace.log
  5. 114 trace.log
  6. [root@sandbox tmp]#

讓我們看一下這個示例的 trace.log 文件的第一行:

  1. execve("/usr/bin/ls", ["ls", "testdir/"], [/* 40 vars */]) = 0
  • 該行的第一個單詞 execve 是正在執(zhí)行的系統(tǒng)調(diào)用的名稱。
  • 括號內(nèi)的文本是提供給該系統(tǒng)調(diào)用的參數(shù)。
  • 符號 = 后的數(shù)字(在這種情況下為 0)是 execve 系統(tǒng)調(diào)用的返回值。

現(xiàn)在的輸出似乎還不太嚇人,對吧。你可以應用相同的邏輯來理解其他行。

現(xiàn)在,將關注點集中在你調(diào)用的單個命令上,即 ls testdir。你知道命令 ls 使用的目錄名稱,那么為什么不在 trace.log 文件中使用 grep 查找 testdir 并查看得到的結(jié)果呢?讓我們詳細查看一下結(jié)果的每一行:

  1. [root@sandbox tmp]# grep testdir trace.log
  2. execve("/usr/bin/ls", ["ls", "testdir/"], [/* 40 vars */]) = 0
  3. stat("testdir/", {st_mode=S_IFDIR|0755, st_size=32, ...}) = 0
  4. openat(AT_FDCWD, "testdir/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
  5. [root@sandbox tmp]#

回顧一下上面對 execve 的分析,你能說一下這個系統(tǒng)調(diào)用的作用嗎?

  1. execve("/usr/bin/ls", ["ls", "testdir/"], [/* 40 vars */]) = 0

你無需記住所有系統(tǒng)調(diào)用或它們所做的事情,因為你可以在需要時參考文檔。手冊頁可以解救你!在運行 man 命令之前,請確保已安裝以下軟件包:

  1. [root@sandbox tmp]# rpm -qa | grep -i man-pages
  2. man-pages-3.53-5.el7.noarch
  3. [root@sandbox tmp]#

請記住,你需要在 man 命令和系統(tǒng)調(diào)用名稱之間添加 2。如果使用 man man 閱讀 man 命令的手冊頁,你會看到第 2 節(jié)是為系統(tǒng)調(diào)用保留的。同樣,如果你需要有關庫函數(shù)的信息,則需要在 man 和庫函數(shù)名稱之間添加一個 3

以下是手冊的章節(jié)編號及其包含的頁面類型:

  • 1:可執(zhí)行的程序或 shell 命令
  • 2:系統(tǒng)調(diào)用(由內(nèi)核提供的函數(shù))
  • 3:庫調(diào)用(在程序的庫內(nèi)的函數(shù))
  • 4:特殊文件(通常出現(xiàn)在 /dev

使用系統(tǒng)調(diào)用名稱運行以下 man 命令以查看該系統(tǒng)調(diào)用的文檔:

  1. man 2 execve

按照 execve 手冊頁,這將執(zhí)行在參數(shù)中傳遞的程序(在本例中為 ls)。可以為 ls 提供其他參數(shù),例如本例中的 testdir。因此,此系統(tǒng)調(diào)用僅以 testdir 作為參數(shù)運行 ls

  1. execve - execute program
  2.  
  3. DESCRIPTION
  4. execve() executes the program pointed to by filename

下一個系統(tǒng)調(diào)用,名為 stat,它使用 testdir 參數(shù):

  1. stat("testdir/", {st_mode=S_IFDIR|0755, st_size=32, ...}) = 0

使用 man 2 stat 訪問該文檔。stat 是獲取文件狀態(tài)的系統(tǒng)調(diào)用,請記住,Linux 中的一切都是文件,包括目錄。

接下來,openat 系統(tǒng)調(diào)用將打開 testdir。密切注意返回的 3。這是一個文件描述符,將在以后的系統(tǒng)調(diào)用中使用:

  1. openat(AT_FDCWD, "testdir/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3

到現(xiàn)在為止一切都挺好。現(xiàn)在,打開 trace.log 文件,并轉(zhuǎn)到 openat 系統(tǒng)調(diào)用之后的行。你會看到 getdents 系統(tǒng)調(diào)用被調(diào)用,該調(diào)用完成了執(zhí)行 ls testdir 命令所需的大部分操作。現(xiàn)在,從 trace.log 文件中用 grep 獲取 getdents

  1. [root@sandbox tmp]# grep getdents trace.log
  2. getdents(3, /* 4 entries */, 32768)     = 112
  3. getdents(3, /* 0 entries */, 32768)     = 0
  4. [root@sandbox tmp]#

getdents 的手冊頁將其描述為 “獲取目錄項”,這就是你要執(zhí)行的操作。注意,getdents 的參數(shù)是 3,這是來自上面 openat 系統(tǒng)調(diào)用的文件描述符。

現(xiàn)在有了目錄列表,你需要一種在終端中顯示它的方法。因此,在日志中用 grep 搜索另一個用于寫入終端的系統(tǒng)調(diào)用 write

  1. [root@sandbox tmp]# grep write trace.log
  2. write(1, "file1  file2\n", 13)          = 13
  3. [root@sandbox tmp]#

在這些參數(shù)中,你可以看到將要顯示的文件名:file1file2。關于第一個參數(shù)(1),請記住在 Linux 中,當運行任何進程時,默認情況下會為其打開三個文件描述符。以下是默認的文件描述符:

  • 0:標準輸入
  • 1:標準輸出
  • 2:標準錯誤

因此,write 系統(tǒng)調(diào)用將在標準顯示(就是這個終端,由 1 所標識的)上顯示 file1file2

現(xiàn)在你知道哪個系統(tǒng)調(diào)用完成了 ls testdir/ 命令的大部分工作。但是在 trace.log 文件中其它的 100 多個系統(tǒng)調(diào)用呢?操作系統(tǒng)必須做很多內(nèi)務處理才能運行一個進程,因此,你在該日志文件中看到的很多內(nèi)容都是進程初始化和清理。閱讀整個 trace.log 文件,并嘗試了解 ls 命令是怎么工作起來的。

既然你知道了如何分析給定命令的系統(tǒng)調(diào)用,那么就可以將該知識用于其他命令來了解正在執(zhí)行哪些系統(tǒng)調(diào)用。strace 提供了許多有用的命令行標志,使你更容易使用,下面將對其中一些進行描述。

默認情況下,strace 并不包含所有系統(tǒng)調(diào)用信息。但是,它有一個方便的 -v 冗余選項,可以在每個系統(tǒng)調(diào)用中提供附加信息:

  1. strace -v ls testdir

在運行 strace 命令時始終使用 -f 選項是一種好的作法。它允許 strace 對當前正在跟蹤的進程創(chuàng)建的任何子進程進行跟蹤:

  1. strace -f ls testdir

假設你只需要系統(tǒng)調(diào)用的名稱、運行的次數(shù)以及每個系統(tǒng)調(diào)用花費的時間百分比。你可以使用 -c 標志來獲取這些統(tǒng)計信息:

  1. strace -c ls testdir/

假設你想專注于特定的系統(tǒng)調(diào)用,例如專注于 open 系統(tǒng)調(diào)用,而忽略其余部分。你可以使用-e 標志跟上系統(tǒng)調(diào)用的名稱:

  1. [root@sandbox tmp]# strace -e open ls testdir
  2. open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
  3. open("/lib64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
  4. open("/lib64/libcap.so.2", O_RDONLY|O_CLOEXEC) = 3
  5. open("/lib64/libacl.so.1", O_RDONLY|O_CLOEXEC) = 3
  6. open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
  7. open("/lib64/libpcre.so.1", O_RDONLY|O_CLOEXEC) = 3
  8. open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
  9. open("/lib64/libattr.so.1", O_RDONLY|O_CLOEXEC) = 3
  10. open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
  11. open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
  12. file1  file2
  13. +++ exited with 0 +++
  14. [root@sandbox tmp]#

如果你想關注多個系統(tǒng)調(diào)用怎么辦?不用擔心,你同樣可以使用 -e 命令行標志,并用逗號分隔開兩個系統(tǒng)調(diào)用的名稱。例如,要查看 writegetdents 系統(tǒng)調(diào)用:

  1. [root@sandbox tmp]# strace -e write,getdents ls testdir
  2. getdents(3, /* 4 entries */, 32768)     = 112
  3. getdents(3, /* 0 entries */, 32768)     = 0
  4. write(1, "file1  file2\n", 13file1  file2
  5. )          = 13
  6. +++ exited with 0 +++
  7. [root@sandbox tmp]#

到目前為止,這些示例是明確地運行的命令進行了跟蹤。但是,要跟蹤已經(jīng)運行并正在執(zhí)行的命令又怎么辦呢?例如,如果要跟蹤用來長時間運行進程的守護程序,該怎么辦?為此,strace 提供了一個特殊的 -p 標志,你可以向其提供進程 ID。

我們的示例不在守護程序上運行 strace,而是以 cat 命令為例,如果你將文件名作為參數(shù),通常 cat 會顯示文件的內(nèi)容。如果沒有給出參數(shù),cat 命令會在終端上等待用戶輸入文本。輸入文本后,它將重復給定的文本,直到用戶按下 Ctrl + C 退出為止。

從一個終端運行 cat 命令;它會向你顯示一個提示,并等待在那里(記住 cat 仍在運行且尚未退出):

  1. [root@sandbox tmp]# cat

在另一個終端上,使用 ps 命令找到進程標識符(PID):

  1. [root@sandbox ~]# ps -ef | grep cat
  2. root      22443  20164  0 14:19 pts/0    00:00:00 cat
  3. root      22482  20300  0 14:20 pts/1    00:00:00 grep --color=auto cat
  4. [root@sandbox ~]#

現(xiàn)在,使用 -p 標志和 PID(在上面使用 ps 找到)對運行中的進程運行 strace。運行 strace 之后,其輸出說明了所接駁的進程的內(nèi)容及其 PID。現(xiàn)在,strace 正在跟蹤 cat 命令進行的系統(tǒng)調(diào)用。看到的第一個系統(tǒng)調(diào)用是 read,它正在等待文件描述符 0(標準輸入,這是運行 cat 命令的終端)的輸入:

  1. [root@sandbox ~]# strace -p 22443
  2. strace: Process 22443 attached
  3. read(0,

現(xiàn)在,返回到你運行 cat 命令的終端,并輸入一些文本。我出于演示目的輸入了 x0x0。注意 cat 是如何簡單地重復我輸入的內(nèi)容的。因此,x0x0 出現(xiàn)了兩次。我輸入了第一個,第二個是 cat 命令重復的輸出:

  1. [root@sandbox tmp]# cat
  2. x0x0
  3. x0x0

返回到將 strace 接駁到 cat 進程的終端。現(xiàn)在你會看到兩個額外的系統(tǒng)調(diào)用:較早的 read 系統(tǒng)調(diào)用,現(xiàn)在在終端中讀取 x0x0,另一個為 write,它將 x0x0 寫回到終端,然后是再一個新的 read,正在等待從終端讀取。請注意,標準輸入(0)和標準輸出(1)都在同一終端中:

  1. [root@sandbox ~]# strace -p 22443
  2. strace: Process 22443 attached
  3. read(0, "x0x0\n", 65536)                = 5
  4. write(1, "x0x0\n", 5)                   = 5
  5. read(0,

想象一下,對守護進程運行 strace 以查看其在后臺執(zhí)行的所有操作時這有多大幫助。按下 Ctrl + C 殺死 cat 命令;由于該進程不再運行,因此這也會終止你的 strace 會話。

如果要查看所有的系統(tǒng)調(diào)用的時間戳,只需將 -t 選項與 strace 一起使用:

  1. [root@sandbox ~]#strace -t ls testdir/
  2.  
  3. 14:24:47 execve("/usr/bin/ls", ["ls", "testdir/"], [/* 40 vars */]) = 0
  4. 14:24:47 brk(NULL)                      = 0x1f07000
  5. 14:24:47 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2530bc8000
  6. 14:24:47 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
  7. 14:24:47 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3

如果你想知道兩次系統(tǒng)調(diào)用之間所花費的時間怎么辦?strace 有一個方便的 -r 命令,該命令顯示執(zhí)行每個系統(tǒng)調(diào)用所花費的時間。非常有用,不是嗎?

  1. [root@sandbox ~]#strace -r ls testdir/
  2.  
  3. 0.000000 execve("/usr/bin/ls", ["ls", "testdir/"], [/* 40 vars */]) = 0
  4. 0.000368 brk(NULL)                 = 0x1966000
  5. 0.000073 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb6b1155000
  6. 0.000047 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
  7. 0.000119 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3

總結(jié)

strace 實用程序非常有助于理解 Linux 上的系統(tǒng)調(diào)用。要了解它的其它命令行標志,請參考手冊頁和在線文檔。 

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2022-12-09 11:04:14

straceLinux

2010-06-04 17:49:46

連接MySQL數(shù)據(jù)庫

2023-02-10 08:11:43

Linux系統(tǒng)調(diào)用

2025-10-28 04:25:00

2013-07-24 09:59:04

UbuntuDebianUnison

2016-03-21 10:31:39

推薦系統(tǒng)用戶推薦用戶畫像

2021-06-29 06:39:21

Linuxdust命令du命令

2023-05-11 13:55:00

LinuxKdenlive編輯視頻

2022-01-09 15:00:16

LinuxAudacity聲音編輯器

2021-12-03 15:04:06

FlatpakLinux

2024-12-12 09:40:27

Strace命令監(jiān)控

2011-03-25 11:21:36

NagiosLinux

2023-09-18 11:34:17

Linux系統(tǒng)

2022-12-03 16:02:51

2014-12-15 09:59:28

LinuxApache

2021-03-19 09:30:22

Linuxkill命令 管理進程

2022-03-06 20:24:50

音樂播放器Juk開源

2021-10-08 14:14:03

jconsoleJavaLinux

2021-12-12 09:34:12

Linux轉(zhuǎn)換音頻SoundConver

2022-02-28 09:24:17

KWriteKateLinux
點贊
收藏

51CTO技術棧公眾號

日韩一区av| av在线网站观看| 曰本三级在线| 99精品桃花视频在线观看| 国产一区二区激情| 色婷婷一区二区三区av免费看| 欧美日韩免费做爰大片| 男人的天堂久久精品| 成年无码av片在线| 右手影院亚洲欧美| 国产亚洲久久| 亚洲丝袜自拍清纯另类| 精品一区二区三区视频日产| 亚洲免费视频二区| 亚洲精品一二| 精品国产一区二区三区四区在线观看| 免费看黄色一级大片| 91精品久久| 久久久国产一区二区三区四区小说| 欧美一区二三区| 欧美一级片黄色| 欧洲亚洲精品久久久久| 精品久久久久人成| 97av中文字幕| 网友自拍视频在线| 久久久精品tv| 极品校花啪啪激情久久| 可以免费看的av毛片| 亚洲精品一区二区在线看| 亚洲乱码一区av黑人高潮| 一本久道中文无码字幕av| 欧美aaa免费| 中文字幕中文字幕一区| 免费久久久一本精品久久区| 亚洲第一天堂在线观看| 久久福利视频一区二区| 国产91色在线|免| 国产精品a成v人在线播放| 亚洲成人tv| 综合欧美国产视频二区| 成熟人妻av无码专区| 亚洲三级网页| 国产丝袜一区二区三区| www男人天堂| 一区二区精彩视频| 日韩欧美一卡二卡| 女教师高潮黄又色视频| 成人在线视频www| 宅男噜噜噜66一区二区66| 久久人人爽人人爽人人av| 欧美日韩国产综合视频| 99久久精品免费看| 国产精品一区二区a| 精品人妻无码一区二区三区蜜桃一| 国产欧美91| 97视频国产在线| 日韩欧美大片在线观看| 日韩精品水蜜桃| 日韩中文字幕国产| 中国一级片在线观看| 久久久影院免费| 另类天堂视频在线观看| 久久精品成人av| 九九久久电影| 尤物yw午夜国产精品视频明星| 91精品国产高清91久久久久久| av资源亚洲| 色狠狠色狠狠综合| 亚洲人辣妹窥探嘘嘘| 国产成+人+综合+亚洲欧美| 欧美日精品一区视频| 天堂在线中文在线| 久久久久久亚洲精品美女| 欧美成人女星排行榜| xxxx黄色片| va天堂va亚洲va影视| 欧美一二三四区在线| 中文久久久久久| 中文字幕日本一区| 精品国精品自拍自在线| 日韩精品一区二区三区高清免费| 久久69av| 亚洲精品久久久久久久久久久久 | 蜜臀av免费在线观看| 丁香一区二区三区| 亚洲free嫩bbb| 国产91绿帽单男绿奴| 91免费版在线| 亚洲一区二区三区乱码| 国产黄色在线| 最新久久zyz资源站| 福利视频一区二区三区四区| 欧美色网一区| 欧美日韩国产一区中文午夜| 成人小视频在线观看免费| 白浆视频在线观看| 欧美三级日韩在线| 国产精品扒开腿做爽爽爽a片唱戏 亚洲av成人精品一区二区三区 | 在线观看三级网站| 草草在线视频| 欧美日韩国产一级二级| 国产污在线观看| 菠萝蜜一区二区| 久久久久久久久久国产| 亚洲精品无码久久久久| 懂色中文一区二区在线播放| 99在线视频首页| 男人天堂亚洲二区| 亚洲一区在线视频| 五月天婷婷亚洲| 日韩伦理一区二区三区| 亚洲精品在线不卡| 久久久久亚洲av片无码| 亚洲欧美日本国产专区一区| 日韩av免费在线看| 国产色片在线观看| 国产日韩欧美在线一区| 亚洲不卡中文字幕| 亚洲精品天堂| 欧美日韩在线直播| 精品无人区无码乱码毛片国产| 黑人操亚洲人| 性欧美暴力猛交69hd| 国产日韩欧美中文字幕| 中文字幕av一区 二区| 丝袜人妻一区二区三区| 日韩在线视频一区二区三区| www.国产一区| 五月激情丁香网| 久久久国产精华| 动漫av网站免费观看| silk一区二区三区精品视频| 久久久国产视频91| 一级片免费观看视频| 中文一区二区完整视频在线观看 | 亚洲天堂av网站| 亚洲成人tv| 91免费人成网站在线观看18| 东凛在线观看| 色成人在线视频| 蜜桃精品成人影片| 91精品一区二区三区综合| 欧美国产第一页| 欧美日韩一级黄色片| 99视频精品全部免费在线| 亚洲国产精品一区二区第一页 | 国产精品天美传媒沈樵| 丰满人妻中伦妇伦精品app| 久久婷婷国产| 7m精品福利视频导航| 天堂网2014av| 亚洲成av人影院| 奇米影视四色在线| 日韩在线二区| 国产色综合天天综合网| 黄色网页在线观看| 日韩一区二区影院| 久久免费视频精品| av动漫一区二区| 男人日女人bb视频| 精品国产中文字幕第一页 | 91精品久久久久久粉嫩| 欧美成人性战久久| 国产成人精品亚洲男人的天堂| 免费精品视频在线| 精品伦理一区二区三区| 丁香花在线电影| 欧美精品123区| 免费精品在线视频| 久久人人精品| 亚洲精品二区| 欧美另类中文字幕| 777精品视频| 川上优的av在线一区二区| 欧美久久一区二区| 国产真实夫妇交换视频| 国产在线观看一区二区| 日韩免费在线观看av| 日韩精品丝袜美腿| 国产有码一区二区| 激情网站在线| 亚洲人成欧美中文字幕| 亚洲在线观看av| 亚洲国产日产av| www.av天天| 久久婷婷一区| av动漫免费观看| 精品成人自拍视频| 国产69精品99久久久久久宅男| 国产黄色av片| 精品久久久久久中文字幕大豆网 | 久久国产视频网站| 色欲av永久无码精品无码蜜桃| 亚洲精品第1页| 午夜天堂在线视频| 亚洲精品欧洲| 在线不卡日本| 亚洲日产av中文字幕| 欧美综合一区第一页| 国产网站在线免费观看| 亚洲九九九在线观看| 国产精品爽爽久久| 一本大道综合伊人精品热热| 免费一级全黄少妇性色生活片| 粉嫩绯色av一区二区在线观看| 欧美激情亚洲天堂| xxxxxhd亚洲人hd| 国产女人18毛片水18精品| 多野结衣av一区| 久久国产精品亚洲| 三级外国片在线观看视频| 亚洲黄色片网站| 国产三级精品在线观看| 欧美亚洲国产怡红院影院| 亚洲aaa视频| 97久久精品人人澡人人爽| 99999精品| 蜜桃久久久久久| 那种视频在线观看| 亚洲免费播放| 999久久欧美人妻一区二区| 日韩a一区二区| 欧洲亚洲一区二区三区四区五区| 性欧美videohd高精| 97超级碰碰碰| 男男gaygays亚洲| 日韩黄色在线免费观看| 亚洲女同志亚洲女同女播放| 日韩一区二区免费高清| 一二三四区在线| 欧美亚洲一区二区三区四区| 在线观看日本视频| 富二代精品短视频| 久草国产精品视频| 国产精品视频一区二区三区不卡| 又黄又爽又色的视频| 捆绑变态av一区二区三区| 久久精品午夜福利| 小嫩嫩精品导航| jizzjizzxxxx| 久色成人在线| av免费网站观看| 日韩国产欧美视频| 国产精品视频黄色| 日韩国产精品91| 亚洲xxxx2d动漫1| 蜜臀久久99精品久久久久宅男| 欧洲精品在线播放| 国内精品99| 免费不卡av在线| 亚洲综合国产| 美女网站视频黄色| 国产在线精品免费av| 黑人巨大猛交丰满少妇| 福利一区福利二区| 欧美特级aaa| 精品亚洲欧美一区| 久久无码人妻一区二区三区| 国产婷婷精品| 91视频 - 88av| 激情欧美日韩一区| 3d动漫一区二区三区| 一级欧洲+日本+国产| 喜爱夜蒲2在线| 日韩精品一区二区久久| 秋霞在线一区二区| 亚洲国产高清一区二区三区| 国产午夜福利100集发布| 乱码第一页成人| 人妻av中文系列| 免费日韩av片| 可以看毛片的网址| 先锋影音久久久| 中国黄色片一级| 成人永久免费视频| 爱爱免费小视频| 国产精品久久久久天堂| 久草视频免费在线| 色婷婷国产精品| 91丨porny丨在线中文 | 国产精品爽黄69天堂a| 深夜成人在线| 久久久人成影片一区二区三区| www久久日com| 欧美性视频网站| 外国成人毛片| 久久国产精品高清| 国产精品久久久久久麻豆一区软件 | 中文资源在线播放| 欧美一区二区三区视频| 三级av在线| 久久电影一区二区| 97caopron在线视频| 91成人精品网站| 国产 日韩 欧美| 免费国产在线精品一区二区三区| 国产成人三级| 久久亚洲国产成人精品无码区| 91成人观看| 红桃av在线播放| 国产二区国产一区在线观看| 亚洲色成人网站www永久四虎| 国产农村妇女毛片精品久久麻豆| 91网站免费入口| 亚洲一区在线电影| 一级片视频播放| 亚洲欧美制服第一页| 成年网站在线| 97超级碰碰人国产在线观看| 吞精囗交69激情欧美| 97se国产在线视频| 国产精品17p| 在线免费观看一区二区三区| 玖玖玖国产精品| 内射中出日韩无国产剧情| 国产视频一区二区在线| 久久激情免费视频| 欧美卡1卡2卡| 成年人在线看| 日本一本a高清免费不卡| 国产成人精品一区二区三区在线 | 久久久久久电影| 日本一区二区视频在线播放| 亚洲同性同志一二三专区| 高潮毛片又色又爽免费| 日韩国产一区三区| free性护士videos欧美| 国产成人亚洲综合| 欧美自拍视频| 色综合久久久久无码专区| 国产99久久久国产精品潘金| 久久高清内射无套| 在线成人免费视频| 国产美女性感在线观看懂色av | 黄视频网站在线看| 国产精品旅馆在线| 风间由美性色一区二区三区四区| 日本一区二区三区视频在线播放 | 久久福利视频导航| 成人51免费| 佐佐木明希av| 国产成人av电影| 久久久久免费看| 精品久久久久久无| 日本亚洲精品| 2020欧美日韩在线视频| 福利在线一区| 艳母动漫在线免费观看| 激情欧美日韩一区二区| www.99re6| 91精品国产综合久久久久久| 麻豆导航在线观看| 国产精品99久久久久久人 | 超碰免费在线播放| 亚洲www永久成人夜色| 在线成人直播| 亚洲视频天天射| 午夜av一区二区三区| 欧美白人做受xxxx视频| 国产精品欧美久久久| 琪琪久久久久日韩精品 | 亚洲精品一区二区妖精| 日本少妇xxx| 午夜精品久久久久久久久久| 欧洲免费在线视频| 国产剧情久久久久久| 中文字幕av亚洲精品一部二部| 成人免费在线观看视频网站| 国产精品成人在线观看| 日韩电影在线观看一区二区| 精品国产百合女同互慰| 亚洲涩涩在线| 亚洲自拍偷拍二区| 国产成人午夜精品5599| 中文字幕亚洲精品一区| 在线亚洲国产精品网| 免费观看成人性生生活片 | 99精彩视频在线观看免费| 91久久高清国语自产拍| 久久精品无码专区| 一本久道久久综合中文字幕| 深夜福利视频在线免费观看| 国产精品69av| 国产一区二区三区四区| 天天操狠狠操夜夜操| 国产欧美一区二区三区鸳鸯浴 | 色一情一交一乱一区二区三区| 精品久久久久国产| 97最新国自产拍视频在线完整在线看| 欧美亚洲激情视频| 97国产成人高清在线观看| 伊人网综合视频| 精品国产福利在线| 日韩子在线观看| 久久影院理伦片| 国产精品香蕉一区二区三区| 欧美特黄aaaaaa| 亚洲色图校园春色| 天堂va在线高清一区| av丝袜天堂网|