青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

小默

【轉(zhuǎn)】在VMware環(huán)境下使用KGDB調(diào)試Linux內(nèi)核及內(nèi)核模塊

1:前言:
    最近幾天學(xué)習(xí)Linux-2.6平臺上的設(shè)備驅(qū)動,所以要建立內(nèi)核及內(nèi)核模塊的調(diào)試平臺.雖然網(wǎng)上有很多相關(guān)教程,但多是基于2.6.26以前的通過補(bǔ)丁安裝的,過程非常復(fù)雜,而且問題比較多.linux從 2.6.26開始已經(jīng)集成了kgdb,只需要重新編譯2.6.26(或更高)內(nèi)核即可.kgdb安裝及模塊調(diào)試過程也遇到不少問題,網(wǎng)上網(wǎng)下不斷的搜索與探索,才算調(diào)通.現(xiàn)在記錄下來,供朋友們參考.
    首先說一下,開始本打算安裝kdb進(jìn)行內(nèi)核調(diào)試,后來聽說kdb只能進(jìn)行匯編級別的調(diào)試,所以放棄,改用kgdb.

2: 系統(tǒng)環(huán)境:
虛擬環(huán)境:   VMWare Workstation 5.5(英文版)
操作系統(tǒng):   CentOS-4.6-i386(原內(nèi)核2.6.9,將會把內(nèi)核升級至2.6.26)
注:CentOS 是RedHat的一個社區(qū)版本.
     (由于我們采用的linux kernel 2.6.26已經(jīng)集成kgdb,kgdb再不需要單獨(dú)下載)

3:系統(tǒng)的安裝:
在VMWare中新建一臺計(jì)算機(jī):

點(diǎn)擊 Next
選中Custom 點(diǎn)擊 Next
選中 New-Workstation 5,點(diǎn)擊Next
選中Linux ,Version選中Other Linux 2.6.x kernel 點(diǎn)擊Next
Virtual machine name 輸入Client(Development) 點(diǎn)擊Next
Processors 選中 One, 點(diǎn)擊Next
Memory 輸入256,點(diǎn)擊Next
Network connection 選中Use network address translation(NAT) (選第一個貌似也可以) 點(diǎn)擊Next
I/O adapter types
SCSI Adapters 選中默認(rèn)的LSI Logic(這里如果你后面使用了SCSI格式的Disk,編譯內(nèi)核時需要添加相應(yīng)的驅(qū)動,我選擇的是IDE的硬盤,kernel默認(rèn)就支持了)
Disk 選中Create a new virtual disk 點(diǎn)擊Next
Virtual Disk Type 選中IDE,點(diǎn)擊Next
Disk capacity Disk size 輸入80G (下面的Allocate all disk space now不要選中,表示在真正使用才分配磁盤空間, Split disk into 2 GB files項(xiàng),可不選,如果你的系統(tǒng)分區(qū)為fat32格式,最好選中) 點(diǎn)擊Next.
Disk file ,輸入Disk的名稱,如:disk1.vmdk ,點(diǎn)擊Finish.完成
安裝CentOS 4.6(過程略過)
安裝完成后,關(guān)閉計(jì)算機(jī),然后Clone一臺同樣的計(jì)算機(jī).步驟如下:

點(diǎn)擊VM->Clone
選中默認(rèn)的From current state,點(diǎn)擊Next
選中Create a full clone, 點(diǎn)擊Next
Virtual Machine name 輸入Server(Targe),將克隆的機(jī)器命令為目標(biāo)機(jī).
說明一下,kgdb 需要兩臺計(jì)算機(jī)通過串口進(jìn)行遠(yuǎn)程調(diào)試,兩臺計(jì)算機(jī)分別為:
Client(Development):開發(fā)機(jī),也稱客戶機(jī),將在該計(jì)算機(jī)上進(jìn)行程序的開發(fā),GDB將在本計(jì)算機(jī)上運(yùn)行.用于輸入命令控制Server(target)的運(yùn)行.
Server(Target): 目標(biāo)機(jī),也稱服務(wù)器,就是被調(diào)試的計(jì)算機(jī),在Development機(jī)上開發(fā)好的內(nèi)核模塊程序?qū)⒖截惖絋arget上運(yùn)行,其運(yùn)行受到Development命令的控制.
分別為兩個系統(tǒng)增加一個串口,以"Output to named pipe"方式,其中:

