精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品国产a| 极品中文字幕一区| 欧美日韩国产片| 艳母动漫在线观看| 免费av一级片| 日韩电影免费在线| 欧美国产高跟鞋裸体秀xxxhd| 欧美一级片黄色| 精品免费av一区二区三区| 亚洲丝袜自拍清纯另类| 精品欧美日韩在线| 国产又粗又猛又爽又黄的视频一 | 九九热精品免费视频| 麻豆一区二区| 777午夜精品视频在线播放| 欧美成人三级在线视频| 麻豆网在线观看| 久久久久久97三级| 国产91亚洲精品一区二区三区| 久久精品五月天| 欧美天天在线| 日韩日本欧美亚洲| 国产肥白大熟妇bbbb视频| 亚洲小说春色综合另类电影| 在线欧美一区二区| 国产精品专区在线| 日韩电影免费观看| 亚洲欧洲一区二区三区| 日本一区视频在线观看| 日韩一二三四| aaa亚洲精品| 懂色一区二区三区av片| 国产欧美熟妇另类久久久| 日韩精品一卡二卡三卡四卡无卡| 国语自产精品视频在线看一大j8 | 午夜精品福利一区二区三区蜜桃| 亚洲精品偷拍视频| av播放在线观看| 久久精品亚洲精品国产欧美kt∨| 国产综合色一区二区三区| 国产高潮流白浆喷水视频| 麻豆精品国产传媒mv男同| 国产精品福利在线观看网址| 亚洲欧美综合自拍| 亚洲欧美日韩在线观看a三区| 欧美激情网站在线观看| 欧美三级免费看| 一级欧洲+日本+国产| 日韩色av导航| 秋霞欧美一区二区三区视频免费 | av一区二区三区| 99三级在线| www.色播.com| 粉嫩av亚洲一区二区图片| 91蜜桃网站免费观看| www.日韩在线观看| 成人免费视频免费观看| 国产精品午夜av在线| 欧美 日韩 国产 精品| 成人美女视频在线观看| 精品综合在线| 日韩a在线观看| 国产香蕉久久精品综合网| 日韩福利在线| 午夜激情在线观看| 亚洲精品国产无天堂网2021| 男人添女荫道口女人有什么感觉| www在线视频| 亚洲国产精品久久久久秋霞影院| 精品一二三四五区| 在线天堂中文资源最新版| 色综合久久中文综合久久牛| 午夜精品在线免费观看| 欧美成人一二区| 日韩欧美一二三四区| 久久久久久久人妻无码中文字幕爆| 红杏aⅴ成人免费视频| 亚洲精选一区二区| 女人黄色一级片| 一区二区三区四区在线观看国产日韩 | 性农村xxxxx小树林| 欧美五码在线| 中文字幕精品一区久久久久| 99热精品免费| 国产女优一区| 国产有码一区二区| 免费成人在线看| 国产偷国产偷亚洲高清人白洁| 亚洲午夜精品福利| 爱草tv视频在线观看992| 日韩欧美亚洲综合| 久热在线视频观看| 欧美日韩精品一区二区三区在线观看| 国产一区二区三区视频| 欧美精品一区二区成人| 日韩和欧美的一区| 国产91精品入口17c| 超碰国产在线| 亚州成人在线电影| 女人高潮一级片| 日韩mv欧美mv国产网站| 精品国产一区二区在线 | 欧美69xxxx| 日韩欧美亚洲综合| 一起草最新网址| 精品国产一区二区三区久久久蜜臀| 久久精品国产亚洲精品2020| 中国一级免费毛片| 美女在线观看视频一区二区| 国产精品一区二区欧美| 九七久久人人| 一本到三区不卡视频| 久久久久中文字幕亚洲精品| 第一sis亚洲原创| 26uuu久久噜噜噜噜| www.国产麻豆| 自拍偷拍欧美激情| 蜜臀视频一区二区三区| 欧美日韩夜夜| 久久久噜噜噜久久| 国产精选久久久| 国产欧美中文在线| 欧美日韩在线中文| 北条麻妃一区二区三区在线| 久久精品影视伊人网| 日韩精品一区不卡| 91美女福利视频| 97超碰在线人人| 欧美a级大片在线| 日韩中文字在线| 波多野结衣在线观看视频| 99久久精品国产一区二区三区| wwwwww欧美| 欧美成人精品一级| 久久最新资源网| 91精品视频免费在线观看| 欧美极品美女视频| 热久久精品免费视频| 免费国产自久久久久三四区久久| 久久久久久国产免费| 俄罗斯嫩小性bbwbbw| 亚洲制服丝袜av| 国偷自产av一区二区三区麻豆| 91精品观看| 亚洲tv在线观看| 91三级在线| 日韩欧美一级精品久久| 国产一级二级三级视频| 国产乱人伦精品一区二区在线观看| 一区二区三区四区| www.久久99| 精品少妇v888av| 好男人在线视频www| 亚洲一区二区三区四区在线免费观看 | 天堂√中文最新版在线| 亚洲精品videossex少妇| 免费观看一区二区三区毛片| 99re这里都是精品| 男人操女人免费软件| 欧美人与拘性视交免费看| 国产经典一区二区| 日本中文字幕在线观看| 911精品产国品一二三产区| 久久精品www人人爽人人| 成人av先锋影音| 少妇高潮喷水久久久久久久久久| 国产一区二区三区四区五区| 国产精品亚洲网站| 中文字幕资源网在线观看| 精品久久久久一区二区国产| 国产精品久久久免费视频| 亚洲国产精品高清| 91看片破解版| 亚洲日本免费| 日本一区二区三区www| 成人在线视频观看| 欧美成人精品影院| 亚洲av毛片成人精品| 在线看一区二区| 老女人性淫交视频| 99国产精品国产精品毛片| 亚洲77777| 国产精品豆花视频| 秋霞毛片久久久久久久久| 亚洲狼人综合| 91国内在线视频| 2017亚洲天堂1024| 精品久久久久久无| 伊人久久中文字幕| 亚洲影视在线播放| 女女互磨互喷水高潮les呻吟| 精品一区二区三区在线视频| 国产原创中文在线观看| 成人一级毛片| 国内精品二区| а天堂中文最新一区二区三区| 91国内精品久久| 最新超碰在线| 在线播放国产一区中文字幕剧情欧美| 亚洲AV无码一区二区三区少妇| 色婷婷香蕉在线一区二区| 欧美成人免费看| 国产欧美一二三区| 一级欧美一级日韩片| 经典一区二区三区| 免费观看成人在线视频| 亚洲私拍自拍| 樱空桃在线播放| 欧美裸体在线版观看完整版| 精品国产一区二区三区免费| 日韩伦理一区二区| 国产成人在线播放| av伦理在线| 九九视频直播综合网| 亚洲免费视频一区二区三区| 亚洲精品中文字幕有码专区| 国模人体一区二区| 91精品福利在线一区二区三区| 黄瓜视频在线免费观看| 亚洲成a天堂v人片| 青娱乐91视频| 亚洲三级电影全部在线观看高清| 性の欲びの女javhd| 2021中文字幕一区亚洲| 无码任你躁久久久久久老妇| 国产成人丝袜美腿| 日韩av片免费观看| 久久99国产精品成人| 手机看片福利日韩| 首页综合国产亚洲丝袜| 欧美牲交a欧美牲交| 在线精品一区二区| 美女黄色免费看| 在线观看亚洲| 国产xxxx振车| 尤物精品在线| 青青青在线视频播放| 国产精品黄色| av在线观看地址| 亚洲福利精品| 国产免费毛卡片| 国产精品久久久免费| a级黄色一级片| 久久av一区| 国产一区视频免费观看| 久久精品九九| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 一区二区三区自拍视频| 97久久人人超碰caoprom欧美| 精品欧美视频| 99久久自偷自偷国产精品不卡| 99久久婷婷国产综合精品青牛牛| 国产91免费视频| 狼人天天伊人久久| 免费中文日韩| 成人看的视频| 天天综合五月天| 欧美精品不卡| 黄色网页免费在线观看| 久久国产日本精品| 亚洲欧美另类动漫| 蜜臀av一级做a爰片久久| 性欧美在线视频| 国产精品系列在线观看| 性囗交免费视频观看| 26uuu色噜噜精品一区二区| 亚洲黄色小说视频| 亚洲欧洲在线观看av| 免费中文字幕视频| 欧美午夜激情在线| 亚洲自拍第二页| 精品毛片乱码1区2区3区 | 久久蜜桃av一区二区天堂| 中文字幕第20页| 亚洲少妇最新在线视频| 国产无遮无挡120秒| 在线精品视频小说1| 国产毛片久久久久| 亚洲国产精品美女| 在线观看完整版免费| 欧美乱妇40p| 桃花岛成人影院| 亚洲最大av在线| 亚洲97av| 国产日产欧美一区二区| 亚洲影视在线| 亚洲一二三不卡| 91蝌蚪国产九色| 成人免费视频网站入口::| 欧美视频免费在线| 国产精品亚洲lv粉色| 亚洲男人av在线| 永久免费网站在线| 国产成人精品在线| 中文在线免费一区三区| 日日噜噜噜噜夜夜爽亚洲精品| 欧美国产另类| 国产视频手机在线播放| jvid福利写真一区二区三区| 二区三区四区视频| 黑人巨大精品欧美一区二区免费| 国产精品系列视频| 在线不卡国产精品| 黄毛片在线观看| 亚洲自拍小视频免费观看| 国产一区二区三区四区五区| 欧美综合在线播放| 国产成人三级在线观看| 少妇的滋味中文字幕bd| 欧美日韩性生活视频| 亚洲a视频在线观看| 日韩在线观看网站| 亚洲伦乱视频| 精品不卡一区二区三区| 欧美在线三区| 中日韩av在线播放| 日本一区二区三区在线观看| 亚洲精品1区2区3区| 精品国内片67194| 18视频在线观看| 国产原创欧美精品| 成人3d精品动漫精品一二三| 一本大道熟女人妻中文字幕在线 | 日本天码aⅴ片在线电影网站| 国产精品视频午夜| 欧美精品尤物在线观看| 丰满人妻中伦妇伦精品app| www.在线成人| 国产在线视频二区| 精品久久久久久无| 精品精品导航| 丁香婷婷久久久综合精品国产 | 久久久久久久网站| 欧美电影院免费观看| 51xx午夜影福利| 国产伦理精品不卡| 九九热只有精品| 精品精品欲导航| 国产精选在线| 久久久久久九九九九| 一区二区三区成人精品| 最新在线黄色网址| 精品日本高清在线播放| 亚洲色图欧美视频| 日本精品va在线观看| 亚洲影院天堂中文av色| 91免费视频网站在线观看| 久久亚洲精品小早川怜子| 国语对白永久免费| 亚洲视频专区在线| 精品国产欧美日韩一区二区三区| 日韩精品一线二线三线| 毛片一区二区三区| 999精品在线视频| 日韩免费一区二区三区在线播放| 蜜臀av在线| 久久久7777| 热久久免费视频| 手机在线免费看毛片| 欧美成人三级在线| 欧亚在线中文字幕免费| 欧美一区1区三区3区公司| 麻豆成人久久精品二区三区红| www日韩在线| 亚洲成人在线视频播放| 亚洲黄色免费看| 中文字幕99| 成人美女视频在线看| 免费黄色av片| 久久伊人精品视频| 理论片一区二区在线| 欧美日韩怡红院| 亚洲精品va在线观看| 亚洲av电影一区| 成人免费视频网址| 亚洲欧洲一区二区天堂久久| 亚洲国产无码精品| 欧美精品少妇一区二区三区 | 欧美性猛交99久久久久99按摩| 成人亚洲综合天堂| 99久久伊人精品影院| 天堂一区二区在线免费观看| 神马午夜精品91| 日韩精品极品视频| 高清不卡一区| 国产一区亚洲二区三区| 亚洲欧美激情插| 精品推荐蜜桃传媒| 91免费观看| 美女爽到高潮91| 久草国产精品视频| 久久精品久久久久久| 嫩草影视亚洲| 国产调教打屁股xxxx网站| 欧美四级电影在线观看| 国产福利在线免费观看| 中文字幕日韩精品一区二区| 2021久久国产精品不只是精品| 成人av一区二区三区在线观看| 国产成人综合av|