久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

跟蹤 UNIX 應用程序的解決方案

瀏覽:197日期:2024-06-08 09:48:15

本文示例源代碼或素材下載

開始之前

本教程幫助 Unix 系統開發人員和管理員以最佳方式跟蹤系統上運行的應用程序。要想從本教程獲得最大收獲,您應該了解 UNIX 操作系統的基本知識及其操作方式。具備基本的編程經驗會有幫助,但不是必需的。

關于本教程

大多數開發人員和系統管理員知道在他們的操作系統和應用程序中應該會發生什么情況,但糟糕的是,有時候不是這樣的。當應用程序崩潰或表現異常時,需要查明更多信息。通過利用對應用程序正常工作方式的了解和一些基本 UNIX 技能,可以跟蹤應用程序,查明造成問題的原因。本教程講解使用跟蹤工具了解應用程序內部情況的基本技術。

本教程首先討論調試和跟蹤的差異,以及這兩種解決方案的工作方式差異。然后,通過一些具體示例講解如何使用跟蹤解決應用程序中的問題。DTrace 提供跟蹤和調試兩種系統的組件,還支持對應用程序進行計時和基準測試。最后,本教程講解如何跟蹤在網絡計算機之間交換的信息,幫助發現網絡應用程序中的問題。

跟蹤概述

有時候,需要了解在應用程序內部正在發生的情況。例如,應用程序可能會運行失敗,而又沒有顯示有幫助的錯誤消息,或者系統服務沒有按照預期的方式運行。在這些情況下,您可能不掌握應用程序源代碼,因此無法通過傳統的調試過程尋找問題的原因。跟蹤提供了一種替代方法。

調試

對于開發人員來說,尋找 UNIX 應用程序問題的主要方法是,使用開發環境或操作系統的調試特性檢查源代碼,查明造成問題的原因。

大多數調試系統支持逐行監視和檢查代碼行的執行過程,還支持監視變量和結構的值。可以使用調試器在代碼中設置斷點,執行過程會停在斷點上;在斷點上,可以獲得關于調用堆棧(函數的調用路徑)的信息以及變量值。

我們來看一個例子,假設一個應用程序根據人的生日計算他的年齡,還要考慮到閏年等因素。要想調試這個應用程序,需要有源代碼,還需要在啟用調試選項的情況下編譯應用程序:$ gcc -g ageindays.c -o ageindays。

運行這個應用程序,提供用戶的生日和用來比較的目標日期(見清單 1)。

清單 1. 執行比較

$ ./ageindays 24/1/1980 22/2/2009 You have been alive 10622 days You were born on 24/1/1980 which is a Thursday 

在調試應用程序時,首先懷疑問題出在 calc_diff 函數中,這個函數計算第一個和第二個日期的差。接下來,可能按照清單 2 這樣進行調試。

清單 2. 調試 calc_diff 函數

$ gdb ageindays GNU gdb 6.3.50-20050815 (Apple version gdb-962) (Sat Jul 26 08:14:40 UTC 2008) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copIEs of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-apple-darwin"...Reading symbols for shared libraries ... done  (gdb) b calc_diff Breakpoint 1 at 0x1bd7: file ageindays.c, line 27. (gdb) r 24/1/1980 26/3/2009 Starting program: /nfs/MC/UnixSrc/c/bio/ageindays 24/1/1980 26/3/2009 Reading symbols for shared libraries ++. done  Breakpoint 1, calc_diff (day=26, month=3, year=2009) at ageindays.c:27 27unsigned long days_diff=0; (gdb) bt #0 calc_diff (day=26, month=3, year=2009) at ageindays.c:27 #1 0x00001e3d in main (argc=3, argv=0xbffff708) at ageindays.c:89 (gdb) p days_diff $1 = 8041 (gdb) 

通過 清單 2 中的輸出可以看出,我們打開了調試器,通過指定名稱在 calc_diff() 函數中設置了一個斷點,然后在調試器中運行程序,提供與命令行相同的參數。

當調試器到達創建的斷點時,執行過程停止,您可以檢查應用程序代碼和調用的函數。通過使用調試器,可以查看提供給函數的參數及其值(在這里是為目標日期提供的日期信息)。執行停止之后,可以查看堆棧跟蹤,查看代碼中調用 calc_diff 函數的行,可以獲得 days_diff 變量的值。因為應用程序的執行過程已經暫停了,所以還可以修改變量的值。這樣就可以在應用程序中嘗試使用不同的值,從而尋找潛在的問題。

可以使用這些信息,因為定義了特定的調試信息(組成函數和變量名的符號)和其他元數據(比如定義函數的代碼行)。