Client端選擇"this end is the client", "the other end is a virtual machine"
Server端選擇"this end is the server", "the other end is a virtual machine"
備注: 兩個pipe的名稱要相同,并且選中下面的Connect at power on,及Advanced里面的Yield CPU on poll
以后的部分,Server上的操作與Client上的操作將以不同的背景色顯示,輸入的命令將以不同的字體顏色并帶下劃線顯示.請注意:
Server(Target) 輸入: cat /dev/ttyS0

系統(tǒng)輸出的信息: hello Client(Development) 輸入: echo "hello" >/dev/ttuS0
串口添加完成后,使用如果命令測試:
在Server上cat /dev/ttyS0
然后到Client上 echo "hello" > /dev/ttyS0
這時回到Server上,如果能看到輸入的hello,說明串口通訊正常.
4:升級內(nèi)核2.6.26(添加關(guān)于KGDB的選項(xiàng))
      說明一下,這里是要升級Server的內(nèi)核,因?yàn)閗gdb是要Server上運(yùn)行的,但是編譯需要在Client完成(或者你也可以在Server上編譯,之后再拷貝到Client上),因?yàn)檎{(diào)試時Client上的gdb會用到編譯的內(nèi)核及源代碼.Client也需要升級,保證Client同Server上的內(nèi)核一致,這樣Client上編譯的模塊拿到Server上加載就不會有什么問題.

首先下載kernel 2.6.26
      我習(xí)慣在windows上下載,然后共享,再到linux使用smbclient連接,拷貝到Linux上.你也可以直接在linux上下載.
      smbclient用法 : smbclient //192.168.0.100/share -Uadministrator 回車后,會提示輸入admin的密碼.之后就可以通過get獲取了 192.168.0.100是我在windows主機(jī)的IP,share為共享名,-U后面是用戶名

編譯Kernel2.6.26

進(jìn)入Client(Development)系統(tǒng),將linux-2.6.26.tar.bz2拷貝到/usr/src目錄下:
cd /usr/src
tar jxvf linux-2.6.26.tar.bz2
ln -s linux-2.6.26 linux
cd linux
make menuconfig
File System --> 下面把ext3,ext2都編譯進(jìn)內(nèi)核(就是把前面的M變成*)
Kernel Hacking -->
      選中Compile the kernel with frame pointers
      選中KGDB:kernel debugging with remote gdb
      并確認(rèn)以下兩項(xiàng)也是選中的(他們應(yīng)該默認(rèn)是選中的)
      > kernel debugging
      > Compile the kernel with debug info
對于其它選項(xiàng),請按實(shí)際情況,或你的要求定制.
在其它網(wǎng)友的說明里面,會有Serial port number for KGDB等選項(xiàng),但是我使用的版本未找到這些選項(xiàng),所以忽略過.
保存退出
make -j10 bzImage
-j10表示使用10個線程進(jìn)行編譯.
make modules
編譯內(nèi)核模塊
make modules_install
安裝內(nèi)核模塊
make install
安裝內(nèi)核
將Client系統(tǒng)中的linux-2.6.26整個目錄同步到Server上.

在Client系統(tǒng)上運(yùn)行下列命令:
cd /usr/src/linux  
scp -r linux-2.6.26 root@Server(Target)IP:/usr/src/
     系統(tǒng)會提示輸入root的密碼,輸入完了就會開始復(fù)制文件了,(這里要注意,如果原系統(tǒng)已經(jīng)是2.6.26的內(nèi)核,可以只拷貝arch/i386/boot/bzImage,及System.map文件到Server上,然后修改/boot/grub/grub.conf,但由于我是從2.6.9升級上來,所以需要將整個linux原代碼目錄拷貝到Server上進(jìn)行升級)
升級Srever系統(tǒng)的內(nèi)核
進(jìn)入Server(Target)系統(tǒng),usr/src目錄:
ln -s linux-2.6.26 linux  
cd linux  
make modules_install
安裝內(nèi)核模塊
make install
安裝內(nèi)核
安裝完成后,在/boot/目錄下會有即個新添加的文件./boot/grub/grub.conf文件也會添加一個新的啟動項(xiàng),我的如下(行號不是文件的一部分):
 1 # grub.conf generated by anaconda
 2 #
 3 # Note that you do not have to rerun grub after making changes to this file
 4 # NOTICE:  You have a /boot partition.  This means that
 5 #          all kernel and initrd paths are relative to /boot/, eg.
 6 #          root (hd0,0)
 7 #          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
 8 #          initrd /initrd-version.img
 9 #boot=/dev/hda
10 default=0
11 timeout=5
12 splashimage=(hd0,0)/grub/splash.xpm.gz
13 hiddenmenu
14 title CentOS (2.6.26)
15     root (hd0,0)
16     kernel /vmlinuz-2.6.26 ro root=/dev/VolGroup00/LogVol00
17     initrd /initrd-2.6.26.img
18 title CentOS-4 i386 (2.6.9-67.ELsmp)
19     root (hd0,0)
20     kernel /vmlinuz-2.6.9-67.ELsmp ro root=/dev/VolGroup00/LogVol00
21     initrd /initrd-2.6.9-67.ELsmp.img
 
       注意里面的NOTICE說明,我的系統(tǒng)/boot是一個獨(dú)立的分區(qū),所以下面配置的文件路徑都是相對于/boot/目錄的,像 /vmlinuz-2.6.26,實(shí)際到它的絕對位置應(yīng)該是/boot/vmlinuz-2.6.26. 在你的系統(tǒng)上請根據(jù)實(shí)際情況處理.

修改一下grub.conf,修改成下面這樣:
 1 # grub.conf generated by anaconda
 2 #
 3 # Note that you do not have to rerun grub after making changes to this file
 4 # NOTICE:  You have a /boot partition.  This means that
 5 #          all kernel and initrd paths are relative to /boot/, eg.
 6 #          root (hd0,0)
 7 #          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
 8 #          initrd /initrd-version.img
 9 #boot=/dev/hda
10 default=0
11 timeout=5
12 splashimage=(hd0,0)/grub/splash.xpm.gz
13 hiddenmenu
14 title CentOS (2.6.26)
15     root (hd0,0)
16     kernel /vmlinuz-2.6.26 ro root=/dev/VolGroup00/LogVol00 kgdboc=ttyS0,115200
17     initrd /initrd-2.6.26.img
18 title CentOS (2.6.26) Wait...(kernel debug)
19     root (hd0,0)
20     kernel /vmlinuz-2.6.26 ro root=/dev/VolGroup00/LogVol00 kgdboc=ttyS0,115200 kgdbwait
21     initrd /initrd-2.6.26.img
22 title CentOS-4 i386 (2.6.9-67.ELsmp)
23     root (hd0,0)
24     kernel /vmlinuz-2.6.9-67.ELsmp ro root=/dev/VolGroup00/LogVol00
25     initrd /initrd-2.6.9-67.ELsmp.img
 

說明:

第一個啟動項(xiàng)在原來的基礎(chǔ)上添加了kgdb的參數(shù)kgdboc=ttyS0,115200
kgdboc 的意思是 kgdb over console,這里將kgdb連接的console設(shè)置為ttyS0,波特率為115200,如果不在內(nèi)核啟動項(xiàng)中配置該參數(shù),可以在進(jìn)入系統(tǒng)后執(zhí)行命令:
echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc   
第二個啟動項(xiàng),同第一個使用同一個內(nèi)核,只是添加了kgdbwait參數(shù)
kgdbwait 使 kernel 在啟動過程中等待 gdb 的連接。

我的啟動菜單如下:
CentOS(2.6.26)
CentOS(2.6.26)Wait...(kernel debug)
CentOS-4 i386(2.6.9-67.ELsmp)
調(diào)用內(nèi)核模塊,就選擇第一個,如果要調(diào)試內(nèi)核啟動過程,選擇第二個.
5.內(nèi)核調(diào)試
重啟Server,通過啟動菜單第二項(xiàng)CentOS(2.6.26)Wait...(kernel debug)進(jìn)入系統(tǒng). 只到系統(tǒng)出現(xiàn):

     kgdb: Registered I/O driver kgdboc
     kgdb: Waiting for connection from remote gdb  
進(jìn)入Client系統(tǒng).

cd /usr/src/linux  
gdb vmlinux 
啟動gdb開始準(zhǔn)備調(diào)試:輸出大致如下:

GNU gdb Red Hat Linux (6.3.0.0-1.153.el4rh)
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-redhat-linux-gnu"...Using host libthread_db
library "/lib/tls/libthread_db.so.1" (gdb) set remotebaud 115200
(gdb) target remote /dev/ttyS0
注意:有的文章講:因?yàn)関mware的named piped不能被gdb直接使用,需要使用 socat -d -d /tmp/com_1 /dev/ttyS0轉(zhuǎn)換,然后使用轉(zhuǎn)換后的設(shè)備. socat需要自己下載安裝. 但在我的環(huán)境中,直接使用并沒有出錯.
執(zhí)行該命令后輸出如下:
Remote debugging using /dev/ttyS0
kgdb_breakpoint () at kernel/kgdb.c:1674
1674  wmb(); /*Sync point after breakpoint */
warning: shared library handler failed to enable breakpoint看到上面的內(nèi)容說明已經(jīng)連接成功,但Server上依然是假死狀態(tài),這時你可以像使用本地gdb一樣設(shè)置斷點(diǎn)(break),單步執(zhí)行(step),或其它命令.
(gdb) cont
繼續(xù)執(zhí)行,Server就繼續(xù)下面的系統(tǒng)初始化了.
系統(tǒng)啟動完成后的內(nèi)核調(diào)試:
    進(jìn)入Server后,執(zhí)行命令

