成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

深入了解PHP:用gdb調(diào)試源碼

本篇文章給大家?guī)砹岁P(guān)于PHP的相關(guān)知識(shí),其中主要介紹了關(guān)于使用gdb調(diào)試源碼的相關(guān)內(nèi)容,下面一起來看一下,希望對(duì)大家有幫助。

深入了解PHP:用gdb調(diào)試源碼

推薦學(xué)習(xí):《PHP視頻教程》

php編譯時(shí)有一個(gè)debug模式,這個(gè)模式會(huì)關(guān)閉內(nèi)存優(yōu)化,提示內(nèi)存泄露,屏蔽調(diào)用棧優(yōu)化可以讓我們看到完整的php c層面的調(diào)用棧。

通常我會(huì)編譯兩個(gè)php版(一個(gè)正常,一個(gè)打開debug)在不同的目錄,通過export決定使用哪個(gè)。

通過php-config命令可以看到configure-options,修改其中的prefix 和 with-config-file-path 到新的目錄,然后添加–enable-debug 命令

yongkbmaster ?  ~ php-config Usage: /data/env/runtime/php-7.1.33-debug/bin/php-config [OPTION] Options:   --prefix            [/data/env/runtime/php-7.1.33-debug]   --includes          [-I/data/env/runtime/php-7.1.33-debug/include/php -I/data/env/runtime/php-7.1.33-debug/include/php/main -I/data/env/runtime/php-7.1.33-debug/include/php/TSRM -I/data/env/runtime/php-7.1.33-debug/include/php/Zend -I/data/env/runtime/php-7.1.33-debug/include/php/ext -I/data/env/runtime/php-7.1.33-debug/include/php/ext/date/lib]   --ldflags           []   --libs              [-lcrypt   -lz -lexslt -lresolv -lcrypt -lrt -lldap -llber -lpng -lz -ljpeg -lcurl -lbz2 -lz -lrt -lm -ldl -lnsl  -lxml2 -lz -lm -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lssl -lcrypto -lcurl -lxml2 -lz -lm -ldl -lfreetype -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lcrypt -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxslt -lxml2 -lz -ldl -lm -lssl -lcrypto -lcrypt ]   --extension-dir     [/data/env/runtime/php-7.1.33-debug/lib/php/extensions/debug-non-zts-20160303]   --include-dir       [/data/env/runtime/php-7.1.33-debug/include/php]   --man-dir           [/data/env/runtime/php-7.1.33-debug/php/man]   --php-binary        [/data/env/runtime/php-7.1.33-debug/bin/php]   --php-sapis         [ cli fpm phpdbg cgi]   --configure-options [--prefix=/data/env/runtime/php-7.1.33-debug --enable-debug --enable-phpdbg-debug --with-config-file-path=/data/env/runtime/php-7.1.33-debug/etc --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip --with-ldap]   --version           [7.1.33]   --vernum            [70133]
登錄后復(fù)制

修改之后大概是這樣子,然后編譯安裝 就可以得到debug版本了

--prefix=/data/env/runtime/php-7.1.33-debug --enable-debug --enable-phpdbg-debug --with-config-file-path=/data/env/runtime/php-7.1.33-debug/etc --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip --with-ldap
登錄后復(fù)制

php –version中看到DEBUG 就可以了