必須在編譯時把特定的調試信息添加到二進制應用程序中;更重要的是,必須訪問源代碼,才能把調試信息包含在編譯的應用程序中。如果無法識別函數名和變量,那么幾乎不可能調試程序。

跟蹤與調試的對比

系統管理員(和開發人員)常常希望發現正在運行的程序中的錯誤。例如,某個程序為什么造成了其他問題(比如內存和其他錯誤),應用程序的表現為什么不符合預期,它過去發生了什么情況。在這種情況下,調試應用程序的特定方面往往沒什么用。需要查明的實際上是操作系統如何執行應用程序。

在進行調試時,檢查的是應用程序中定義的各個函數的執行過程。調試主要關注應用程序本身,包括其中的函數和結構,通常會忽視應用程序向操作系統發出的系統調用和庫函數調用。調試能夠提供關于應用程序的大量信息,但是對于了解操作系統如何執行應用程序幫助不大。

在進行跟蹤時,監視應用程序和操作系統之間的交互,常常會檢查應用程序在執行期間調用的操作系統函數。

除了這些差異之外,跟蹤和調試之間的主要差異是,跟蹤不要求訪問源代碼,也不要求以任何特殊方式編譯應用程序。這意味著可以跟蹤操作系統附帶的或第三方廠商提供的應用程序。

通過跟蹤應用程序,可以查明以下方面的情況:

內存使用量和映射內存的調用

在執行期間打開和關閉的文件

對不同文件的讀和寫操作

為給定的應用程序裝載的庫

下面先研究一下 truss 的輸出,truss 是一種可以在 Solaris 和 AIX® 上使用的工具。

使用 truss 和 strace

在 Solaris 和 AIX 上可以使用 truss 工具,它能夠跟蹤應用程序中的系統調用和信號。可以在 Linux® 上使用的 strace 工具提供相似的功能。在不同的系統上,還有提供相似信息的其他工具,包括 ktrace (FreeBSD) 和 trace。

truss/strace 概述

truss 和 strace 工具提供相似的信息,但是命令行選項稍有差異。使用這兩種工具的標準方法都是把工具名放在要執行的命令前面。

例如,清單 3 給出 truss 對于本教程前面提到的 ageindays 程序的輸出。

清單 3. truss 的輸出