echo g > /proc/sysrq-trigger
系統(tǒng)同樣會中斷,進(jìn)入假死狀態(tài),等待遠(yuǎn)程gdb的連接.KGDB可能會輸出如下信息:
SysRq: GDB    上面的命令(echo g > /proc/sysrq-trigger)可以有一個快捷鍵(ALT-SysRq-G)代替,當(dāng)然前提是你編譯內(nèi)核時需要選中相關(guān)選項(xiàng),并且需要修改配置文件:/etc/sysctl.conf , 我用了一下,不太好用.因?yàn)橛械淖烂嫦到y(tǒng)中PrintScreen/SysRq鍵是用于截屏的.所以還是直接用命令來的好!
我在~/.bashrc中添加了一句(添加完保存后,要執(zhí)行source ~/.bashrc應(yīng)用該配置):
alias debug='echo g > /proc/sysrq-trigger'
之后就可以直接輸入debug來使內(nèi)核進(jìn)入調(diào)試狀態(tài).
Server進(jìn)入調(diào)試狀態(tài)后,轉(zhuǎn)換到Client系統(tǒng),重復(fù)上面的步驟.
6. Linux內(nèi)核模塊(設(shè)備驅(qū)動)的調(diào)試
編寫內(nèi)核模塊,及Makefile
      我使用的例子是Linux Device Driver 3中的例子scull. 你可以從這里下載LDD3的所有例子程序.