yongkbmaster ?  ~ /data/env/runtime/php-7.1.33-debug/bin/php --version PHP 7.1.33 (cli) (built: Dec 29 2020 19:16:50) ( NTS DEBUG ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologie
登錄后復(fù)制

注意:Debug版本的擴(kuò)展需要再次編譯安裝,不能拷貝正常版本的so,安裝方式和普通擴(kuò)展一致,一般不需要開額外的debug參數(shù)。如果你需要調(diào)試擴(kuò)展比如swoole你需要設(shè)置擴(kuò)展的debug參數(shù),可以參考擴(kuò)展的./configure文件說明。

gdb使用

這里簡(jiǎn)單介紹一下gdb的基本使用,更詳細(xì)的使用方法可以自行g(shù)oogle。

啟動(dòng)gdb

捕獲進(jìn)程

gdb -p {pid}
登錄后復(fù)制

run 方法啟動(dòng)

gdb php run test3.php
登錄后復(fù)制

通過core 文件

gdb -c core.8451
登錄后復(fù)制

斷點(diǎn)

break n :在第n行處設(shè)置斷點(diǎn)(可以帶上代碼路徑和代碼名稱)

//注意:這里只能斷點(diǎn)c代碼,php文件不行的,var.c:201在php-7.1.33是var_dump的入口 break var.c:201
登錄后復(fù)制

b fn1 if a>b:條件斷點(diǎn)設(shè)置

break func(break縮寫為b):在函數(shù)func()的入口處設(shè)置斷點(diǎn)

//大部分php的方法在c層面的方法名都是zif_ + php方法名。 例如 var_dump 在c的方法名叫zif_var_dump break zif_var_dump
登錄后復(fù)制

delete 斷點(diǎn)號(hào)n:刪除第n個(gè)斷點(diǎn)

disable 斷點(diǎn)號(hào)n:暫停第n個(gè)斷點(diǎn)

enable 斷點(diǎn)號(hào)n:開啟第n個(gè)斷點(diǎn)

clear 行號(hào)n:清除第n行的斷點(diǎn)

info b (info breakpoints) :顯示當(dāng)前程序的斷點(diǎn)設(shè)置情況

delete breakpoints:清除所有斷點(diǎn)

其他

  • list (簡(jiǎn)寫 l) ,其作用就是列出程序的源代碼,默認(rèn)每次顯示10行。

  • list 行號(hào):將顯示當(dāng)前文件以“行號(hào)”為中心的前后10行代碼,

  • print a:將顯示 a 的值

  • continue (簡(jiǎn)寫c ):繼續(xù)執(zhí)行,到下一個(gè)斷點(diǎn)處(或運(yùn)行結(jié)束)。設(shè)置斷點(diǎn)后需要按這個(gè)。

  • next (簡(jiǎn)寫n):當(dāng)前函數(shù),下一行

  • step (簡(jiǎn)寫s):跳入函數(shù)內(nèi)部

  • where/bt :當(dāng)前運(yùn)行的堆棧列表;

php gdb 小工具

這里就是本文的重點(diǎn)了php為gdb提供了一組小工具,在源代碼目錄下的.gdbinit文件中,它可以幫助我們更好的gdb php源代碼。

準(zhǔn)備

為了更好的演示,我這里準(zhǔn)備一個(gè)php文件。

<?php const A = 'test const'; const B = 'test const B'; class B {         public $a = 'test';         public function funB() {                 var_dump('test funB');         } } class C extends B {         public function funC() {                 var_dump('test funC');         } } $a = 'test'; $b = ['a1' => 1, 'a2' => 2]; $c = new B(); $d = [A, B]; $e = new C(); $f = $b; var_dump($a, $b, $c, $d, $e, $f); get_object_vars($e);
登錄后復(fù)制

啟動(dòng)gdb,設(shè)置2個(gè)斷點(diǎn)。

gdb php //注意這里要用debug版本的 (gdb) break var.c:211 Breakpoint 1 at 0x76e717: file /data/env/runtime/php-7.1.33-src/ext/standard/var.c, line 211. (gdb) break zend_object_handlers.c:492 Breakpoint 2 at 0x86ce9d: file /data/env/runtime/php-7.1.33-src/Zend/zend_object_handlers.c, line 492. (gdb) r test4.php
登錄后復(fù)制

然后載入小工具

source /data/env/runtime/php-7.1.33-src/.gdbinit
登錄后復(fù)制

使用

zbacktrace 顯示當(dāng)前的php調(diào)用棧

(gdb) zbacktrace [0x7ffff1614200] var_dump("test", array(2)[0x7ffff1614260], object[0x7ffff1614270], array(2)[0x7ffff1614280], object[0x7ffff1614290], array(2)[0x7ffff16142a0]) [internal function] [0x7ffff1614030] (main) /root/test4.php:26
登錄后復(fù)制

dump_bt 查看當(dāng)前調(diào)用棧 和 zbacktrace 類似

(gdb) dump_bt executor_globals.current_execute_data [0x7ffff1614200] var_dump("test", array(2)[0x7ffff1614260], object[0x7ffff1614270], array(2)[0x7ffff1614280], object[0x7ffff1614290], array(2)[0x7ffff16142a0]) [internal function] [0x7ffff1614030] (main) /root/test4.php:26
登錄后復(fù)制

printzv 輸出zend value 的情況

(gdb) printzv &args[0] [0x7ffff1614250] (refcount=0) string: test
登錄后復(fù)制

print_global_vars 輸出全局變量

(gdb) print_global_vars Hash(13)[0x11bf0d0]: {   [0] _GET => [0x7ffff1657100] (refcount=2) array:   [1] _POST => [0x7ffff1657120] (refcount=2) array:   [2] _COOKIE => [0x7ffff1657140] (refcount=2) array:   [3] _FILES => [0x7ffff1657160] (refcount=2) array:   [4] argv => [0x7ffff1657180] (refcount=2) array:   [5] argc => [0x7ffff16571a0] long: 1   [6] _SERVER => [0x7ffff16571c0] (refcount=2) array:   [7] a => [0x7ffff16571e0] indirect: [0x7ffff1613080] (refcount=0) string: test   [8] b => [0x7ffff1657200] indirect: [0x7ffff1613090] (refcount=5) array:   [9] c => [0x7ffff1657220] indirect: [0x7ffff16130a0] (refcount=2) object(B) #2   [10] d => [0x7ffff1657240] indirect: [0x7ffff16130b0] (refcount=2) array:   [11] e => [0x7ffff1657260] indirect: [0x7ffff16130c0] (refcount=2) object(C) #3   [12] f => [0x7ffff1657280] indirect: [0x7ffff16130d0] (refcount=5) array:
登錄后復(fù)制

print_const_table 輸出定義的常量

(gdb) print_const_table executor_globals.zend_constants [0x14e8380] {   Hash(2340)[0x14e8380]: {     [0] E_ERROR => [0x14fd660] long: 1     [1] E_RECOVERABLE_ERROR => [0x14fe8a0] long: 4096     [2] E_WARNING => [0x14fe900] long: 2     [3] E_PARSE => [0x14fe960] long: 4     [4] E_NOTICE => [0x14fe9c0] long: 8     [5] E_STRICT => [0x14fea20] long: 2048     [6] E_DEPRECATED => [0x14fea80] long: 8192     [7] E_CORE_ERROR => [0x14feae0] long: 16     [8] E_CORE_WARNING => [0x14feb40] long: 32     [9] E_COMPILE_ERROR => [0x14feba0] long: 64     [10] E_COMPILE_WARNING => [0x14fec10] long: 128     [11] E_USER_ERROR => [0x14fec70] long: 256     [12] E_USER_WARNING => [0x14fecd0] long: 512     [13] E_USER_NOTICE => [0x14fed30] long: 1024     [14] E_USER_DEPRECATED => [0x14feda0] long: 16384     [15] E_ALL => [0x14fee00] long: 32767     [16] DEBUG_BACKTRACE_PROVIDE_OBJECT => [0x14fee70] long: 1     [17] DEBUG_BACKTRACE_IGNORE_ARGS => [0x14feee0] long: 2     [18] true => [0x14fef70] bool: true     [19] false => [0x14ff000] bool: false     [20] ZEND_THREAD_SAFE => [0x14ff070] bool: false     [21] ZEND_DEBUG_BUILD => [0x14ff0e0] bool: true     [22] null => [0x14ff170] NULL     [23] PHP_VERSION => [0x1500380] (refcount=1) string: 7.1.33  ......
登錄后復(fù)制

print_zstr 輸出zend string

(gdb) print_zstr args[0] string(4) "test" (gdb) print_zstr args[0] 2 string(4) "te..." (gdb) print_zstr args[0] 4 string(4) "test"
登錄后復(fù)制

print_cvs 打印已編譯的變量及其值 它需要傳入一個(gè) zend_execute_data 類型的值??梢韵萣t看一下調(diào)用棧。

(gdb) bt //這里看到 #2 層這里是 zend_vm_execute 的執(zhí)行入口,這里有zend_execute_data 類型的值。 #0  zif_var_dump (execute_data=0x7ffff1614120, return_value=0x7fffffffa9b0) at /data/env/runtime/php-7.1.33-src/ext/standard/var.c:209 #1  0x0000000000ab08d4 in ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_HANDLER () at /data/env/runtime/php-7.1.33-src/Zend/zend_vm_execute.h:628 #2  0x0000000000ab01c3 in execute_ex (ex=0x7ffff1614030) at /data/env/runtime/php-7.1.33-src/Zend/zend_vm_execute.h:429 #3  0x0000000000ab02d5 in zend_execute (op_array=0x7ffff1672d00, return_value=0x0) at /data/env/runtime/php-7.1.33-src/Zend/zend_vm_execute.h:474 #4  0x0000000000a510f9 in zend_execute_scripts (type=8, retval=0x0, file_count=3) at /data/env/runtime/php-7.1.33-src/Zend/zend.c:1482 #5  0x00000000009c02f4 in php_execute_script (primary_file=0x7fffffffdf30) at /data/env/runtime/php-7.1.33-src/main/main.c:2577 #6  0x0000000000b31387 in do_cli (argc=2, argv=0x14e7f30) at /data/env/runtime/php-7.1.33-src/sapi/cli/php_cli.c:993 #7  0x0000000000b32346 in main (argc=2, argv=0x14e7f30) at /data/env/runtime/php-7.1.33-src/sapi/cli/php_cli.c:1381 (gdb) f 2 //跳到#2 這一層 #2  0x0000000000ab01c3 in execute_ex (ex=0x7ffff1614030) at /data/env/runtime/php-7.1.33-src/Zend/zend_vm_execute.h:429 429                     ((opcode_handler_t)OPLINE->handler)(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); (gdb) print_cvs ex //輸出 Compiled variables count: 6 [0] 'a' [0x7ffff1614080] (refcount=0) string: test [1] 'b' [0x7ffff1614090] (refcount=5) array:     Hash(2)[0x7ffff170e300]: {       [0] a1 => [0x7ffff1793e20] long: 1       [1] a2 => [0x7ffff1793e40] long: 2 } [2] 'c' [0x7ffff16140a0] (refcount=2) object(B) #2 Properties     Hash(1)[0x7ffff170e480]: {       [0] a => [0x7ffff1793f60] indirect: [0x7ffff170e388] (refcount=4) string: test } [3] 'd' [0x7ffff16140b0] (refcount=2) array:     Packed(2)[0x7ffff170e3c0]: {       [0] 0 => [0x7ffff1793688] (refcount=1) string: test const       [1] 1 => [0x7ffff17936a8] (refcount=1) string: test const B } [4] 'e' [0x7ffff16140c0] (refcount=2) object(C) #3 Properties     Hash(1)[0x7ffff170e4e0]: {       [0] a => [0x7ffff17940a0] indirect: [0x7ffff170e448] (refcount=4) string: test } [5] 'f' [0x7ffff16140d0] (refcount=5) array:     Hash(2)[0x7ffff170e300]: {       [0] a1 => [0x7ffff1793e20] long: 1       [1] a2 => [0x7ffff1793e40] long: 2 }
登錄后復(fù)制

print_ht 輸出HashTable, HashTable是php底層一個(gè)重要的數(shù)據(jù)結(jié)構(gòu)是php array的實(shí)現(xiàn)方式,你可以理解為是C層面的php array,在php源碼中也大量使用HashTable存儲(chǔ)各類k v結(jié)構(gòu)或數(shù)組結(jié)構(gòu)。

(gdb) print_ht args[1].value Hash(2)[0x7ffff170e300]: {   [0] a1 => [0x7ffff1793e20] long: 1   [1] a2 => [0x7ffff1793e40] long: 2 } (gdb) print_ht args[3].value Packed(2)[0x7ffff170e3c0]: {   [0] 0 => [0x7ffff1793688] (refcount=1) string: test const   [1] 1 => [0x7ffff17936a8] (refcount=1) string: test const B }
登錄后復(fù)制

print_htptr 和 print_ht 類似,它輸出的是zval的地址不是zval的值

(gdb) print_htptr args[1].value Hash(2)[0x7ffff170e300]: {   [0] a1 => 0x7ffff1793e20   [1] a2 => 0x7ffff1793e40 }
登錄后復(fù)制

print_htstr 和 print_ht 類似,只是HashTable中存的不是zval 而是c char,但是這種情況在源碼中好像很少見了,大部分存字符串的情況會(huì)直接用zend string,我找了一圈在 php_cli_server_mime_type_ctor 有一處使用

(gdb) print_htstr &server->extension_mime_types Hash(2)[0x11b9228]: {   [0] ez => application/andrew-inset   [1] aw => application/applixware }
登錄后復(fù)制

print_ft 和 print_ht 類似,只是HashTable中存的是 zend_function 的地址

(gdb) print_ft &args[2].value.obj.ce.function_table Hash(1)[0x7ffff1783210]: {   [0] funb => "funB" }
登錄后復(fù)制

print_inh 輸出class相關(guān)信息

(gdb) print_inh &args[4].value.obj.ce class C extends B {  class B {  } }
登錄后復(fù)制

print_pi 輸出對(duì)象中屬性相關(guān)信息,它需要傳入一個(gè)zend_property_info類型的地址,在zend_object_handlers.c:492中有使用,php中可以用get_object_vars($e) 觸發(fā)。

(gdb) c Continuing. Breakpoint 2, zend_check_property_access (zobj=0x7ffff170e420, prop_info_name=0x7ffff173c2c0) at /data/env/runtime/php-7.1.33-src/Zend/zend_object_handlers.c:492 492             zend_string_release(member); (gdb) print_pi property_info [0x7ffff17833c8] {     offset = 0x28     ce = [0x7ffff17831d0] B     flags = 0x100 (ZEND_ACC_PUBLIC)     name  = string(1) "a"     default value: [0x7ffff17690c0] (refcount=4) string: test }
登錄后復(fù)制

推薦學(xué)習(xí):《PHP視頻教程》

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
亚洲午夜精品久久久久久APP| 亚洲成人免费AV| 性色AV一区二区三区无码| 亚洲av成人在线| 亚洲国产精品久久青草无码| 亚洲中文久久精品无码| 中文精品无码中文字幕无码专区 | 人妻丰满熟妇AV无码区不卡| 肉感饱满中年熟妇日本| 性高朝久久久久久久3小时| 亚洲欧美精品SUV| 中文字幕精品亚洲无线码二区| JAPANESETUBE日本护士高潮| 成人视频在线观看| 国产亚洲欧美精品一区| 久久人妻AV一区二区软件| 欧美精欧美乱码一二三四区| 三个媳妇一锅烩大团圆| 亚洲AⅤ日韩AV电影在线观看| 艳妇乳肉豪妇荡乳ⅩXX| WWW一区二区WWW免费| 国产成人一区二区青青草原| 精品国产乱码久久久久软件 | 在线精品亚洲观看不卡欧| www.xx欧美大鸡巴| 国产精品久久久久久吹潮| 久久AⅤ无码精品色午麻豆| 欧美成人一区二区三区在线视频 | 亚洲AV无码一区二区三区乱码4| 一边下奶一边吃面膜视频讲解图片 | 精品日产A一卡2卡三卡4卡乱| 浓毛BGMBGMBGM胖老太太| 视频一区二区三区在线观看蜜桃| 亚洲超星团在哪个平台播| 51精产国品一二三产区区别| 国产AV成人精品播放| 九九九精品成人免费视频| 欧美老熟妇乱XXXXX| 无码专区国产精品视频| 伊在人亚洲香蕉精品区| 成长人短视频B站| 精品少妇AY一区二区三区| 欧美亚洲国产精品久久高清| 新狼窝色AV性久久久久久| 43417大但人文艺术| 国产精品美女久久久浪潮AV| 两性午夜刺激性视频2345| 少妇被猛烈进入到喷白浆| 亚洲尤码不卡AV麻豆| 草草最新发地布地址①·| 黑森林精选AV导航| 人妻无码系列一区二区三区| 亚洲成A人片在线观看无码3D| S货叫大声点C烂你的SBXS| 狠狠色丁香婷婷综合久久图片| 欧美日韩在线亚洲一区蜜芽| 亚洲不卡AV不卡一区二区| 啊灬啊灬别停啊灬用力啊免费| 韩国AV一区二区| 清一区二区国产好的精华液| 亚洲精品无码AⅤ中文字幕蜜桃 | 国产裸模视频免费区无码| 欧美成人精品三级网站下载| 亚洲AV乱码一区二区三区| MAC小辣椒877正品| 精人妻无码一区二区三区| 双腿高潮抽搐喷白浆视频| 综合久久国产九一剧情麻豆| 国产午夜成人免费看片| 人妻少妇精品专区性色AV| 亚洲色大18成人网站WWW| 国产SUV精品一区二区四| 免费夜色污私人网站在线观看| 亚洲AV成人无码精品网站色欲 | 国产偷伦视频片免费视频| 强行破瓜稚嫩粗暴顶弄哭喊| 亚洲日本高清成人AⅤ片 | 四虎影视成人永久免费观看视频| √天堂资源在线中文8在线最新版| 国产一区二区三区水蜜桃| 日韩人妻无码一区二区三区99 | 亚洲国色天香卡2卡3卡4| 丰满性熟妇ⅩXXOOOSEX| 欧美成人精品高清在线播放| 亚洲日韩精品无码专区加勒比海 | 我把护士日出水了视频| 啊轻点灬大JI巴太粗太长了欧美 | 一二三四免费观看视频中国| 国产日韩AV无码免费一区二区三 | 超碰97人人射妻| 母亲とが话していま在线观看| 亚洲旡码A∨一区二区三区| 国产成人a在线看片色欲AV| 漂亮人妻洗澡被公强啪啪| 伊人久久中文字幕| 娇妻在我面前被黑人撑爆| 无码人妻av免费一区二区三区| 被黑人的大JJ干得很舒服吗| 男女猛烈无遮挡免费视频| 亚洲视频日韩视欧美视频| 国产男男猛烈无遮挡A片小说| 日韩欧美亚洲综合久久影院D3| 99精品热6080YY久久| 看黄A大片爽爽爽不打码| 亚洲欧美V国产一区二区| 国产综合AV一区二区三区无码| 婷婷俺也去俺也去官网| 成熟人妻换╳╳╳╳Ⅹ| 漂亮人妻被强中文字幕| 18禁裸乳啪啪无遮裆网站| 老熟妇一区二区三区啪啪| 亚洲一线二线三线品牌精华液| 精品v内射66偷窥| 亚洲va熟妇自拍无码区| 国产色无码精品视频国产| 无码VA在线观看| 国产精东天美AV影业传媒| 十八禁羞羞爽爽爽爱爱午夜网| 成人无码区免费AⅤ片丝瓜视频 | 久久亚洲精品无码播放| 亚洲女人操BB在线| 精品久久久久久久无码人妻热| 亚洲AV无码兔费综合| 国产无套码AⅤ在线观看| 性ⅩXXX搡XXXX搡| 国产群交视频一区二区三区铁牛| 无码久久精品国产亚洲AV影片 | A级无遮挡超级高清-在线观看| 男人用嘴添女人下身免费视频| 自慰喷水高清毛片AV片| 男人天堂2018| 99久久精品无码专区| 欧美性猛交乱大交3| 白嫩白嫩BBBBBBBBB-| 日本少妇三级HD激情在线观看| 波多野结衣AV无码| 色偷偷88888欧美精品久久久| 丰满岳跪趴高撅肥臀| 婷婷成人丁香五月综合激情| 国产精品伦一区二区三级视频| 无码精品A∨在线观看| 国产熟妇人妻ⅩXXXX麻豆网站| 亚洲AV无码AV日韩AV网站| 娇妻呻吟黑人又粗又大视频| 亚洲色欲色欲色欲WWW| 久久亚洲熟妇熟女ⅩXXX| 综合精品欧美日韩国产在线| 轻点灬大JI巴太粗太长了| 大乱东京道一本热大交乱| 特级做A爰片毛片免费看无码 | 小BBW小BBW小BBW小| 教官在我腿间疯狂驰聘视频| 艳妇乳肉豪妇荡乳ⅩXXOO软件| 久久综合激的五月天的歌词| 99久久免费精品高清特色大片| 日本丰满熟妇XXXX色熟妇| 国产Gay男同gv网站播放免费| 亚洲AⅤ无码精品一区二区三区 | 国产AVXXXX无套内射| 亚洲AV成人无码精品网站| 久久国产精久久精产国| 中文字幕乱偷无码动漫AV| 亲孑伦视频一区二区三区视频| 粉嫩被黑人两根粗大猛烈进出视频| 玩两个丰满老熟女| 精品国产亚洲AV麻豆映画| 一区二区三区人妻无码| 欧美乱码卡1卡2卡三卡四卡 | 14萝自慰专用网站| 日韩精品真人荷官无码| 国产熟妇XXXXXⅩ性Ⅹ交| 亚洲欲色欲WWW怡红院| 欧美人交A欧美精品AV一区| 夫上司人妻秘书OL中文有码| 亚欧免费无码AⅤ在线观看| 久久人妻AV一区二区软件| 拔萝卜高清视频大全免费观看| 无码精品人妻 中文字幕| 精品久久久久久久无码人妻热| 中文字字幕在线中文乱码| 色一情一乱一乱一区91Av| 国内精品伊人久久久久网站| 中文字幕大香视频蕉| 色欲久久久天天天综合网| 国内偷自第一区二区三区| 最新国产精品亚洲| 撕开奶罩揉吮奶头高潮视频| 精品人妻少妇一区| H无码动漫在线观看人| 无码人妻精品一区二区三区夜夜嗨| 久久国内精品一区二区三区| S货叫大声点C懒烂你的SBXS| 羞羞影院午夜男女爽爽免费视频| 美女露0裸体无挡动态视频| 丰满妇女BBWBBWBBWBB| 亚洲欧洲中文日韩乱码AV| 人善交VIDEOS欧美3D| 精品久久久噜噜噜久久久| 八戒八戒WWW在线观看| 亚洲国产婷婷香蕉久久久久久|