$ truss ./ageindays 24/1/1980 26/3/2009 execve("ageindays", 0x08047BBC, 0x08047BCC) argc = 3 mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEFB0000 resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12 getcwd("/root", 1013)= 0 resolvepath("/root/ageindays", "/root/ageindays", 1023) = 15 xstat(2, "/root/ageindays", 0x08047880) = 0 open("/var/ld/ld.config", O_RDONLY) = 3 fxstat(2, 3, 0x08047760)= 0 mmap(0x00000000, 144, PROT_READ, MAP_SHARED, 3, 0) = 0xFEFA0000 close(3)= 0 sysconfig(_CONFIG_PAGESIZE) = 4096 xstat(2, "/usr/lib/libc.so.1", 0x08046FA0) = 0 resolvepath("/usr/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14 open("/usr/lib/libc.so.1", O_RDONLY)= 3 mmap(0x00010000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFEF90000 mmap(0x00010000, 1413120, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEE30000 mmap(0xFEE30000, 1302809, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEE30000 mmap(0xFEF7F000, 30862, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED| MAP_INITDATA, 3, 1306624) = 0xFEF7F000 mmap(0xFEF87000, 4776, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFEF87000 munmap(0xFEF6F000, 65536)= 0 memcntl(0xFEE30000, 187632, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 close(3)= 0 mmap(0x00010000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEE20000 munmap(0xFEF90000, 32768)= 0 getcontext(0x080475D0) getrlimit(RLIMIT_STACK, 0x080475C8) = 0 getpid()= 15691 [15690] lwp_private(0, 1, 0xFEE22A00)= 0x000001C3 setustack(0xFEE22A60) sysi86(SI86FPSTART, 0xFEF879BC, 0x0000133F, 0x00001F80) = 0x00000001 ioctl(1, TCGETA, 0x08046C20)= 0 fstat64(1, 0x08046B80) = 0 You have been alive 10654 days write(1, " Y o uh a v eb e e".., 31) = 31 You were born on 24/1/1980 which is a Thursday write(1, " Y o uw e r eb o r".., 47) = 47 _exit(134511508) 

在這兩個輸出中,每個輸出行對應于應用程序執行的一個函數調用,其中顯示函數的參數和函數調用的返回值。與調試示例不同,列出的每個函數調用都是系統或系統庫中的函數,因此表示調用的函數的更低層接口。例如,在應用程序中可能使用 C 或 C++ 中的 fpopen() 函數打開文件,但是這個函數實際上是更低層的 open() 函數的包裝器。

了解應用程序正在執行的操作并不需要了解每個函數的情況。輸出中的許多行與操作系統為裝載和執行程序所做的初始化相關。這兩個跟蹤輸出的基本結構是相同的:

調用 execve() 函數以啟動一個新程序。

裝載程序所需的庫。在 Solaris 輸出中,首先使用 resolvepath() 尋找庫,然后使用 open() 打開庫。對于 Linux,使用 stat() 檢查庫是否存在,然后使用 open() 打開它。

為進程保留和分配一些內存。其中一部分內存是為應用程序保留的堆棧空間,一部分用來保存程序,其他內存保存程序使用的變量。

最后,執行程序,調用 write() 函數輸出年齡和生日信息。

如果執行跟蹤并希望了解每個步驟的具體情況,可以使用 man 命令訪問每個函數的手冊頁。

識別應用程序啟動問題

在啟動應用程序時的一個典型問題是,程序無法正確地初始化,但是在終止時給出一個不完整或導致誤解的消息。對應用程序運行跟蹤常常可以揭示這個問題的根源。例如,清單 5 顯示一個測試應用程序運行失敗了。

清單 5. 應用程序失敗

$ ./errnoacc ERROR: Application failed to initialize 

錯誤消息并沒有提供關于應用程序為什么會啟動失敗的具體信息。在這里,問題是故意引入的,但是您使用的任何命令或應用程序都可能出現相同的問題,而錯誤消息沒什么幫助,有時候甚至沒有錯誤消息。

對應用程序運行跟蹤可能會提供一些線索(見清單 6)。

清單 6. 運行跟蹤

$ truss ./errnoacc execve("errnoacc", 0x08047B20, 0x08047B28) argc = 1 mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEFB0000 resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12 getcwd("/export/home/mc", 1014) = 0 resolvepath("/export/home/mc/errnoacc", "/export/home/mc/errnoacc", 1023) = 24 xstat(2, "/export/home/mc/errnoacc", 0x080477E4) = 0 open("/var/ld/ld.config", O_RDONLY) = 3 fxstat(2, 3, 0x080476C4)= 0 mmap(0x00000000, 144, PROT_READ, MAP_SHARED, 3, 0) = 0xFEFA0000 close(3)= 0 sysconfig(_CONFIG_PAGESIZE) = 4096 xstat(2, "/usr/lib/libc.so.1", 0x08046F04) = 0 resolvepath("/usr/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14 open("/usr/lib/libc.so.1", O_RDONLY)= 3 mmap(0x00010000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFEF90000 mmap(0x00010000, 1413120, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEE30000 mmap(0xFEE30000, 1302809, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEE30000 mmap(0xFEF7F000, 30862, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED| MAP_INITDATA, 3, 1306624) = 0xFEF7F000 mmap(0xFEF87000, 4776, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFEF87000 munmap(0xFEF6F000, 65536)= 0 memcntl(0xFEE30000, 187632, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 close(3)= 0 mmap(0x00010000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEE20000 munmap(0xFEF90000, 32768)= 0 getcontext(0x08047534) getrlimit(RLIMIT_STACK, 0x0804752C) = 0 getpid()= 15727 [15726] lwp_private(0, 1, 0xFEE22A00)= 0x000001C3 setustack(0xFEE22A60) sysi86(SI86FPSTART, 0xFEF879BC, 0x0000133F, 0x00001F80) = 0x00000001 open("/etc/shadow", O_RDONLY)Err#13 EACCES [file_dac_read] ioctl(1, TCGETA, 0x08046BB0)= 0 fstat64(1, 0x08046B10) = 0 ERROR: Application failed to initialize write(1, " E R R O R :A p p l i".., 40) = 40 _exit(0) 

問題出現在這一行上:open("/etc/shadow", O_RDONLY) Err#13 EACCES [file_dac_read]。

在這里,應用程序試圖打開一個文件,但是因為有文件權限保護這個文件,運行應用程序的用戶沒有訪問權。因為無法打開這個文件,應用程序終止并在進程中寫錯誤消息。

跟蹤正在運行的應用程序

希望跟蹤應用程序常常是因為應用程序已經啟動,而您希望查明應用程序為什么不工作了。與初始化示例一樣,應用程序提供的錯誤消息或其他信息常常沒有準確地指出問題。

試圖鎖定或訪問另一個進程正在使用的資源會使應用程序看起來凍結了,沒有響應。

strace 和 truss 都能夠 “連接 到正在運行的進程。連接到進程的跟蹤與從命令行運行進程的跟蹤相似,也產生程序正在執行的系統函數的列表。實際的跟蹤從跟蹤啟動時執行的函數開始;對于在執行期間 “掛起 的程序,跟蹤應該會顯示程序正在等待的函數。

要想跟蹤正在運行的程序,需要指定要跟蹤的進程的進程 ID (PID)。例如,在清單 6 中,跟蹤的程序已經停止,但是沒有報告錯誤。這里使用 ps 工具列出正在運行的進程(見清單 7)。

清單 7. 使用 ps 工具列出正在運行的進程

$ ps -ef|grep errlock  mc 15779 157470 18:26:59 pts/20:00 ./errlock  mc 157426800 18:26:36 pts/30:00 ./errlock  mc 15817 157840 18:28:44 pts/40:00 grep errlock  mc 157346800 18:25:00 pts/30:01 /usr/bin/eMacs-nox errlock.c $ truss -p 15779 fcntl(3, F_SETLKW, 0x08047AC4) (sleeping...) 

在輸出中可以看到,已經調用了 fcntl() 函數,它要在一個文件上設置鎖。在這里,這個函數會一直等待到成功地設置鎖,然后才繼續運行。不幸的是,另一個進程已經鎖住了這個文件,所以第二個應用程序必須等待第一個應用程序使用完文件并釋放鎖。

對于這種情況,truss 有點兒局限性:它無法指出要鎖住哪個文件,也無法指出當前鎖住了哪個文件,從而阻礙了第二個程序的執行。這是因為跟蹤過程是在已經調用了打開文件的函數之后啟動的。truss 和 strace 只跟蹤在它們執行期間調用的函數;它們無法查明已經調用的函數。

獲取堆棧跟蹤

可以看出,truss 對于監視整個程序很有用,但是對于監視已經啟動的程序可能有點兒局限性。如果使用基于 SVR4 的 Unix,比如 Solaris 或 AIX,那么 pstack 命令可能有幫助。

pstack 命令實際上屬于一組進程檢查命令,這些命令輸出正在運行的進程的相關信息。其他工具包括 pfiles(輸出進程使用的文件的列表)和 psig(顯示信號和信號處理函數的列表)。

在使用這些命令時,需要指定進程的 PID。pstack 命令輸出一個正在運行的進程的調用堆棧,顯示在進程到達當前函數之前調用的函數。例如,對正在等待被鎖住的文件的進程使用 pstack,會產生清單 8 中的輸出。

清單 8. 對正在等待被鎖住的文件的進程使用 pstack

$ pstack 15828 15828: ./errlock  feef0877 fcntl(3, 7, 8047ac4)  feedcd49 fcntl(3, 7, 8047ac4, 8050e74) + 91  08050f10 main (1, 8047b24, 8047b2c) + d8  08050cdc _start(1, 8047c08, 0, 8047c12, 8047c7d, 8047c8e) + 80 

在這里,它沒有提供我們需要的信息。現在試試 pfiles(見清單 9)。

清單 9. 使用 pfiles

$ pfiles 15856 15856: ./errlock  Current rlimit: 256 file descriptors 0: S_IFCHR mode:0620 dev:292,0 ino:989038936 uid:101 gid:7 rdev:24,3  O_RDWR|O_NOCTTY|O_LARGEFILE  /dev/pts/3 1: S_IFCHR mode:0620 dev:292,0 ino:989038936 uid:101 gid:7 rdev:24,3  O_RDWR|O_NOCTTY|O_LARGEFILE  /dev/pts/3 2: S_IFCHR mode:0620 dev:292,0 ino:989038936 uid:101 gid:7 rdev:24,3  O_RDWR|O_NOCTTY|O_LARGEFILE  /dev/pts/3 3: S_IFREG mode:0666 dev:182,65545 ino:198 uid:101 gid:10 size:0  O_RDWR  advisory write lock set by process 15828  /export/home/mc/lockdemo 

這些輸出就比較有用了。可以看到進程已經打開的文件稱為 lockdemo ,因為 truss 顯示正在等待文件鎖,所以可能是這個文件導致了問題。

truss 和 strace 都是被動的跟蹤。可以查看正在執行的函數,但是無法了解關于正在發生的情況的詳細信息,也無法更有針對性地指定要跟蹤的東西和跟蹤時要輸出的信息。

用 DTrace 進行動態跟蹤

Solaris、FreeBSD 和 Mac OS X 內置的 Dynamic Tracing (DTrace) 功能提供一個更加動態的跟蹤環境。與 truss 和相似的工具不同,可以使用 DTrace 檢查正在運行的程序的內部情況,而不只是查看系統調用。另外,可以使用 DTrace 編寫應用程序跟蹤腳本,從而定制在跟蹤過程中希望提取的信息。

標簽: Unix系統
主站蜘蛛池模板: 国产婷婷综合 | 亚洲精品久久久一区二区三区 | 麻豆精品一区二区 | 在线色网 | 综合五月 | 亚洲 欧美 另类 综合 偷拍 | 国产视频亚洲 | 久久99亚洲精品 | 久久国产精品一区二区三区 | 一区二区三区久久 | 在线观看91视频 | 亚洲久久久| 欧美日韩在线精品 | 99伊人网| 热re99久久精品国99热线看 | 日本黄色一级片免费看 | 在线观看av国产一区二区 | 国产激情在线观看 | 亚洲久草| 91电影在线 | 日韩在线免费观看视频 | 电影91久久久 | 国产传媒在线 | 欧美日韩中文 | 91中文视频| 久久精品国产一区 | 香蕉三级 | 成人免费看 | 亚洲 欧美 日韩在线 | av网站观看 | 人人射人人草 | 蜜桃精品久久久久久久免费影院 | 欧美日韩精品一区 | 久草 在线| 国产伦精品一区二区三区四区视频_ | 精品国产乱码久久久久久蜜柚 | 99久久99久久精品 | 成人亚洲网站 | 国产午夜视频在线观看 | 久久影院国产 | 成人黄色一级网站 | 亚洲综合区 | 国产精品theporn | 久久tv在线观看 | 综合自拍偷拍 | 天堂亚洲 | 国产色视频网站 | 在线欧美亚洲 | 久久久久久久国产 | 久久精品国产免费 | 一区二区三区免费网站 | 日韩在线视频免费 | 日韩视频在线观看 | 亚洲精品色 | 天天干天天操 | 不用播放器的免费av | 在线一区观看 | 免费在线观看一级毛片 | 韩国精品视频在线观看 | 成人片免费看 | 免费黄色在线观看 | 国产一区视频网站 | 一区二区福利 | 亚洲三区在线观看 | 成人精品国产一区二区4080 | 9999国产精品欧美久久久久久 | 久久精品亚洲 | 极品久久久久久 | 日干夜干天天干 | 91精品国产高清一区二区三区 | 久久久久久久久久一区二区 | 日韩性在线 | 国产精品免费观看 | 色香蕉视频 | 久久中文视频 | 久久久精品456亚洲影院 | 日韩精品一区二 | 在线观看91精品国产入口 | 91原创国产 | 老司机深夜福利视频 | 亚洲欧美一区二区三区在线 | 超级乱淫片国语对白免费视频 | 人人干在线视频 | 在线视频久久 | 亚洲a精品 | 超黄视频在线观看 | 精品福利av导航 | 国产视频成人 | 日韩在线免费 | 久久91精品 | 国产精品自产拍在线观看 | 精品久久av | 久久精品国产99国产精2020新增功能 | 国产精品久久久久一区二区三区 | 国产一区在线视频 | 亚洲国产精品久久人人爱 | 毛片在线免费 | 国产一区亚洲二区三区 | 超级碰在线视频 | 欧美中文字幕在线 | 久久国内免费视频 | 少妇淫片aaaaa毛片叫床爽 | 国产精品久久久av | 国产www在线 | a在线播放 | 精品一区二区不卡 | 国偷自产av一区二区三区 | 成人欧美一区二区三区黑人孕妇 | 成人深夜免费视频 | 久久久久久久国产精品 | 黄色小视频在线免费观看 | 成人片免费看 | 日韩在线视频中文字幕 | 噜噜噜在线视频 | 天天操,夜夜操 | 亚洲国产成人一区二区精品区 | 国产精品不卡视频 | 国产中文在线播放 | 午夜影视| 亚洲高清电影 | 麻豆av在线播放 | 亚洲国产精品成人综合色在线婷婷 | 互换娇妻呻吟hd中文字幕 | 久久青青操 | 日韩图区 | 国产欧美精品一区二区三区 | 久久久久久久国产精品 | 久久精品国产99国产 | 欧美影院 | 免费av一区二区三区 | 91国产精品 | 成人免费黄色片 | 精品久久久久久久久久久久久久 | 国产精品一码二码三码在线 | 美日韩精品 | 一级一级一级毛片 | 国产精品精品视频 | 成人免费xxxxx在线观看 | 特黄一级 | 99视频精品 | 国产成人精品一区二区在线 | 天天操天天色天天 | 欧美日韩电影一区二区三区 | 91视频在线观看 | www.色综合 | www.操.com | 国产视频一区二区 | 亚洲h| 国产在线看h | 国产成人视屏 | 日本a在线 | 三级黄色片在线播放 | 日韩成人三级 | 欧美区国产 | 综合视频一区二区三区 | 成人久久精品 | jizzjizz亚洲中国少妇 | 欧美人体一区二区三区 | 精品国产18久久久久久二百 | 久久午夜电影 | 天堂一区二区三区在线 | 欧美激情综合色综合啪啪五月 | 精品国产一区二区在线 | 亚洲精品一区二区三区麻豆 | 久久天天躁狠狠躁夜夜躁2014 | 国产二区视频 | 狠狠操天天操 | 久久99一区二区 | a视频在线观看 | 国产资源视频在线观看 | 91电影在线观看 | 亚洲欧美在线免费 | 国产一区 | 中文字幕在线一区 | 亚洲精品一区二区三区蜜桃久 | 91精品久久 | 黄色一级视频 | 欧美日韩国产一区二区在线观看 | 在线亚洲精品 | 久久精品一 | 亚洲三级在线观看 | 久久99视频 | 91人人| 琪琪午夜伦伦电影福利片 | 99精品免费 | 国产精品久久7777 | 国内精品一级毛片国产99 | 日本在线播放 | 国产精品自拍视频网站 | 日本a在线| 欧美精品成人一区二区在线 | 欧美aaa一级片 | 激情五月综合 | 久久久久黄 | 国产亚洲视频在线 | 九色网址| 9999国产精品欧美久久久久久 | 在线精品亚洲欧美日韩国产 | а√天堂中文在线资源8 | 日韩a | 亚洲精品久久久久久一区二区 | 国产在线一区二区 | 久久女人精品 | 国产一区二区三区免费看 | 久久久精品久久久久 | 91久久精品一区二区别 | 正在播放国产精品 | 久国产精品 | xvideos.蜜桃一区二区 | 黄色最新网站 | 久久精品国产亚洲一区二区三区 | 精品伦精品一区二区三区视频 | 日日夜夜天天 | 成人免费xxxxx在线观看 | 国产一区二区观看 | 精品国产一级片 | 国产亚洲欧美在线 | 国产精品99 | av中文在线 | 最新午夜 | 精品二区 | 久久一区二区三区四区 | 久久这里只有国产精品 | 久久精品一 | 不卡一二 | 久久久天堂国产精品女人 | 欧美日韩在线成人 | 真人女人一级毛片免费播放 | 99爱视频| 狠狠躁日日躁夜夜躁东南亚 | 国产电影一区二区在线观看 | 国产乱a视频在线 | 美女视频一区 | 精品国产乱码久久久久久久软件 | 日韩欧美a级v片免费播放 | 日韩在线二区 | 免费一区二区三区 | 亚洲三区视频 | 色视频网站在线观看 | 91中文在线观看 | 日本黄色片免费看 | 亚洲精品一区二区三区 | 亚洲激情在线观看 | 91尤物网站网红尤物福利 | 中国妞xxxhd露脸偷拍视频 | 白浆在线播放 | 91成人短视频在线观看 | 天堂资源在线 | 久操伊人| 欧美一区二区三区视频 | 日本福利视频网 | 国产精品久久久久久久 | 国产精品香蕉 | 国产精品777 | 成人在线视频免费观看 | 欧日韩不卡在线视频 | 欧美在线一区二区 | 蕉伊人 | 在线播放高清视频www | 午夜黄色影院 | 夜夜夜久久久 | 国产视频一区二区在线观看 | 一二三区不卡视频 | 超碰在线天天 | 成人久久18| 色婷婷国产精品综合在线观看 | 欧美一区二区三区免费观看视频 | 久久精品国产99精品国产亚洲性色 | 99热这里有精品 | 免费国产wwwwwww网站 | 一级视频毛片 | 欧美久久成人 | 一级毛片网 | 亚洲欧美激情精品一区二区 | 日韩精品99久久久久中文字幕 | 91av导航 | 成人中文视频 | 日韩91| 亚洲精品国品乱码久久久久 | 99re视频| 亚洲在线 | 国产一区二区三区四区在线观看 | 久久一二区 | 色久天堂 | 国产欧美日本 | 日本精品视频在线观看 | 亚洲日本韩国在线观看 | 中文视频在线 | 成人福利视频 | 欧美视频在线播放 | 精品亚洲一区二区三区 | 玖玖久久 | 天天做天天看 | www久久精品 | 国产精彩视频 | 91精品国产色综合久久不卡98 | 欧美成人精品一区二区三区在线看 | 可以在线观看的黄色 | 国产高清一级片 | 一级a毛片 | 欧美一级大片 | 国产成人久久精品麻豆二区 | 国产99免费 | 国产日韩欧美 | 中文字幕最新在线 | 毛片av在线 | 久久国产欧美日韩精品 | 国产精品国产三级国产aⅴ入口 | www,久久久| 亚洲97 | 亚洲美女网址 | gav成人免费播放视频 | 国产精品日韩一区二区 | 日韩素人一区二区三区 | 国产精品婷婷午夜在线观看 | 一区二区三区免费看 | 国产中文在线 | 荷兰欧美一级毛片 | 成人在线小视频 | 欧美经典一区 | 成人国产精品一级毛片视频 | 成人精品一区二区 | 成人激情视频在线免费观看 | 在线色站 | 高清一区二区 | 欧美日韩一区精品 | 日韩一区二区三区在线 | 91国内产香蕉 | 日韩一区高清视频 | a中文字幕 | 天堂欧美城网站网址 | 中文字幕成人免费视频 | √新版天堂资源在线资源 | 日韩视频精品 | 日韩精品1区2区 | 午夜电影网站 | 久久国产精品一区二区三区 | 日本a在线 | 天堂资源库 | 97国产超碰| 成年人在线观看视频 | 国产高清一级毛片在线不卡 | 日韩欧美国产一区二区 | 国产精品一区二区在线 | 欧美精品欧美极品欧美激情 | 精品国产精品国产偷麻豆 | 亚洲h视频 | 中文字幕一页二页 | 精品视频一区二区三区四区 | 中文字幕在线观看第一页 | 99精品欧美一区二区三区综合在线 | a一级毛片 | 91精品国产91久久久久久蜜臀 | 国产最好的精华液网站 | 精品三级在线观看 | 国产一区二区三区在线视频 | 欧美视频在线一区 | 免费v片| 久久精品国产亚洲一区二区三区 | 亚洲视频 欧美视频 | 91精品国产综合久久久久久软件 | 成人小视频在线播放 | 久久涩 | 午夜视频网站 | 成人免费视频网站在线观看 | 欧日韩免费| 亚洲欧美在线视频 | 国产精品久久久久久久久久久久午夜片 | 国产在线一二三区 | 久久精品亚洲 | 久久99精品久久久噜噜最新章节 | 日韩在线欧美 | 成年人黄色免费视频 | 亚洲精品乱码久久久久久国产主播 | 成人毛片视频免费 | 国产一区二区三区在线免费观看 | 五月天婷婷综合 | 精品国产乱码久久久久久1区2区 | 欧美高清成人 | 久久久精 | 一级黄色毛片子 | 91传媒在线播放 | 欧美电影一区二区三区 | 在线天堂视频 | 日本成人中文字幕 | 一级大片一级一大片 | 日韩综合一区 | 欧美一区二区三区视频在线观看 | 午夜影院男女 | 国产成人精品免费 | 成人精品鲁一区一区二区 | 国产日韩欧美综合 | av天空| 综合网激情五月 | 欧美日韩一 | 欧美精品一区二区三区在线 | 亚洲最黄视频 | 亚洲a人 | 国产精品欧美一区二区 | 久久久久a | 91在线视频免费观看 | 免费在线a| 日本综合视频 | 综合伊人 | 欧美黄色网 | 日韩在线视频网站 | 色噜噜狠狠狠综合曰曰曰88av | 岛国一区| 精国产品一区二区三区 | 欧美激情高清 | 一区二区三区国产 | 欧美一级一区 | 成人午夜剧场 | 日韩精品一区二区三区在线观看 | 2019天天操 | 日本男人的天堂 | 中文字幕亚洲字幕一区二区 | 一区二区免费视频 | 久久首页 | 男女黄网站 | 国产精品国产精品国产专区不片 | 亚洲国产精品va在线看黑人 | 日韩高清中文字幕 | 中文字幕在线观看精品视频 | 黄久久久| 精品久久久久久亚洲精品 | 午夜欧美一区二区三区在线播放 | 中文字幕日韩专区 | 国产精品久久7777 | 亚洲成人免费在线 | 精品成人| 欧美一区二区三区 | 日韩中文字幕在线观看 | 性色爽爱| 激情欧美一区二区 | 欧美精品一区二区在线观看 | 久久久久国产精品午夜一区 | 香蕉久久久 | 三级国产网站 | 欧美成人在线网站 | 午夜欧美精品久久久久 | 国产精品成人一区二区三区夜夜夜 | 欧美日韩国产在线看 | 天天澡天天狠天天天做 | 久久精品一区二区三区四区 | 91免费版在线观看 | 欧美一区二区三区黄色 | 91精品国产综合久久久久久丝袜 | 成人免费网站 | 91在线观看网站 | 国产精品夜夜春夜夜爽久久电影 | 亚洲精品在线成人 | 一区二区在线看 | sese综合| 国产成人精品一区二区三区四区 | 91国内外精品自在线播放 | 精品日韩中文字幕 | 中文字幕二区 | 国产成人午夜 | 国产精品久久久久久妇女6080 | 国产成人精品高清久久 | 久久99一区二区 | 日韩特级 | 91精品国产一区二区 | 久久久精彩视频 | 国产精品99久久久久久久vr | 四虎影院在线免费播放 | 97久久精品人人做人人爽50路 | 欧美日韩精品在线 | 亚洲一区二区三区在线免费观看 | 中国特级黄色片 | 欧美日韩电影一区 | 91香蕉视频 | 久久毛片 | 欧美激情一区二区三区 | 精品国产一区二区三区av片 | 亚洲欧美日韩精品久久亚洲区 | 日日摸夜夜添夜夜添亚洲女人 | 欧美综合国产 | 一级色网站 | 成人av在线网 | 狠狠做深爱婷婷综合一区 | 激情欧美日韩一区二区 | 国产日皮视频 | 欧美性猛交一区二区三区精品 | 自拍偷拍第一页 | 国产a一三三四区电影 | 国产精品一区二区三区99 | 国产精品久久久久久久久久久新郎 | vagaa欧洲色爽免影院 | www.国产精品 | 欧美日韩大片在线观看 | 午夜在线观看免费 | 一区二区三区在线视频播放 | www中文字幕 | www.44181com| 久久青| av一二三四 | 一区二区三区四区在线 | 免费福利视频一区 | 99久久婷婷国产综合精品电影 | 久久综合九色综合欧美狠狠 | 国内精品一区二区 | 久9久9 | 国产一级毛片电影 | 亚洲黄色成人 | 视频精品一区 | 亚洲精品亚洲人成人网 | 欧美成年黄网站色视频 | 国产小视频在线观看 | 91在线最新 | 欧洲一区二区三区 | 美女天堂av| 欧美日韩成人在线观看 | 国色天香成人网 | 日韩在线视频中文字幕 | 亚洲最大av网站 | 欧美日韩国产一区二区三区不卡 | 久久99精品久久久 | 亚洲成av人片在线观看无码 | 北条麻妃99精品青青久久 | 6080yy精品一区二区三区 | 国产美女视频一区 | 四虎影院在线看 | 久久精品国产99久久久 | 亚洲成人av在线 | 欧美a在线看 | 四虎永久在线 | 欧美精品99 | 91高清在线观看 | caoporn国产精品免费公开 | 欧美午夜一区二区三区 | 精品国产一区二区三区久久久久久 | 操操操操网 | 国产精品99久久久久久久vr | 国产情侣小视频 | 亚洲一区在线观看视频 | 亚洲成人免费电影 | 日韩一区二区三区在线观看 | 亚洲网在线 | 日本特黄特色aaa大片免费 | 精品免费国产 | 免费 视频 1级 | 日韩精品免费视频 | 男女黄网站| 成人精品一区二区三区中文字幕 | ww8888免费视频 | 四虎成人在线 | 韩日精品一区 | 精品久久久久久久 | 日韩在线观看中文字幕 | 亚洲第一黄 | 免费在线视频精品 | 国产成人免费视频网站高清观看视频 | 欧美激情在线播放 | 国产一区二区视频在线 | 国产伦精品一区二区三区在线 | 国产精品久久一区 | 久久精品日韩 | 青青久视频 | 欧美一级免费 | 性生活毛片| av日韩一区| 精品日韩视频 | 美女视频一区二区三区 | 91香蕉视频 | 三级黄视频在线观看 | 在线成人亚洲 | 国产精品久久久久久久久久免费看 | 天堂精品 | 中字幕视频在线永久在线观看免费 | 天天操综合网 | 亚洲精品乱码 | 久久久香蕉 | 蜜臀久久99精品久久久无需会员 | 97精品视频 | 99精品国产在热久久 | 一区二区精品视频 | 久久久999精品视频 五月天婷婷在线视频 | 男人的天堂在线视频 | aaa在线 | 国产成人精品亚洲日本在线观看 | 一区免费视频 | 国产在线观看一区二区三区 | www中文字幕| 国内精品一区二区 | 成人精品视频在线观看 | 欧美大片一区二区 | 欧洲精品在线观看 | 国产精品久久久久婷婷二区次 | av网站观看 | 日日撸 | 国产精品入口久久 | 国产自在现线2019 | 亚洲国产精品久久久 | 久综合在线| 亚洲欧美视频在线 | 夸克满天星在线观看 | 精品国产欧美 | 色婷婷国产精品 | 精品国产不卡一区二区三区 | 中文字幕一区在线观看视频 | 天堂中文视频在线观看 | 久色成人 | 成人国产在线 | 欧美激情一区二区 | 91嫩草在线 | 精品成人 | 美女一区二区三区四区 | 久久久久久久国产精品 | 精品国产乱码久久久久久丨区2区 | 亚洲视频自拍 | aaaa网站 | 日本久久精品视频 | 影音先锋亚洲资源 |