進(jìn)入Client系統(tǒng),解壓example.tar.gz,將其中的example/scull目錄拷貝到/root/scull
然后執(zhí)行:
cd /root/scull  
make 
編譯應(yīng)該會出錯,因?yàn)長inux Device Driver 3的例子程序是基于2.6.10內(nèi)核的,請參靠下面的說明修改這些錯誤:
編譯scull驅(qū)動,完成后,scull目錄應(yīng)該多出了scull.ko及其它中間文件.
scp scull.ko root@targetIp:/root/
將scull.ko模塊文件拷貝到Server上.系統(tǒng)應(yīng)該會提示輸入密碼:

root@targetIp's password:輸入正確密碼后,應(yīng)該能看到如下信息,表示復(fù)制成功了:
scull.ko    100%  258k 258.0kb/s 00:00進(jìn)入Server系統(tǒng)輸入:
cd /root/  
insmod scull.ko 
加載scull模塊.
cat /sys/module/globalmem/sections/.text 
顯示scull模塊的.text段地址.運(yùn)行該命令后,會返回一個16進(jìn)制的地址,如:
0xd099a000echo g > /proc/sysrq-trigger 
現(xiàn)在Server系統(tǒng)變成等待狀態(tài).
再次進(jìn)入Client系統(tǒng):
cd /usr/src/linux  
gdb vmlinux  
(gdb) set remotebaud 115200  
(gdb) target remote /dev/ttyS0
Remote debugging using /dev/ttyS0
kgdb_breakpoint () at kernel/kgdb.c:1674
1674  wmb(); /*Sync point after breakpoint */
warning: shared library handler failed to enable breakpoint出現(xiàn)上面的信息表示連接成功,但此時還不可以設(shè)置斷點(diǎn).我試了N次,現(xiàn)在設(shè)置端點(diǎn)后,無論Server上對scull做什么操作,Client上的gdb都不會停止.也有人說這是gdb的BUG,gdb無法正常解析內(nèi)核模塊的符號信息. 說是下載kgdb網(wǎng)站上的gdbmod可以解決該問題,但我試了之后發(fā)現(xiàn)根本沒有用. 所以只能通過命令手動加載相關(guān)符號信息:
(gdb) add-symbol-file /root/scull/scull.ko 0xd099a000
注意: 0xd099a000地址是在上面獲取的,命令輸入完了,系統(tǒng)會有如下提示信息(第二行后面的y是自己輸入的:
add symbol table from file "/root/scull/scull.ko" at .text_addr = 0xd099a000
(y or n)y
Reading symbols from /root/scull/scull.ko...done.        (gdb)break scull_write

Breakpoint 1 at 0xd099a2d9: file /root/scull/main.c,line 338.(gdb)break scull_read

Breakpoint 2 at 0xd099a1a2: file /root/scull/main.c,line 294(gdb)cont  

ContinuingClient上的工作暫停,回到Server系統(tǒng)上:
Server現(xiàn)在處于運(yùn)行狀態(tài),在Server上運(yùn)行下面的命令:
cat /proc/devices | grep "scull"
查看scull模塊分配的major.我的系統(tǒng)中返回如下:
253 scull
253 scullp
253 scullamknod /dev/scull c 253 0
253是剛才查詢到的版本號.
echo "this is a test " > /dev/scull
測試輸入函數(shù):scull_write. 該命令輸入完成后,進(jìn)程應(yīng)該會停下來, 請切換到Client系統(tǒng).
cat /dev/scull
測試輸出函數(shù):scull_read. 該命令輸入完成后,進(jìn)程應(yīng)該會停下來, 請切換到Client系統(tǒng).
回到Client系統(tǒng),應(yīng)該能看到gdb的輸出信息:

Breakpoint 1, scull_write (filp=0xce5870c0,buf=0xb7f44000
      "this is a test\nias | /usr/bin/which --tty-only --read-alias
      --show-dot --show-tilde'\n",count=15,f_pos=0xce5c5f9c)
  at /root/scull/main.c:338
338   {   
(gdb)_  現(xiàn)在就可以像調(diào)試本地程序一樣調(diào)試scull.ko模塊了.
以同樣的方法也可以調(diào)試其它函數(shù).(初始化函數(shù)暫時沒想到辦法調(diào)試,因?yàn)槭褂眠@種方法需要先加載后,才可以進(jìn)行調(diào)試)

你可以自由使用和轉(zhuǎn)載本文檔,轉(zhuǎn)載時請注明出處. (jie123108@163.com)

如果可以,我想寫一個腳本自動完成這個添加符號文件的過程,簡化調(diào)試過程.
 
Linux Device Driver 3rd中的scull 例程在2.6.26上編譯出錯的問題
1。scripts/Makefile.build:46: *** CFLAGS was changed in "examples/scull/Makefile". Fix it to use EXTRA_CFLAGS。 停止。
    解決方法:將 Makefile 中的 CFLAGS 改為 EXTRA_CFLAGS
2. examples/scull/main.c:17:26: error: linux/config.h: 沒有該文件或目錄
    解決方法: 將 main.c 中的這條 include 語句注釋掉。
3. examples/scull/access.c: 在函數(shù)‘scull_u_open’中:    examples/scull/access.c:107: 錯誤: 提領(lǐng)指向不完全類型的指針
    解決方法:access.c 中添加:#include <linux/sched.h>
4. examples/scull/access.c: 在函數(shù)‘scull_access_setup’中:
    examples/scull/access.c:355: 警告: 格式字符串不是一個字面字符串而且沒有待格式化的實(shí)參
    解決方法:將  kobject_set_name(&dev->cdev.kobj,  devinfo->name); 改為:
                   kobject_set_name(&dev->cdev.kobj, "%s", devinfo->name);
因?yàn)?kobject_set_name 有一個像 printf 一樣的參數(shù)表。
補(bǔ)充 : 老外作的改動http://www.cs.fsu.edu/~baker/devices/lxr/source/2.6.25/ldd-examples/基本上已經(jīng)可以編譯了
摘錄自: <<Linux Device Driver 3 中的代碼在 2.6.27 中編譯不能通過的問題>>
參考資料:
        <<Using 2.6.26 Linux Kernel Debugger (KGDB) with VM>>
        <<VMware環(huán)境下用kgdb調(diào)試內(nèi)核>>
        <<Using 2.6.26 Linux Kernel Debugger (KGDB) with VM>>
 


本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/jie12310/archive/2009/09/18/4564853.aspx

posted on 2010-05-01 21:06 小默 閱讀(1838) 評論(1)  編輯 收藏 引用 所屬分類: Linux

評論

# re: 【轉(zhuǎn)】在VMware環(huán)境下使用KGDB調(diào)試Linux內(nèi)核及內(nèi)核模塊 2010-05-15 19:17

精彩詳細(xì)  回復(fù)  更多評論   

導(dǎo)航

統(tǒng)計(jì)

留言簿(13)

隨筆分類(287)

隨筆檔案(289)

漏洞

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费在线看成人av| 依依成人综合视频| 欧美在线三区| 久久国产精品一区二区三区四区| 亚洲综合视频在线| 欧美伊久线香蕉线新在线| 久久久久成人精品| 欧美精品成人一区二区在线观看 | 牛人盗摄一区二区三区视频| 欧美成人国产| 99pao成人国产永久免费视频| 亚洲午夜精品国产| 久久久久国产精品一区| 欧美日本网站| 国产日韩亚洲欧美综合| 91久久久精品| 亚洲一区二区三区在线观看视频 | 亚洲片国产一区一级在线观看| 99精品福利视频| 99国内精品久久| 午夜精品久久一牛影视| 久久综合亚州| 夜夜嗨av一区二区三区中文字幕| 欧美亚洲网站| 欧美另类人妖| 在线不卡欧美| 午夜精品久久久久久久99热浪潮| 另类av一区二区| 中文日韩欧美| 欧美成人国产一区二区 | 中文网丁香综合网| 另类天堂av| 国产精品免费观看在线| 亚洲欧洲另类国产综合| 久久精品夜色噜噜亚洲aⅴ| 亚洲精品欧美专区| 久久一区二区三区四区| 国产乱码精品一区二区三区不卡 | 欧美精品日韩一本| 悠悠资源网久久精品| 午夜精品福利在线| 亚洲一区中文字幕在线观看| 久久国产欧美精品| 国产精品入口夜色视频大尺度| 亚洲黄色免费| 久久人体大胆视频| 亚洲欧美一区二区三区久久 | 欧美日韩中文在线| 亚洲久久一区| 欧美国产一区二区三区激情无套| 欧美一区二区三区四区高清| 国产精品无人区| 午夜在线不卡| 亚洲欧美日本视频在线观看| 国产精品毛片a∨一区二区三区|国| 99精品国产热久久91蜜凸| 欧美成人一区二免费视频软件| 久久av一区| 国语自产精品视频在线看一大j8 | 亚洲深夜福利视频| 亚洲精选国产| 欧美日韩精品免费在线观看视频| 亚洲乱码久久| 亚洲伦理在线免费看| 欧美日韩精品系列| 亚洲夜间福利| 亚洲欧美日韩成人| 狠狠狠色丁香婷婷综合久久五月| 久久琪琪电影院| 久久人人爽人人| 日韩视频免费观看高清在线视频| 亚洲黄一区二区| 欧美日本不卡视频| 亚洲视频在线一区观看| 一区二区三区日韩在线观看| 国产精品美女久久久久久免费| 欧美一区二区三区视频| 老司机一区二区| 欧美**字幕| 亚洲小说欧美另类社区| 亚洲午夜极品| 影音先锋久久| 亚洲肉体裸体xxxx137| 欧美午夜在线| 久热精品视频在线观看| 欧美精品精品一区| 亚欧美中日韩视频| 美日韩精品视频| 亚洲欧美久久久| 久久免费视频一区| 亚洲一品av免费观看| 欧美在线观看网址综合| 亚洲精品色图| 香蕉免费一区二区三区在线观看| 久久激情综合网| 午夜亚洲视频| 激情一区二区| 一区二区高清在线| 国内精品一区二区三区| 亚洲国产成人午夜在线一区| 国产精品二区三区四区| 免费成人av| 欧美亚洲不卡| 欧美激情第9页| 国产欧美不卡| 99精品欧美一区二区三区| 激情久久综合| 午夜精品久久久久久久99樱桃| 亚洲精品乱码久久久久久日本蜜臀| 亚洲字幕一区二区| 一区二区三区久久网| 久久精品亚洲精品国产欧美kt∨| 亚洲一区二区三区影院| 欧美成人久久| 麻豆精品视频在线观看| 国产嫩草一区二区三区在线观看| 亚洲欧洲精品一区二区三区| 一区在线视频| 欧美亚洲一区在线| 午夜精品久久久久久久99黑人| 欧美激情一级片一区二区| 女生裸体视频一区二区三区| 国产亚洲网站| 亚洲欧美日韩国产综合在线| 亚洲网站视频福利| 欧美日本亚洲韩国国产| 亚洲经典三级| 99国产精品久久久久久久成人热| 另类春色校园亚洲| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲精品免费一二三区| 久久久亚洲国产天美传媒修理工 | 亚洲精品欧美| 在线成人黄色| 久久综合九色欧美综合狠狠| 久久亚洲国产精品日日av夜夜| 国产亚洲在线观看| 久久精品99久久香蕉国产色戒| 欧美在线免费观看视频| 国产人成一区二区三区影院| 亚洲欧美日韩综合aⅴ视频| 欧美亚洲三区| 国产资源精品在线观看| 久久精品首页| 久久久高清一区二区三区| 亚洲精品免费在线| 欧美大片免费久久精品三p| 欧美激情一区二区三区全黄| 最新亚洲电影| 欧美久久视频| 在线综合亚洲欧美在线视频| 亚洲女女女同性video| 国产欧美一区二区精品忘忧草| 性色av一区二区三区红粉影视| 欧美在线视频一区二区三区| 黄色免费成人| 欧美高清在线| av成人免费| 久久久蜜桃精品| 亚洲精品国产品国语在线app | 午夜一区二区三区在线观看| 久久精品亚洲一区二区三区浴池| 极品少妇一区二区三区| 欧美r片在线| 亚洲婷婷综合色高清在线| 久久久久久一区| 日韩亚洲成人av在线| 国产精品夜夜夜一区二区三区尤| 久久精品国产一区二区电影 | 久久精品视频va| 亚洲国产一区二区在线| 亚洲欧美日韩一区二区| 伊人春色精品| 国产精品久久久久久一区二区三区| 欧美一区二区精美| 亚洲清纯自拍| 久久久久高清| 在线视频你懂得一区| 狠狠入ady亚洲精品| 欧美日本一区二区三区| 欧美伊人久久久久久午夜久久久久| 欧美二区乱c少妇| 欧美一区免费| 国产精品99久久不卡二区| 黄色亚洲免费| 国产精品久久久久久久久久免费| 麻豆精品网站| 欧美一区免费视频| 99亚洲视频| 亚洲人www| 亚洲电影天堂av| 老司机免费视频一区二区三区 | 欧美国产日本在线| 欧美一区午夜精品| 一区二区欧美日韩| 亚洲人成艺术| 亚洲成人自拍视频| 黄色欧美成人| 国产综合18久久久久久| 国产精品亚洲网站|