日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

gdb+gdbserver

發(fā)布時間:2023/11/27 生活经验 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gdb+gdbserver 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內容摘要?遠程調試環(huán)境由宿主機GDB和目標機調試stub共同構成,兩者通過串口或TCP連接。使用 GDB標準程串行協(xié)議協(xié)同工作,實現對目標機上的系統(tǒng)內核和上層應用的監(jiān)控和調試功能。調試stub是嵌入式系統(tǒng)中的一段代碼,作為宿主機GDB和目標機調試程序間的一個媒介而存在。 就目前而言,嵌入式Linux系統(tǒng)中,主要有三種遠程調試方法,分別適用于不同場合的調試工作:用ROM Monitor調試目標機程序、用KGDB調試系統(tǒng)內核和用gdbserver調試用戶空間程序。這三種調試方法的區(qū)別主要在于,目標機遠程調試stub 的存在形式的不同,而其設計思路和實現方法則是大致相同的。 而我們最常用的是調試應用程序。就是采用gdb+gdbserver的方式進行調試。在很多情況下,用戶需要對一個應用程序進行反復調試,特別是復雜的程序。采用GDB方法調試,由于嵌入式系統(tǒng)資源有限性,一般不能直接在目標系統(tǒng)上進行調試,通常采用gdb+gdbserver的方式進行調試。

?

gdb的簡單使用

GDB是GNU開源組織發(fā)布的一個強大的UNIX下的程序調試工具。或許,各位比較喜歡那種圖形界面方式的,像VC、BCB等IDE的調試,但如果你是在 UNIX平臺下做軟件,你會發(fā)現GDB這個調試工具有比VC、BCB的圖形化調試器更強大的功能。所謂“寸有所長,尺有所短”就是這個道理。一般來說,GDB主要幫忙你完成下面四個方面的功能:????? 1、啟動你的程序,可以按照你的自定義的要求隨心所欲的運行程序。
???? 2、可讓被調試的程序在你所指定的調置的斷點處停住。(斷點可以是條件表達式)
???? 3、當程序被停住時,可以檢查此時你的程序中所發(fā)生的事。
???? 4、動態(tài)的改變你程序的執(zhí)行環(huán)境。從上面看來,GDB和一般的調試工具沒有什么兩樣,基本上也是完成這些功能,不過在細節(jié)上,你會發(fā)現GDB這個調試工具的強大,大家可能比較習慣了圖形化的調試工具,但有時候,命令行的調試工具卻有著圖形化工具所不能完成的功能。讓我們一一看來。
一個調試示例
—————— 源程序:tst.c?????? 1 #include <stdio.h>
????? 2
????? 3 int func(int n)
????? 4 {
????? 5????????? int sum=0,i;
????? 6????????? for(i=0; i<n; i++)
????? 7????????? {
????? 8????????????????? sum+=i;
????? 9????????? }
???? 10????????? return sum;
???? 11 }
???? 12
???? 13
???? 14 main()
???? 15 {
???? 16????????? int i;
???? 17????????? long result = 0;
???? 18????????? for(i=1; i<=100; i++)
???? 19????????? {
???? 20????????????????? result += i;
???? 21????????? }
???? 22
???? 23???????? printf("result[1-100] = %d \\n", result );
???? 24???????? printf("result[1-250] = %d \\n", func(250) );
???? 25 } 編譯生成執(zhí)行文件:(Linux下)
???? hchen/test> cc -g tst.c -o tst 使用GDB調試: hchen/test>?gdb?tst?? <---------- 啟動GDB
GNU?gdb?5.1.1
Copyright 2002 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-suse-linux"...
(gdb) l????? <-------------------- l命令相當于list,從第一行開始例出原碼。
1???????? #include <stdio.h>
2
3???????? int func(int n)
4???????? {
5???????????????? int sum=0,i;
6???????????????? for(i=0; i<n; i++)
7???????????????? {
8???????????????????????? sum+=i;
9???????????????? }
10??????????????? return sum;
(gdb)??????? <-------------------- 直接回車表示,重復上一次命令
11??????? }
12
13
14??????? main()
15??????? {
16??????????????? int i;
17??????????????? long result = 0;
18??????????????? for(i=1; i<=100; i++)
19??????????????? {
20??????????????????????? result += i;????
(gdb) break 16???? <-------------------- 設置斷點,在源程序第16行處。
Breakpoint 1 at 0x8048496: file tst.c, line 16.
(gdb) break func?? <-------------------- 設置斷點,在函數func()入口處。
Breakpoint 2 at 0x8048456: file tst.c, line 5.
(gdb) info break?? <-------------------- 查看斷點信息。
Num Type??????????? Disp Enb Address???? What
1??? breakpoint????? keep y??? 0x08048496 in main at tst.c:16
2??? breakpoint????? keep y??? 0x08048456 in func at tst.c:5
(gdb) r??????????? <--------------------- 運行程序,run命令簡寫
Starting program: /home/hchen/test/tst Breakpoint 1, main () at tst.c:17???? <---------- 在斷點處停住。
17??????????????? long result = 0;
(gdb) n?????????? <--------------------- 單條語句執(zhí)行,next命令簡寫。
18??????????????? for(i=1; i<=100; i++)
(gdb) n
20??????????????????????? result += i;
(gdb) n
18??????????????? for(i=1; i<=100; i++)
(gdb) n
20??????????????????????? result += i;
(gdb) c?????????? <--------------------- 繼續(xù)運行程序,continue命令簡寫。
Continuing.
result[1-100] = 5050??????? <----------程序輸出。 Breakpoint 2, func (n=250) at tst.c:5
5???????????????? int sum=0,i;
(gdb) n
6???????????????? for(i=1; i<=n; i++)
(gdb) p i???????? <--------------------- 打印變量i的值,print命令簡寫。
$1 = 134513808
(gdb) n
8???????????????????????? sum+=i;
(gdb) n
6???????????????? for(i=1; i<=n; i++)
(gdb) p sum
$2 = 1
(gdb) n
8???????????????????????? sum+=i;
(gdb) p i
$3 = 2
(gdb) n
6???????????????? for(i=1; i<=n; i++)
(gdb) p sum
$4 = 3
(gdb) bt???????? <--------------------- 查看函數堆棧。
#0?? func (n=250) at tst.c:5
#1?? 0x080484e4 in main () at tst.c:24
#2?? 0x400409ed in __libc_start_main () from /lib/libc.so.6
(gdb) finish???? <--------------------- 退出函數。
Run till exit from #0?? func (n=250) at tst.c:5
0x080484e4 in main () at tst.c:24
24?????????????? printf("result[1-250] = %d \n", func(250) );
Value returned is $6 = 31375
(gdb) c????? <--------------------- 繼續(xù)運行。
Continuing.
result[1-250] = 31375???? <----------程序輸出。 Program exited with code 027. <--------程序退出,調試結束。
(gdb) q????? <--------------------- 退出gdb
hchen/test>

gdb+gdbserver方式進行ARM程序調試

【摘要】:本文首先介紹了gdb+gdbserver相關的概念,然后介紹了其下載、編譯、安裝等過程;接著介紹了利用gdb+gdbserver調試應用程序的流程及實例等;最后分析了下gdb+gdbserver安裝過程中的常見問題。

【關鍵詞】:gdb,gdbserver,遠程調試

目錄

一、gdb+gdbserver總體介紹... 1

二、源代碼下載... 1

三、配置編譯及安裝下載... 1

四、gdb+gdbserver nfs調試流程... 2

五、如何利用串口調試... 3

六、實戰(zhàn)調試... 3

七、linux下安裝gdbserver問題... 5

一、gdb+gdbserver總體介紹

遠程調試環(huán)境由宿主機GDB和目標機調試stub共同構成,兩者通過串口或TCP連接。使用?GDB標準程串行協(xié)議協(xié)同工作,實現對目標機上的系統(tǒng)內核和上層應用的監(jiān)控和調試功能。調試stub是嵌入式系統(tǒng)中的一段代碼,作為宿主機GDB和目標機調試程序間的一個媒介而存在。

就目前而言,嵌入式Linux系統(tǒng)中,主要有三種遠程調試方法,分別適用于不同場合的調試工作:用ROM Monitor調試目標機程序、用KGDB調試系統(tǒng)內核和用gdbserver調試用戶空間程序。這三種調試方法的區(qū)別主要在于,目標機遠程調試stub?的存在形式的不同,而其設計思路和實現方法則是大致相同的。

而我們最常用的是調試應用程序。就是采用gdb+gdbserver的方式進行調試。在很多情況下,用戶需要對一個應用程序進行反復調試,特別是復雜的程序。采用GDB方法調試,由于嵌入式系統(tǒng)資源有限性,一般不能直接在目標系統(tǒng)上進行調試,通常采用gdb+gdbserver的方式進行調試。

二、源代碼下載

嵌入式Linux的GDB調試環(huán)境由Host和Target兩部分組成,Host端使用arm-linux-gdb,Target Board端使用gdbserver。這樣,應用程序在嵌入式目標系統(tǒng)上運行,而gdb調試在Host端,所以要采用遠程調試(remote)的方法。進行GDB調試,目標系統(tǒng)必須包括gdbserver程序(在主機上正對硬件平臺編譯成功后下載到目標機上),宿主機也必須安裝GDB?程序。一般Linux發(fā)行版中都有一個可以運行的GDB,但開發(fā)人員不能直接使用該發(fā)行版中的GDB來做遠程調試,而要獲取GDB的源代碼包,針對arm?平臺作一個簡單配置,重新編譯得到相應GDB。GDB的源代碼包可以從

http://www.gnu.org/software/gdb/download/

http://ftp.gnu.org/gnu/gdb/?? 211.95.105.202:3128可以上去的,所有的版本都有啊

http: //ftp.cs.pu.edu.tw/linux/sourceware/gdb/releases/下載

ftp://ftp.gnu.org/gnu/gdb

外網的ftp我經常上不去,國內常見的開源社區(qū)的下載頻道通常都有下載的http://download.chinaunix.net/download/0004000/3482.shtml,最新版本為gdb-6.5.tar.bz2。下載到某個目錄,筆者下載到/opt/。但要注意,gdb的版本需要和croostool?相匹配。

三、配置編譯及安裝下載

下載完后,進入/opt/目錄,配置編譯步驟如下:

?

#tar jxvf?gdb-6.5-tar-bz2

#cd?gdb-6.5

#./configure --target=arm-linux --prefix=/usr/local/arm-gdb?–v

(--target配置gdb的目標平臺,--prefix配置安裝路徑,當然其他路徑也可以,?.跟下面配置一致即可,須在環(huán)境變量中聲明,啟動arm-linux-gdb需要,可更改/etc/profile或~/.bash_profile或~/.bashrc,添加export PATH=$PATH:/usr/local/arm-gdb/bin,這樣可以找到路徑)

#make

#make install

(生成arm-linux-gdb,并存入/usr/local/arm-gdb?/bin/,查詢確認下)

也可以啟動arm-linux-gdb,若成功,則證明安裝無誤

進入gdb/gdbserver目錄:

[root@dding gdbserver]# pwd

/opt/gdb-6.5/gdb/gdbserver

[root@dding gdbserver]#?必須在gdbserver目錄下運行配置命令,此時才能用相對路徑

#./configure --target=arm-linux --host=arm-linux

(--target=arm-linux表示目標平臺,--host表示主機端運行的是arm-linux-gdb,不需要配置—prefix,因為gdbserver不在主機端安裝運行)

#make CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc

(這一步要指定你自己的arm-linux-gcc的絕對位置,我試過相對的不行,提示make:?arm-linux-gcc: Command not found,可好多人都用的相對路徑,即直接賦值arm-linux-gcc,可采取make時傳遞參數,也可以直接修改gdbserver目錄下的Makefile文件中的環(huán)境變量CC)

?

?

沒有錯誤的話就在gdbserver目錄下生成gdbserver可執(zhí)行文件,注意此時要更改其屬性,否則可能會出現無法訪問的情況,chmod 777 gdbserver將其更改為任何人都可以讀寫執(zhí)行;使用arm-linux-strip命令處理一下gdbserver,將多余的符號信息刪除,可讓elf文件更精簡,通常在應用程序的最后發(fā)布時使用;然后把它燒寫到flash的根文件系統(tǒng)分區(qū)的/usr/bin(在此目錄下,系統(tǒng)可以自動找到應用程序,否則必須到gdbserver所在目錄下運行之),或通過nfs mount的方式都可以。只要保證gdbserver能在開發(fā)板上運行就行。

四、gdb+gdbserver?nfs調試流程

下面就可以用gdb+gdbserver調試我們開發(fā)板上的程序了。在目標板上運行?gdbserver,其實就是在宿主機的minicom下。我是在minicom下#mount 192.168.2.100:/ /tmp后做的(這里參數-o nolock可以不加,不加這一步執(zhí)行得反而更快些),hello和gdbserver都是位于Linux根目錄下,把主機根目錄掛在到開發(fā)板的/tmp?目錄下。

要進行gdb調試,首先要在目標系統(tǒng)上啟動gdbserver服務。在gdbserver所在目錄下輸入命令:

(minicom下)

#cd /tmp

#./gdbserver 192.168.2.100:2345 hello

192.168.2.100為宿主機IP,在目標系統(tǒng)的2345端口(你也可以設其他可用的值,當然必須跟主機的gdb一致)開啟了一個調試進程,hello為要調試的程序(必須-g加入調試信息)。

出現提示:

Process /tmp/hello created: pid=80

Listening on port 2345

(另一個終端下)

#cd /

#export PATH=$PATH:/usr/local/arm-gdb/bin

#arm-linux-gdb?hello

最后一行顯示:This?GDB?was configured as “--host=i686-pc-linux-gnu,--target=arm-linux”...,如果不一致說明arm-linux-gdb有問題

說明此gdb在X86的Host上運行,但是調試目標是ARM代碼。

(gdb) target remote 192.168.2.223:2345

(192.168.2.223為開發(fā)板IP)

出現提示:

Remote debugging using 192.168.2.223:2345

[New thread 80]

[Switching to thread 80]

0x40002a90 in ??()

同時在minicom下提示:

Remote debugging from host 192.168.2.100

(gdb)

注意:你的端口號必須與gdbserver開啟的端口號一致,這樣才能進行通信。建立鏈接后,就可以進行調試了。調試在Host端,跟gdb調試方法相同。注意的是要用“c”來執(zhí)行命令,不能用“r”。因為程序已經在Target Board上面由gdbserver啟動了。結果輸出是在Target Board端,用超級終端查看。連接成功,這時候就可以輸入各種GDB命令如list、run、next、step、break等進行程序調試了。

以上針對通過nfs mount和tftp的方式,只能在主機上調試好后下載到開發(fā)板上運行,如果有錯誤要反復這個過程,繁瑣不說,有些程序只能在開發(fā)板上調試。所以筆者采用了gdbserver的遠程調試方式。希望對大家調試程序有用!

五、如何利用串口調試

如果你用串口1調試hello的話,你就要現在板子上運行命令:

gdbserver hello /dev/ttyS0?(詳情可以參考gdbserver目錄下的readme文件)

這時gdbserver就在等待gdb的應答信號了。

然后在pc機上運行命令:

xxx-linux-gdb?hello

在xxx-linux-gdb里敲入入下命令:

set remotedevice /dev/ttyS0(這里設置串口1)

set remote baud 9600?(這里設置串口波特率)

set debug remote 1(可選)

target remote /dev/ttyS0

操作到這兒,gdb就應該和gdbserver聯(lián)系上了。

六、實戰(zhàn)調試

1.編輯文件

# vi gdbtest.c

1 #include <stdio.h>

2

3 int

4 func(int n){

5???? int?? sum=0, i;

6???? for (i=0; i<n; i++){

7???????? sum += i;

8???? }

9???? return sum;

10 }

11

12 int

13 main(void)

14 {

15??? int?? i;

16??? long result = 0;

17??? for (i=0; i<=100; i++){

18??????? result += i;

19??? }

20?

21??? printf("result[1-100] = %d \n", result);

22??? printf("resutl[1-225] = %d \n", func(255));

23

24??? return 0;

25 }

#?arm-linux-gcc -g gdbtest.c -o gdbtest???????? //?交叉編譯

2.下載文件到目標板: gdbtest和gdbserver

假設?host pc ip:192.168.1.45

???? board?? ip:192.168.1.180???

將文件拷貝到目標板上:

先將gdbtest和gdbserver兩個文件拷貝到主機的/tftpboot目錄下,此時系統(tǒng)主機和目標機都必須能夠支持nfs

在目標板的Linux中運行:

#mount 192.168.1.108:/tftpboot /mnt/nfs

#cd /mnt/nfs

#ls

看是否有gdbtest和gdbserver兩個文件。

3.運行調試

client board:

#./gdbserver 192.168.1.45:1234 gdbtest? //?目標板上運行gdbtest?監(jiān)聽端口1234

[root@AT91RM9200DK?arm]$./gdbserver 192.168.0.12:2345 mainparacarm

./gdbserver: error in loading shared libraries: libthread_db.so.1: cannot open [root@AT91RM9200DK?arm]$

host pc:

#cd /usr/local/arm-gdb/bin/?以便能夠運行arm-linux-gdb,但是無此必要,可在環(huán)境變量中設置此路徑即可。

#copy gdbtest /usr/local/arm-gdb/bin/?? //?將前面編譯的文件gdbtest拷貝到此目錄

#./arm-linux-gdb?gdbtest

(gdb)target remote 192.168.1.180:1234?? //?連接到開發(fā)板成功后就可以

進行調試

(gdb)list?? or l

(gdb)break func

(gdb)break 22

(gdb)info br???

(gdb)continue?? or c??? //?這里不能用?run

(gdb)next?? or n

(gdb)print or p??? result?

(gdb) finish??????? //?跳出func函數

(gdb) next

(gdb) quit

建立連接后進行gdb遠程調試和gdb本地調試方法相同

七、?linux下安裝gdbserver問題

toolchain version:???gdb的版本可能和交叉編譯器有很大的關系

gcc-3.3.2

glibc-2.2.5

binutils-2.15?此為croostool 3.3.2

安裝步驟:
下載解壓gdb-6.6
#cd?gdb-6.6
#./configure --target=arm-linux --prefix=/usr/local/arm-gdb?–v

#make?&?make install

OK,然后:

#export PATH=$PATH:/usr/local/arm-gdb

進入gdbserver目錄:

#./configure --target=arm-linux --host=arm-linux

#make CC=/usr/local/armv5l/3.3.2/bin/armv5l-linux-gcc

出錯:

/usr/local/armv5l/3.3.2/bin/armv5l-linux-gcc -c -Wall -g -O2 -I. -I. -I./../regformats -I./../../include -I../../bfd -I./../../bfd?linux-arm-low.c

linux-arm-low.c:35:21: sys/reg.h:?沒有那個文件或目錄

make: *** [linux-arm-low.o]?錯誤?1

然后把/usr/include/sys/reg.h copy到/usr/local/armv5l-2.6.x/3.3.2/armv5l-linux/include/sys/reg.h,即將該文件拷貝到交叉編譯器的include目錄下,再make,顯示錯誤:

/usr/local/armv5l/3.3.2/bin/armv5l-linux-gcc -c -Wall -g -O2 -I. -I. -I./../regformats -I./../../include -I../../bfd -I./../../bfd thread-db.c

thread-db.c: In function `thread_db_err_str':

thread-db.c:95: error: `TD_VERSION' undeclared (first use in this function)

thread-db.c:95: error: (Each undeclared identifier is reported only once

thread-db.c:95: error: for each function it appears in.)

thread-db.c: In function `thread_db_get_tls_address':

thread-db.c:336: warning: implicit declaration of function `td_thr_tls_get_addr'

thread-db.c:336: warning: cast to pointer from integer of different size

thread-db.c:340: warning: cast from pointer to integer of different size

make: *** [thread-db.o]?錯誤?1

本想繼續(xù)fix error,但是感覺不太對,請問各位,是什么原因呢?

是不是CC的target寫錯了?應該是arm-linux還是armv5l-linux?

1.

make: *** [linux-arm-low.o] Error 1

[root@dding gdbserver]#

[root@dding gdbserver]# gedit config.h

/* Define to 1 if you have the <sys/reg.h> header file. */

/*define HAVE_SYS_REG_H 1? */

/*have no? <sys/reg.h> header file. so undefine 20070402 dding? */

2.

thread-db.c: In function `thread_db_err_str':?gdb6.5

thread-db.c:95: `TD_VERSION' undeclared (first use in this function)

[root@dding gdbserver]# gedit config.h

???? 94 #ifdef HAVE_TD_VERSION

???? 95???? case TD_VERSION:

???? 96?????? return "version mismatch between libthread_db and libpthread";

???? 97 #endif

/* Define if TD_VERSION is available. */

/*#define HAVE_TD_VERSION 1? */

/*have no? TD_VERSION. so undefine 20070402 dding? */

gdb6.1?沒有此問題

3.

[root@AT91RM9200DK?arm]$./gdbserver 192.168.0.12:2345 mainparacarm??gdb6.5

./gdbserver: error in loading shared libraries: libthread_db.so.1: cannot open

[root@AT91RM9200DK?arm]$./gdbserver 192.168.0.14:2345 mainparacarm??gdb6.1

./gdbserver: error in loading shared libraries: libthread_db.so.1: cannot open shared object file: No such file or directory

我已經加了libthread_db.so.1共享庫為什么還打不開呢????共享庫和cpu類型有關嗎??
gdbserver: error while loading shared libraries: libthread_db.so.1: cannot open?
shared object file: No such file or director

****編譯GDB的時候搞成靜態(tài)的就好了.我想編譯選項里應該有.?要不你就在Makefile里加上CFLAGS += -static
LDFLAGS += -static
這兩個的其中一個應該就可以了,不過還是兩個都加上吧.

***/lib there is no? libthread_db.so.1 Can i use nfs to copy? libthread_db.so.1 to /lib? But now i cannot find this file, and is there any for cross 3.3.2?

libpthread-0.8.so

libpthread.so????????? libpthread.so.0??????? libresolv-2.1.3.so

libresolv.so.2???????? libstdc++.a.2.10.0?????libtermcap.so.2

[root@AT91RM9200DK?arm]$cp libthread_db-1.0.so libthread_db.so.1

[root@AT91RM9200DK?arm]$cp libthread_db.so.1 /lib/

[root@AT91RM9200DK?arm]$./gdbserver 192.168.0.12:2345 mainparacarm

./gdbserver: /lib/libc.so.6: version `GLIBC_2.2' not found (required by /lib/li)

難道目前的gdb?6.5?版本太高,需要內核版本和交叉編譯器與之匹配?實在不行,就試試低版本的gdb

參考文檔

http://blog.chinaunix.net/u/27802/showart_211833.html

http://litttlebylittle.bokee.com/5803108.html

http://www.blogcn.com/u/93/99/litcatfish/index.html

內容摘要?遠程調試環(huán)境由宿主機GDB和目標機調試stub共同構成,兩者通過串口或TCP連接。使用 GDB標準程串行協(xié)議協(xié)同工作,實現對目標機上的系統(tǒng)內核和上層應用的監(jiān)控和調試功能。調試stub是嵌入式系統(tǒng)中的一段代碼,作為宿主機GDB和目標機調試程序間的一個媒介而存在。 就目前而言,嵌入式Linux系統(tǒng)中,主要有三種遠程調試方法,分別適用于不同場合的調試工作:用ROM Monitor調試目標機程序、用KGDB調試系統(tǒng)內核和用gdbserver調試用戶空間程序。這三種調試方法的區(qū)別主要在于,目標機遠程調試stub 的存在形式的不同,而其設計思路和實現方法則是大致相同的。 而我們最常用的是調試應用程序。就是采用gdb+gdbserver的方式進行調試。在很多情況下,用戶需要對一個應用程序進行反復調試,特別是復雜的程序。采用GDB方法調試,由于嵌入式系統(tǒng)資源有限性,一般不能直接在目標系統(tǒng)上進行調試,通常采用gdb+gdbserver的方式進行調試。

?

gdb的簡單使用

GDB是GNU開源組織發(fā)布的一個強大的UNIX下的程序調試工具。或許,各位比較喜歡那種圖形界面方式的,像VC、BCB等IDE的調試,但如果你是在 UNIX平臺下做軟件,你會發(fā)現GDB這個調試工具有比VC、BCB的圖形化調試器更強大的功能。所謂“寸有所長,尺有所短”就是這個道理。一般來說,GDB主要幫忙你完成下面四個方面的功能:????? 1、啟動你的程序,可以按照你的自定義的要求隨心所欲的運行程序。
???? 2、可讓被調試的程序在你所指定的調置的斷點處停住。(斷點可以是條件表達式)
???? 3、當程序被停住時,可以檢查此時你的程序中所發(fā)生的事。
???? 4、動態(tài)的改變你程序的執(zhí)行環(huán)境。從上面看來,GDB和一般的調試工具沒有什么兩樣,基本上也是完成這些功能,不過在細節(jié)上,你會發(fā)現GDB這個調試工具的強大,大家可能比較習慣了圖形化的調試工具,但有時候,命令行的調試工具卻有著圖形化工具所不能完成的功能。讓我們一一看來。
一個調試示例
—————— 源程序:tst.c?????? 1 #include <stdio.h>
????? 2
????? 3 int func(int n)
????? 4 {
????? 5????????? int sum=0,i;
????? 6????????? for(i=0; i<n; i++)
????? 7????????? {
????? 8????????????????? sum+=i;
????? 9????????? }
???? 10????????? return sum;
???? 11 }
???? 12
???? 13
???? 14 main()
???? 15 {
???? 16????????? int i;
???? 17????????? long result = 0;
???? 18????????? for(i=1; i<=100; i++)
???? 19????????? {
???? 20????????????????? result += i;
???? 21????????? }
???? 22
???? 23???????? printf("result[1-100] = %d \\n", result );
???? 24???????? printf("result[1-250] = %d \\n", func(250) );
???? 25 } 編譯生成執(zhí)行文件:(Linux下)
???? hchen/test> cc -g tst.c -o tst 使用GDB調試: hchen/test>?gdb?tst?? <---------- 啟動GDB
GNU?gdb?5.1.1
Copyright 2002 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-suse-linux"...
(gdb) l????? <-------------------- l命令相當于list,從第一行開始例出原碼。
1???????? #include <stdio.h>
2
3???????? int func(int n)
4???????? {
5???????????????? int sum=0,i;
6???????????????? for(i=0; i<n; i++)
7???????????????? {
8???????????????????????? sum+=i;
9???????????????? }
10??????????????? return sum;
(gdb)??????? <-------------------- 直接回車表示,重復上一次命令
11??????? }
12
13
14??????? main()
15??????? {
16??????????????? int i;
17??????????????? long result = 0;
18??????????????? for(i=1; i<=100; i++)
19??????????????? {
20??????????????????????? result += i;????
(gdb) break 16???? <-------------------- 設置斷點,在源程序第16行處。
Breakpoint 1 at 0x8048496: file tst.c, line 16.
(gdb) break func?? <-------------------- 設置斷點,在函數func()入口處。
Breakpoint 2 at 0x8048456: file tst.c, line 5.
(gdb) info break?? <-------------------- 查看斷點信息。
Num Type??????????? Disp Enb Address???? What
1??? breakpoint????? keep y??? 0x08048496 in main at tst.c:16
2??? breakpoint????? keep y??? 0x08048456 in func at tst.c:5
(gdb) r??????????? <--------------------- 運行程序,run命令簡寫
Starting program: /home/hchen/test/tst Breakpoint 1, main () at tst.c:17???? <---------- 在斷點處停住。
17??????????????? long result = 0;
(gdb) n?????????? <--------------------- 單條語句執(zhí)行,next命令簡寫。
18??????????????? for(i=1; i<=100; i++)
(gdb) n
20??????????????????????? result += i;
(gdb) n
18??????????????? for(i=1; i<=100; i++)
(gdb) n
20??????????????????????? result += i;
(gdb) c?????????? <--------------------- 繼續(xù)運行程序,continue命令簡寫。
Continuing.
result[1-100] = 5050??????? <----------程序輸出。 Breakpoint 2, func (n=250) at tst.c:5
5???????????????? int sum=0,i;
(gdb) n
6???????????????? for(i=1; i<=n; i++)
(gdb) p i???????? <--------------------- 打印變量i的值,print命令簡寫。
$1 = 134513808
(gdb) n
8???????????????????????? sum+=i;
(gdb) n
6???????????????? for(i=1; i<=n; i++)
(gdb) p sum
$2 = 1
(gdb) n
8???????????????????????? sum+=i;
(gdb) p i
$3 = 2
(gdb) n
6???????????????? for(i=1; i<=n; i++)
(gdb) p sum
$4 = 3
(gdb) bt???????? <--------------------- 查看函數堆棧。
#0?? func (n=250) at tst.c:5
#1?? 0x080484e4 in main () at tst.c:24
#2?? 0x400409ed in __libc_start_main () from /lib/libc.so.6
(gdb) finish???? <--------------------- 退出函數。
Run till exit from #0?? func (n=250) at tst.c:5
0x080484e4 in main () at tst.c:24
24?????????????? printf("result[1-250] = %d \n", func(250) );
Value returned is $6 = 31375
(gdb) c????? <--------------------- 繼續(xù)運行。
Continuing.
result[1-250] = 31375???? <----------程序輸出。 Program exited with code 027. <--------程序退出,調試結束。
(gdb) q????? <--------------------- 退出gdb
hchen/test>

gdb+gdbserver方式進行ARM程序調試

【摘要】:本文首先介紹了gdb+gdbserver相關的概念,然后介紹了其下載、編譯、安裝等過程;接著介紹了利用gdb+gdbserver調試應用程序的流程及實例等;最后分析了下gdb+gdbserver安裝過程中的常見問題。

【關鍵詞】:gdb,gdbserver,遠程調試

目錄

一、gdb+gdbserver總體介紹... 1

二、源代碼下載... 1

三、配置編譯及安裝下載... 1

四、gdb+gdbserver nfs調試流程... 2

五、如何利用串口調試... 3

六、實戰(zhàn)調試... 3

七、linux下安裝gdbserver問題... 5

一、gdb+gdbserver總體介紹

遠程調試環(huán)境由宿主機GDB和目標機調試stub共同構成,兩者通過串口或TCP連接。使用?GDB標準程串行協(xié)議協(xié)同工作,實現對目標機上的系統(tǒng)內核和上層應用的監(jiān)控和調試功能。調試stub是嵌入式系統(tǒng)中的一段代碼,作為宿主機GDB和目標機調試程序間的一個媒介而存在。

就目前而言,嵌入式Linux系統(tǒng)中,主要有三種遠程調試方法,分別適用于不同場合的調試工作:用ROM Monitor調試目標機程序、用KGDB調試系統(tǒng)內核和用gdbserver調試用戶空間程序。這三種調試方法的區(qū)別主要在于,目標機遠程調試stub?的存在形式的不同,而其設計思路和實現方法則是大致相同的。

而我們最常用的是調試應用程序。就是采用gdb+gdbserver的方式進行調試。在很多情況下,用戶需要對一個應用程序進行反復調試,特別是復雜的程序。采用GDB方法調試,由于嵌入式系統(tǒng)資源有限性,一般不能直接在目標系統(tǒng)上進行調試,通常采用gdb+gdbserver的方式進行調試。

二、源代碼下載

嵌入式Linux的GDB調試環(huán)境由Host和Target兩部分組成,Host端使用arm-linux-gdb,Target Board端使用gdbserver。這樣,應用程序在嵌入式目標系統(tǒng)上運行,而gdb調試在Host端,所以要采用遠程調試(remote)的方法。進行GDB調試,目標系統(tǒng)必須包括gdbserver程序(在主機上正對硬件平臺編譯成功后下載到目標機上),宿主機也必須安裝GDB?程序。一般Linux發(fā)行版中都有一個可以運行的GDB,但開發(fā)人員不能直接使用該發(fā)行版中的GDB來做遠程調試,而要獲取GDB的源代碼包,針對arm?平臺作一個簡單配置,重新編譯得到相應GDB。GDB的源代碼包可以從

http://www.gnu.org/software/gdb/download/

http://ftp.gnu.org/gnu/gdb/?? 211.95.105.202:3128可以上去的,所有的版本都有啊

http: //ftp.cs.pu.edu.tw/linux/sourceware/gdb/releases/下載

ftp://ftp.gnu.org/gnu/gdb

外網的ftp我經常上不去,國內常見的開源社區(qū)的下載頻道通常都有下載的http://download.chinaunix.net/download/0004000/3482.shtml,最新版本為gdb-6.5.tar.bz2。下載到某個目錄,筆者下載到/opt/。但要注意,gdb的版本需要和croostool?相匹配。

三、配置編譯及安裝下載

下載完后,進入/opt/目錄,配置編譯步驟如下:

?

#tar jxvf?gdb-6.5-tar-bz2

#cd?gdb-6.5

#./configure --target=arm-linux --prefix=/usr/local/arm-gdb?–v

(--target配置gdb的目標平臺,--prefix配置安裝路徑,當然其他路徑也可以,?.跟下面配置一致即可,須在環(huán)境變量中聲明,啟動arm-linux-gdb需要,可更改/etc/profile或~/.bash_profile或~/.bashrc,添加export PATH=$PATH:/usr/local/arm-gdb/bin,這樣可以找到路徑)

#make

#make install

(生成arm-linux-gdb,并存入/usr/local/arm-gdb?/bin/,查詢確認下)

也可以啟動arm-linux-gdb,若成功,則證明安裝無誤

進入gdb/gdbserver目錄:

[root@dding gdbserver]# pwd

/opt/gdb-6.5/gdb/gdbserver

[root@dding gdbserver]#?必須在gdbserver目錄下運行配置命令,此時才能用相對路徑

#./configure --target=arm-linux --host=arm-linux

(--target=arm-linux表示目標平臺,--host表示主機端運行的是arm-linux-gdb,不需要配置—prefix,因為gdbserver不在主機端安裝運行)

#make CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc

(這一步要指定你自己的arm-linux-gcc的絕對位置,我試過相對的不行,提示make:?arm-linux-gcc: Command not found,可好多人都用的相對路徑,即直接賦值arm-linux-gcc,可采取make時傳遞參數,也可以直接修改gdbserver目錄下的Makefile文件中的環(huán)境變量CC)

?

?

沒有錯誤的話就在gdbserver目錄下生成gdbserver可執(zhí)行文件,注意此時要更改其屬性,否則可能會出現無法訪問的情況,chmod 777 gdbserver將其更改為任何人都可以讀寫執(zhí)行;使用arm-linux-strip命令處理一下gdbserver,將多余的符號信息刪除,可讓elf文件更精簡,通常在應用程序的最后發(fā)布時使用;然后把它燒寫到flash的根文件系統(tǒng)分區(qū)的/usr/bin(在此目錄下,系統(tǒng)可以自動找到應用程序,否則必須到gdbserver所在目錄下運行之),或通過nfs mount的方式都可以。只要保證gdbserver能在開發(fā)板上運行就行。

四、gdb+gdbserver?nfs調試流程

下面就可以用gdb+gdbserver調試我們開發(fā)板上的程序了。在目標板上運行?gdbserver,其實就是在宿主機的minicom下。我是在minicom下#mount 192.168.2.100:/ /tmp后做的(這里參數-o nolock可以不加,不加這一步執(zhí)行得反而更快些),hello和gdbserver都是位于Linux根目錄下,把主機根目錄掛在到開發(fā)板的/tmp?目錄下。

要進行gdb調試,首先要在目標系統(tǒng)上啟動gdbserver服務。在gdbserver所在目錄下輸入命令:

(minicom下)

#cd /tmp

#./gdbserver 192.168.2.100:2345 hello

192.168.2.100為宿主機IP,在目標系統(tǒng)的2345端口(你也可以設其他可用的值,當然必須跟主機的gdb一致)開啟了一個調試進程,hello為要調試的程序(必須-g加入調試信息)。

出現提示:

Process /tmp/hello created: pid=80

Listening on port 2345

(另一個終端下)

#cd /

#export PATH=$PATH:/usr/local/arm-gdb/bin

#arm-linux-gdb?hello

最后一行顯示:This?GDB?was configured as “--host=i686-pc-linux-gnu,--target=arm-linux”...,如果不一致說明arm-linux-gdb有問題

說明此gdb在X86的Host上運行,但是調試目標是ARM代碼。

(gdb) target remote 192.168.2.223:2345

(192.168.2.223為開發(fā)板IP)

出現提示:

Remote debugging using 192.168.2.223:2345

[New thread 80]

[Switching to thread 80]

0x40002a90 in ??()

同時在minicom下提示:

Remote debugging from host 192.168.2.100

(gdb)

注意:你的端口號必須與gdbserver開啟的端口號一致,這樣才能進行通信。建立鏈接后,就可以進行調試了。調試在Host端,跟gdb調試方法相同。注意的是要用“c”來執(zhí)行命令,不能用“r”。因為程序已經在Target Board上面由gdbserver啟動了。結果輸出是在Target Board端,用超級終端查看。連接成功,這時候就可以輸入各種GDB命令如list、run、next、step、break等進行程序調試了。

以上針對通過nfs mount和tftp的方式,只能在主機上調試好后下載到開發(fā)板上運行,如果有錯誤要反復這個過程,繁瑣不說,有些程序只能在開發(fā)板上調試。所以筆者采用了gdbserver的遠程調試方式。希望對大家調試程序有用!

五、如何利用串口調試

如果你用串口1調試hello的話,你就要現在板子上運行命令:

gdbserver hello /dev/ttyS0?(詳情可以參考gdbserver目錄下的readme文件)

這時gdbserver就在等待gdb的應答信號了。

然后在pc機上運行命令:

xxx-linux-gdb?hello

在xxx-linux-gdb里敲入入下命令:

set remotedevice /dev/ttyS0(這里設置串口1)

set remote baud 9600?(這里設置串口波特率)

set debug remote 1(可選)

target remote /dev/ttyS0

操作到這兒,gdb就應該和gdbserver聯(lián)系上了。

六、實戰(zhàn)調試

1.編輯文件

# vi gdbtest.c

1 #include <stdio.h>

2

3 int

4 func(int n){

5???? int?? sum=0, i;

6???? for (i=0; i<n; i++){

7???????? sum += i;

8???? }

9???? return sum;

10 }

11

12 int

13 main(void)

14 {

15??? int?? i;

16??? long result = 0;

17??? for (i=0; i<=100; i++){

18??????? result += i;

19??? }

20?

21??? printf("result[1-100] = %d \n", result);

22??? printf("resutl[1-225] = %d \n", func(255));

23

24??? return 0;

25 }

#?arm-linux-gcc -g gdbtest.c -o gdbtest???????? //?交叉編譯

2.下載文件到目標板: gdbtest和gdbserver

假設?host pc ip:192.168.1.45

???? board?? ip:192.168.1.180???

將文件拷貝到目標板上:

先將gdbtest和gdbserver兩個文件拷貝到主機的/tftpboot目錄下,此時系統(tǒng)主機和目標機都必須能夠支持nfs

在目標板的Linux中運行:

#mount 192.168.1.108:/tftpboot /mnt/nfs

#cd /mnt/nfs

#ls

看是否有gdbtest和gdbserver兩個文件。

3.運行調試

client board:

#./gdbserver 192.168.1.45:1234 gdbtest? //?目標板上運行gdbtest?監(jiān)聽端口1234

[root@AT91RM9200DK?arm]$./gdbserver 192.168.0.12:2345 mainparacarm

./gdbserver: error in loading shared libraries: libthread_db.so.1: cannot open [root@AT91RM9200DK?arm]$

host pc:

#cd /usr/local/arm-gdb/bin/?以便能夠運行arm-linux-gdb,但是無此必要,可在環(huán)境變量中設置此路徑即可。

#copy gdbtest /usr/local/arm-gdb/bin/?? //?將前面編譯的文件gdbtest拷貝到此目錄

#./arm-linux-gdb?gdbtest

(gdb)target remote 192.168.1.180:1234?? //?連接到開發(fā)板成功后就可以

進行調試

(gdb)list?? or l

(gdb)break func

(gdb)break 22

(gdb)info br???

(gdb)continue?? or c??? //?這里不能用?run

(gdb)next?? or n

(gdb)print or p??? result?

(gdb) finish??????? //?跳出func函數

(gdb) next

(gdb) quit

建立連接后進行gdb遠程調試和gdb本地調試方法相同

七、?linux下安裝gdbserver問題

toolchain version:???gdb的版本可能和交叉編譯器有很大的關系

gcc-3.3.2

glibc-2.2.5

binutils-2.15?此為croostool 3.3.2

安裝步驟:
下載解壓gdb-6.6
#cd?gdb-6.6
#./configure --target=arm-linux --prefix=/usr/local/arm-gdb?–v

#make?&?make install

OK,然后:

#export PATH=$PATH:/usr/local/arm-gdb

進入gdbserver目錄:

#./configure --target=arm-linux --host=arm-linux

#make CC=/usr/local/armv5l/3.3.2/bin/armv5l-linux-gcc

出錯:

/usr/local/armv5l/3.3.2/bin/armv5l-linux-gcc -c -Wall -g -O2 -I. -I. -I./../regformats -I./../../include -I../../bfd -I./../../bfd?linux-arm-low.c

linux-arm-low.c:35:21: sys/reg.h:?沒有那個文件或目錄

make: *** [linux-arm-low.o]?錯誤?1

然后把/usr/include/sys/reg.h copy到/usr/local/armv5l-2.6.x/3.3.2/armv5l-linux/include/sys/reg.h,即將該文件拷貝到交叉編譯器的include目錄下,再make,顯示錯誤:

/usr/local/armv5l/3.3.2/bin/armv5l-linux-gcc -c -Wall -g -O2 -I. -I. -I./../regformats -I./../../include -I../../bfd -I./../../bfd thread-db.c

thread-db.c: In function `thread_db_err_str':

thread-db.c:95: error: `TD_VERSION' undeclared (first use in this function)

thread-db.c:95: error: (Each undeclared identifier is reported only once

thread-db.c:95: error: for each function it appears in.)

thread-db.c: In function `thread_db_get_tls_address':

thread-db.c:336: warning: implicit declaration of function `td_thr_tls_get_addr'

thread-db.c:336: warning: cast to pointer from integer of different size

thread-db.c:340: warning: cast from pointer to integer of different size

make: *** [thread-db.o]?錯誤?1

本想繼續(xù)fix error,但是感覺不太對,請問各位,是什么原因呢?

是不是CC的target寫錯了?應該是arm-linux還是armv5l-linux?

1.

make: *** [linux-arm-low.o] Error 1

[root@dding gdbserver]#

[root@dding gdbserver]# gedit config.h

/* Define to 1 if you have the <sys/reg.h> header file. */

/*define HAVE_SYS_REG_H 1? */

/*have no? <sys/reg.h> header file. so undefine 20070402 dding? */

2.

thread-db.c: In function `thread_db_err_str':?gdb6.5

thread-db.c:95: `TD_VERSION' undeclared (first use in this function)

[root@dding gdbserver]# gedit config.h

???? 94 #ifdef HAVE_TD_VERSION

???? 95???? case TD_VERSION:

???? 96?????? return "version mismatch between libthread_db and libpthread";

???? 97 #endif

/* Define if TD_VERSION is available. */

/*#define HAVE_TD_VERSION 1? */

/*have no? TD_VERSION. so undefine 20070402 dding? */

gdb6.1?沒有此問題

3.

[root@AT91RM9200DK?arm]$./gdbserver 192.168.0.12:2345 mainparacarm??gdb6.5

./gdbserver: error in loading shared libraries: libthread_db.so.1: cannot open

[root@AT91RM9200DK?arm]$./gdbserver 192.168.0.14:2345 mainparacarm??gdb6.1

./gdbserver: error in loading shared libraries: libthread_db.so.1: cannot open shared object file: No such file or directory

我已經加了libthread_db.so.1共享庫為什么還打不開呢????共享庫和cpu類型有關嗎??
gdbserver: error while loading shared libraries: libthread_db.so.1: cannot open?
shared object file: No such file or director

****編譯GDB的時候搞成靜態(tài)的就好了.我想編譯選項里應該有.?要不你就在Makefile里加上CFLAGS += -static
LDFLAGS += -static
這兩個的其中一個應該就可以了,不過還是兩個都加上吧.

***/lib there is no? libthread_db.so.1 Can i use nfs to copy? libthread_db.so.1 to /lib? But now i cannot find this file, and is there any for cross 3.3.2?

libpthread-0.8.so

libpthread.so????????? libpthread.so.0??????? libresolv-2.1.3.so

libresolv.so.2???????? libstdc++.a.2.10.0?????libtermcap.so.2

[root@AT91RM9200DK?arm]$cp libthread_db-1.0.so libthread_db.so.1

[root@AT91RM9200DK?arm]$cp libthread_db.so.1 /lib/

[root@AT91RM9200DK?arm]$./gdbserver 192.168.0.12:2345 mainparacarm

./gdbserver: /lib/libc.so.6: version `GLIBC_2.2' not found (required by /lib/li)

難道目前的gdb?6.5?版本太高,需要內核版本和交叉編譯器與之匹配?實在不行,就試試低版本的gdb

參考文檔

http://blog.chinaunix.net/u/27802/showart_211833.html

http://litttlebylittle.bokee.com/5803108.html

http://www.blogcn.com/u/93/99/litcatfish/index.html

總結

以上是生活随笔為你收集整理的gdb+gdbserver的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

在线看污网站 | 黄色网在线播放 | 97成人在线观看视频 | 国产视频一区二区在线播放 | 日韩精品在线视频 | 在线成人高清电影 | 欧美成人在线免费观看 | 一级做a爱片性色毛片www | 久久精品视频日本 | 精品国产日本 | 日韩一区二区三免费高清在线观看 | 一区二区三区日韩精品 | av大片免费在线观看 | 国产精品久久久久久久久久ktv | 精品国产一区二区三区久久 | 综合色伊人 | 日韩免费在线观看 | 操操综合 | av专区在线| 在线观看911视频 | 欧美最猛性xxx | 性色av免费看 | 超黄视频网站 | 免费日韩 精品中文字幕视频在线 | 久久手机免费观看 | 国产色婷婷精品综合在线手机播放 | 色窝资源| 久草精品免费 | 美女免费视频黄 | 中文字幕免费在线看 | 日本精品视频在线 | 黄色软件在线观看免费 | 欧美日一级片 | av三级在线看 | 国产精品免费在线 | 成人av电影在线 | 久久精品一区二区三 | 中字幕视频在线永久在线观看免费 | 欧美一区二区三区四区夜夜大片 | 国产精品99爱 | 国产精品黄色 | 久久精品精品电影网 | 久久精品视频在线观看免费 | 一区二区三区视频网站 | 成人a毛片 | 亚洲第一中文网 | 亚洲影院一区 | 亚洲精品国产麻豆 | 日韩影视大全 | 国产精品久久久久久久久久久杏吧 | 欧美性脚交 | 久久久久久网站 | 黄色日本片 | 国产在线 一区二区三区 | 日日爽天天 | 婷婷丁香导航 | 国产精品99久久久久久久久 | 久久久www成人免费精品 | 日韩欧美观看 | 久草综合在线观看 | 手机看片国产日韩 | 日韩精品一区二区三区免费观看 | a在线v| 国产成人99av超碰超爽 | 天天躁日日| 最近中文字幕免费观看 | 久久国产精品99精国产 | 久久99精品一区二区三区三区 | 久久久久亚洲精品中文字幕 | 国产电影一区二区三区四区 | 亚洲第一色 | 丝袜足交在线 | 日韩av电影中文字幕在线观看 | 日本精品在线视频 | 国产精品99久久99久久久二8 | 国产精品美女在线 | 亚洲综合精品在线 | 日韩久久精品一区 | 国产一区久久 | 国产日韩精品一区二区三区 | 日韩三级视频 | 天天综合久久综合 | 国产精品亚洲综合久久 | 91在线视频导航 | 久久久这里有精品 | 最近中文字幕久久 | av午夜电影 | 视频国产 | 精品一区 在线 | 久久久免费看 | 国产福利一区二区三区视频 | 国产成人精品一区二 | 在线精品视频在线观看高清 | 丰满少妇久久久 | 欧美日韩一区二区三区视频 | 成人xxxx| 亚洲免费在线 | 欧美一级特黄aaaaaa大片在线观看 | 成人片在线播放 | 日韩亚洲国产中文字幕 | 亚洲一区二区观看 | 欧美性高跟鞋xxxxhd | 福利视频一区二区 | 91精品久久香蕉国产线看观看 | 久久欧美视频 | 黄色免费网站大全 | 成年人免费电影 | 婷婷夜夜 | 日日干网址 | 久久全国免费视频 | 精品国产成人在线 | 91九色蝌蚪 | 成年人精品| 免费在线国产精品 | 成人a在线观看高清电影 | 国内精品视频在线 | 亚洲成免费 | 在线国产视频 | 香蕉在线播放 | 亚洲热久久| 久久超碰99 | 久久久久久久久久久电影 | 久久国产一区二区 | 日韩 精品 一区 国产 麻豆 | 波多在线视频 | 亚洲精品男女 | 最近中文字幕视频完整版 | 久久精品国产第一区二区三区 | 黄色三级网站在线观看 | 日日操日日操 | 国产精品久久99综合免费观看尤物 | 色a资源在线| 日本中文一级片 | www.超碰| 91chinesexxx| 中文字幕在线观看视频免费 | 97超碰人| 久久久18 | 91av手机在线 | 国产精品 中文在线 | 日韩一区二区三区高清免费看看 | 成人毛片一区二区三区 | 精品美女在线观看 | 亚洲三级在线 | 97看片吧 | 日韩精品一区二区免费视频 | 日本 在线 视频 中文 有码 | 免费观看www7722午夜电影 | 国产一区国产二区在线观看 | 黄色国产在线观看 | 激情视频区 | 色资源在线 | 久久欧洲视频 | 午夜视频日本 | 国产精品破处视频 | 91精品综合在线观看 | 成年人免费电影 | 色噜噜日韩精品一区二区三区视频 | 免费看毛片网站 | 射九九| 国产精品 视频 | 久久久久久久久亚洲精品 | 91精品国产91热久久久做人人 | 一级黄色片在线观看 | 日本黄色免费观看 | 九九综合久久 | 婷婷五天天在线视频 | 亚洲精品免费在线观看视频 | 韩国av一区二区三区 | 国产精品 中文字幕 亚洲 欧美 | av成人免费观看 | 青草视频免费观看 | www成人精品 | 亚洲午夜精品久久久久久久久久久久 | 在线看成人 | 国产精品入口66mio女同 | 久久精品久久精品久久 | 久久久久免费精品 | 九九视频免费观看视频精品 | 国产亚洲欧美一区 | 99久久久久成人国产免费 | 欧美看片 | 日韩在线免费观看视频 | 国产在线观看91 | 久久久久久国产一区二区三区 | 色搞搞 | 国产高清综合 | 欧美日韩在线精品一区二区 | 国产一区成人在线 | 日韩字幕| 在线观看免费av网站 | 久久精品综合网 | 亚洲成av人影院 | 在线观看一二三区 | 日韩a在线 | 日本午夜在线观看 | 久久神马影院 | 成年人视频免费在线播放 | 在线成人免费av | 国产精品久久久久久久久久久免费 | 91视频观看免费 | 欧美大香线蕉线伊人久久 | 日韩欧美在线视频一区二区三区 | 福利视频一区二区 | 91一区二区三区在线观看 | 天天射网站 | 亚洲精品久久久蜜桃 | 99热免费在线 | 成人影音在线 | 最新国产精品久久精品 | 久久欧美视频 | 欧美午夜精品久久久久久孕妇 | 一区二区三区在线播放 | 日本爽妇网 | 久久精品欧美视频 | 欧美淫视频 | 日韩一区二区三区免费电影 | 中国一级片在线播放 | 成人免费观看大片 | 久久精品人 | 久久人人插| 国产老妇av | 九九免费观看视频 | 日韩毛片一区 | 9999在线观看 | 日韩系列在线观看 | 福利久久 | 久久久精品国产一区二区 | 亚洲日本在线一区 | 国产九九热 | 国产亚洲情侣一区二区无 | 日日躁夜夜躁aaaaxxxx | 日韩网站中文字幕 | 精品视频久久久久久 | 69精品视频在线观看 | 在线观看精品一区 | av中文电影| 最新午夜电影 | 久久免费高清视频 | 中文国产字幕在线观看 | 国产精品成人自产拍在线观看 | 天天摸天天弄 | 精品国产一区在线观看 | 日韩一级理论片 | 伊人导航 | 欧美一区二视频在线免费观看 | 久久精品视频播放 | 中文字幕在线播放一区二区 | 亚洲综合导航 | 91在线精品播放 | 五月婷激情 | 欧美国产日韩在线观看 | 在线观看911视频 | www.黄色| 一区二区影视 | 狠狠狠色丁香综合久久天下网 | 久久久首页 | 国产99久久精品 | 最近高清中文字幕在线国语5 | 99久在线精品99re8热视频 | av免费看av | 久久久久福利视频 | 色综合夜色一区 | 免费观看国产精品 | 国产精品96久久久久久吹潮 | 精品国产乱码一区二区三区在线 | 九九热在线视频免费观看 | 五月婷婷伊人网 | 日本精品中文字幕在线观看 | 97超碰在线人人 | 中文字幕在线有码 | 中文字幕影视 | 成人久久毛片 | 中文区中文字幕免费看 | 日本xxxx裸体xxxx17 | 国产成人精品久 | 日韩av免费一区 | 亚洲精品久久久久久久不卡四虎 | 久久久久女人精品毛片九一 | 国产亚洲综合性久久久影院 | 中文字幕丝袜美腿 | 国产在线小视频 | 日韩在线视频二区 | 欧美日韩一区二区三区不卡 | 成人资源网 | 成人一区影院 | 在线激情小视频 | 在线观看免费视频 | 日韩高清在线不卡 | japanesexxxxfreehd乱熟 | 91麻豆精品国产91久久久久 | www色片| 亚洲精品国产综合99久久夜夜嗨 | 欧美精品一区二区性色 | 麻豆视频免费入口 | 在线天堂8√ | 亚洲女同videos | 在线播放日韩av | 偷拍精偷拍精品欧洲亚洲网站 | 久久人91精品久久久久久不卡 | 色偷偷97 | 国产亚洲视频在线免费观看 | 中文字幕在线观看视频网站 | 亚洲精品黄网站 | 国产精品一区二区久久精品爱微奶 | 国产小视频你懂的 | 九九九视频在线 | 黄色亚洲精品 | 天天爱天天操 | 中文字幕国产一区二区 | 精品国产亚洲日本 | 中文字幕免费观看视频 | 精品国产大片 | 亚洲欧洲精品一区二区 | 久久99热这里只有精品 | 中文字幕欧美日韩va免费视频 | 手机看片国产 | 日韩在线观看不卡 | 午夜av剧场 | 欧美一级电影在线观看 | 超碰97在线资源 | 久久成人在线 | 国产一卡二卡在线 | 久久99免费观看 | 国内精品视频在线 | 精品国产乱码久久久久久浪潮 | 国产精品成人一区 | 欧美专区亚洲专区 | 日韩欧美高清 | 欧美日韩国产一二三区 | 91麻豆精品国产91久久久使用方法 | 亚洲国产999| 在线观看视频一区二区三区 | 一二三精品视频 | 人人草天天草 | 成人久久久久久久久 | 成年人在线免费视频观看 | 日韩欧美综合视频 | 久久国产二区 | 天天射天天舔天天干 | 日韩av不卡在线观看 | 国产精品一区二区三区在线 | 国产毛片aaa | 成年人免费看片网站 | 亚洲欧美成人综合 | 久久9视频| 国产精品一区二区久久精品爱涩 | 久久成人精品电影 | 伊人黄色网 | 高清中文字幕 | 国产系列在线观看 | 毛片无卡免费无播放器 | 久久成人国产精品免费软件 | 日韩免费专区 | 免费视频黄 | 国产玖玖精品视频 | 99看视频在线观看 | 成片免费观看视频大全 | 日本乱码在线 | 色婷婷国产精品 | 亚洲精品乱码久久久久久按摩 | 天天爽天天爽夜夜爽 | 中文字幕 影院 | 久久8精品 | 米奇影视7777 | 亚洲男模gay裸体gay | 在线探花| 欧美日韩国产高清视频 | 91桃色在线观看视频 | 欧美久久久久久久久久 | 69久久久久久久 | 激情图片久久 | 国产理论片在线观看 | 欧美 激情 国产 91 在线 | 久操视频在线播放 | 国产99视频在线观看 | www毛片com| 中文字幕在线资源 | 天天操狠狠操夜夜操 | 国产亚洲一区二区在线观看 | 久久国产香蕉视频 | 波多野结衣视频一区 | 草久在线观看视频 | www久久九| 日日干夜夜草 | 亚洲第一成网站 | 国产午夜一区二区 | 国产一区二区高清不卡 | 免费黄在线看 | 国产日韩在线播放 | 西西4444www大胆艺术 | 日韩在线短视频 | 一区二区高清在线 | 久久久久久久久久久成人 | 91在线中字 | 91成人在线视频 | 国产精品一区二区美女视频免费看 | 91日韩精品视频 | 婷婷六月丁香激情 | 91麻豆看国产在线紧急地址 | 蜜臀久久99精品久久久无需会员 | 久久视频免费在线 | 国产成人不卡 | 国产精品久久久久久久久久久免费看 | 波多野结衣在线播放一区 | 91精品国产乱码在线观看 | 91九色蝌蚪视频网站 | 在线视频婷婷 | 九九热有精品 | 亚洲一级二级三级 | 日韩电影黄色 | 99久久精品免费看 | 久久久久亚洲精品 | 久久国产精品免费 | 在线蜜桃视频 | 国产无套一区二区三区久久 | 99久久久久久国产精品 | 国产精品99久久免费观看 | 91麻豆精品国产自产 | 国产免费久久精品 | 日日日视频 | 国产片免费在线观看视频 | 国产极品尤物在线 | 玖玖在线免费视频 | 成人超碰在线 | 久久综合一本 | 在线 国产一区 | 欧美日韩3p | 久久玖 | 欧美一级片在线 | 国产精品乱码在线 | 99r在线 | 久草精品免费 | 精品久久久久久国产 | av一区二区三区在线 | 久久国产精品免费看 | 99久久精品久久久久久清纯 | 亚洲dvd | 最近中文字幕大全 | 亚洲精品乱码久久久久久蜜桃91 | 欧美精品在线观看一区 | 久久国产精品99久久久久久丝袜 | 久久综合狠狠综合久久狠狠色综合 | 天天射网站 | 亚洲欧洲精品一区二区 | 亚洲一级电影在线观看 | 在线免费观看av网站 | 免费网站在线观看人 | 午夜精品福利一区二区 | 午夜精选视频 | 97在线观看免费高清完整版在线观看 | 亚洲狠狠婷婷 | 国产高清不卡一区二区三区 | 成人在线播放免费观看 | 午夜手机电影 | 精品九九九 | 午夜在线观看影院 | av资源在线看 | 成人网页在线免费观看 | 亚洲精品国产区 | 亚洲国产成人在线观看 | 免费的成人av | 成人午夜免费福利 | 亚洲精品综合一二三区在线观看 | 午夜成人免费影院 | a午夜电影 | 午夜精品视频在线 | 日韩精品一区二区三区免费观看 | www.黄色片网站 | 国产18精品乱码免费看 | 婷婷色站 | 久久久久久电影 | 日韩免费在线观看视频 | 国产中文字幕在线播放 | 在线 国产 亚洲 欧美 | 久久污视频 | 免费一级片视频 | 高清中文字幕 | 日本aaa在线观看 | 久热久草在线 | 在线观看韩日电影免费 | 99 色| 国产成人福利在线 | 爱射综合 | 欧美一区二区在线刺激视频 | 免费在线一区二区 | 日韩美精品视频 | 免费看国产a| 国产精品aⅴ| 亚洲va综合va国产va中文 | 国产成年人av | 日韩在线观看不卡 | 日本在线免费看 | 成年人在线观看免费视频 | 久久久国产网站 | 国产成人一区二区在线观看 | 久草在线视频在线观看 | 久久黄色影视 | 91av欧美 | 九九精品视频在线看 | 成人在线免费视频 | 中国精品少妇 | 婷婷综合影院 | 日本久久久精品视频 | 中文字幕欧美日韩va免费视频 | 久久九精品| 精品久久久久久久久久久久 | 91大神免费在线观看 | 亚洲人成网站精品片在线观看 | 激情视频一区二区三区 | 操老逼免费视频 | 亚洲乱码中文字幕综合 | 亚洲午夜久久久久久久久电影网 | 天天操网站| 狠狠干夜夜爱 | 日韩欧美视频在线免费观看 | 色999五月色| 久久久综合色 | 三级毛片视频 | 91正在播放 | 日韩网站一区 | 成人小视频免费在线观看 | 欧美污污视频 | 91高清视频在线 | 黄av在线 | 人人射人人插 | 国产亚洲精品久久久久久大师 | 久久乐九色婷婷综合色狠狠182 | 深夜免费福利网站 | 五月综合激情 | 国产中文在线字幕 | 国产精品电影一区 | 天天天操天天天干 | 亚洲在线激情 | 中文字幕乱在线伦视频中文字幕乱码在线 | 国产亚洲精品电影 | 免费观看www视频 | 国产中文字幕一区二区 | 日日激情 | 五月天天色 | 欧美精品在线免费 | 超碰在线成人 | 麻豆91精品视频 | 亚洲专区中文字幕 | 国产香蕉av | 亚洲传媒在线 | 精品av网站 | www.超碰97.com | 欧美日韩视频在线一区 | 激情网站免费观看 | 国产小视频免费观看 | 伊人伊成久久人综合网站 | 91亚色在线观看 | 五月天视频网站 | 中文字幕av免费 | 天堂久久电影网 | 婷婷六月丁香激情 | 欧美日韩中文在线视频 | 国产精品尤物视频 | 天天躁日日躁狠狠躁av中文 | 国产小视频你懂的 | 久久久伦理 | 日日弄天天弄美女bbbb | 欧美极品在线播放 | 亚洲一二三区精品 | 99精品视频在线免费观看 | 伊人久久婷婷 | 国产午夜视频在线观看 | 国产一区二区久久精品 | 欧美一二区在线 | 日日夜夜精品视频 | 最近中文字幕在线中文高清版 | 视频二区在线 | 激情在线网址 | 狠狠狠狠狠狠操 | 日韩a级黄色片 | 天天天操操操 | 欧美色一色 | 日韩精品免费一区二区三区 | 97人人模人人爽人人喊网 | 免费观看一区二区 | 一级黄色片在线播放 | 日日日视频 | 日韩精品中文字幕在线 | 欧美a在线免费观看 | 人人插人人看 | av中文字幕不卡 | 欧美精品视 | 久久这里只有精品23 | 精品在线观看一区二区 | 午夜在线观看影院 | 国产 日韩 欧美 自拍 | 午夜色大片在线观看 | 国产拍在线| 日本中文字幕在线观看 | 日本黄色一级电影 | 中文字幕国语官网在线视频 | 三级av中文字幕 | av中文在线播放 | 欧美小视频在线 | 最近能播放的中文字幕 | 日韩欧美在线观看一区二区 | 99热在线免费观看 | 在线观看亚洲成人 | 国产中文字幕在线观看 | 亚洲最新视频在线播放 | 在线观看不卡视频 | 六月天色婷婷 | 国产 在线 高清 精品 | www.五月天 | 久久免费公开视频 | 久久综合视频网 | 肉色欧美久久久久久久免费看 | 成人观看视频 | 伊人电影在线观看 | 国产亚洲精品久久久久久移动网络 | 色婷婷色| 日日添夜夜添 | 中文字幕精品三级久久久 | 啪啪资源| 国产午夜在线观看 | 91视频在线免费看 | 天天摸日日操 | 国产精品九九九九九九 | 国产中文字幕视频在线观看 | 又黄又刺激的网站 | 亚洲色图美腿丝袜 | 国产高清av免费在线观看 | 国产精品高清一区二区三区 | 日韩午夜大片 | 欧美尹人 | 亚洲精品免费在线观看视频 | 六月丁香激情综合色啪小说 | 人人插人人射 | 久久精品79国产精品 | 日韩婷婷| 91夜夜夜| 美女福利视频网 | 91精品啪在线观看国产线免费 | 一区二区三区在线免费观看 | 91在线中字| 伊人久久精品久久亚洲一区 | 91在线入口 | 日韩三区在线观看 | 天天爱天天草 | 黄色av电影一级片 | 免费在线观看一级片 | 91大神视频网站 | 五月婷婷色播 | 亚洲精品视频大全 | 免费看片网页 | 狠狠色丁香久久婷婷综 | 婷婷成人综合 | 最近中文字幕免费观看 | 久久成人毛片 | 亚洲婷婷在线 | 四虎国产精品免费 | 婷婷久久综合九色综合 | 久久久久久久免费观看 | 亚洲三级黄 | 日日夜夜噜 | 精品视频成人 | 久久久久久久久久久网 | 国产成人免费网站 | 中日韩欧美精彩视频 | 久久国产精品一区二区三区 | 国产精品欧美久久久久无广告 | 午夜久久久久久久 | 日韩在线免费电影 | 色视频在线看 | 日韩欧美在线观看一区二区 | 国产一级免费观看视频 | 亚洲免费一级 | 久久在线免费观看视频 | 黄色国产大片 | 97在线视频免费 | 久久免费国产电影 | 特级毛片在线观看 | 日韩中文字幕第一页 | 99久久精品免费看国产四区 | 日本久久综合网 | www.久草.com| 天天干天天弄 | 国内精品国产三级国产aⅴ久 | 日日爱999| 午夜三级影院 | 激情婷婷亚洲 | www.天天操.com | 久久久久久久久久久久久久免费看 | 国产精品专区在线观看 | 不卡国产在线 | 91视频高清 | 天天曰视频 | 97色在线观看 | 91大神精品视频在线观看 | 在线免费观看羞羞视频 | 国产传媒一区在线 | www.综合网.com | 少妇按摩av | 亚洲精品456在线播放第一页 | 国产区久久| 91九色在线 | 成人永久视频 | 日韩免费在线视频观看 | 久久久久看片 | 97超碰成人在线 | 男女视频91| 久久国产精品久久精品国产演员表 | 亚洲综合在线播放 | 国产999免费视频 | 精品国产一区二区三区久久久蜜臀 | 欧美日视频 | 91在线精品一区二区 | 96香蕉视频 | 天天拍天天色 | 可以免费看av | 黄色软件视频大全免费下载 | 国产精品一区二区免费 | 国产精品wwwwww| 国产精品99久久久久的智能播放 | 日韩av电影网站在线观看 | 久久精品草| 91香蕉国产在线观看软件 | 国产精品av一区二区 | 欧美日韩精品在线播放 | avhd高清在线谜片 | 国产精品久久久久久久久蜜臀 | av一区在线播放 | 久久欧美精品 | 国产精品毛片一区视频播 | 久操久 | 蜜桃av观看 | 探花在线观看 | 欧美激情综合五月色丁香 | 天天爱av导航 | 成人av地址| 日韩免费看片 | 超碰人人超 | 久久久久久国产精品999 | 一区二区精品在线视频 | 狠狠干狠狠久久 | 五月天婷亚洲天综合网精品偷 | 在线视频 你懂得 | a在线观看视频 | 日韩在线观看 | 国产精品乱码一区二三区 | 中文字幕免费观看视频 | 99爱视频在线观看 | 午夜婷婷综合 | 9在线观看免费高清完整版在线观看明 | 亚洲免费在线观看视频 | 日韩免费三级 | 十八岁以下禁止观看的1000个网站 | 99精品视频免费看 | 国产专区欧美专区 | 婷婷5月激情5月 | 久久超碰99 | 国产伦精品一区二区三区高清 | 色婷婷免费| 2021av在线 | 国产视频九色蝌蚪 | 毛片1000部免费看 | 伊人网站 | 久久99深爱久久99精品 | 婷婷九月丁香 | 99久久精品免费看国产 | 人人爽人人舔 | 成年人视频在线免费观看 | 欧美日韩二三区 | 久久丝袜视频 | 色www免费视频 | 久久综合久久综合久久综合 | 九九热在线精品视频 | 97超碰在线人人 | 91九色网站| 欧美精品久久久久久 | aaa毛片视频 | 91成人免费| 一本一本久久aa综合精品 | 日韩视频图片 | 免费看一级特黄a大片 | 亚洲 欧美 精品 | 韩国在线一区二区 | 国产精品一区二区三区四 | 色亚洲网| 99精彩视频在线观看免费 | 国产成人三级在线播放 | 国产黄a三级三级三级三级三级 | 日韩视频www | 久久久高清免费视频 | 最近中文字幕在线播放 | 亚洲精品国产精品乱码在线观看 | 永久免费精品视频 | 日韩区视频 | 国产69精品久久99的直播节目 | 亚洲精品国内 | 国产精品久久av | 五月天激情视频 | 日日天天 | 午夜黄色影院 | 亚洲女同ⅹxx女同tv | 人人擦| 91精品婷婷国产综合久久蝌蚪 | 国产精品国产三级国产aⅴ入口 | 91成人免费在线视频 | 日韩av网页 | 欧美亚洲专区 | 丁香九月婷婷 | 亚洲播放一区 | 四虎4hu永久免费 | 婷婷色在线播放 | 色综合久久88色综合天天人守婷 | 久久久国际精品 | 午夜视频一区二区三区 | 国产精品久久久久久吹潮天美传媒 | 久久久免费网站 | 久久99国产一区二区三区 | 国产精品一区二区免费视频 | 亚洲精品欧美专区 | 久久久久国产a免费观看rela | 少妇自拍av| 久久99国产精品 | 国产亚洲视频在线免费观看 | 国产精品一区二区三区在线播放 | 久久在线一区 | 国产精品成人久久久久 | 欧美国产视频在线 | 成人欧美日韩国产 | 欧美超碰在线 | 天堂入口网站 | 午夜国产一区二区三区四区 | 久久国精品 | 又黄又爽又色无遮挡免费 | 操操爽| 欧美久久久久久久久久久 | 国产精品18久久久久久久久久久久 | 麻豆一区二区 | 91探花国产综合在线精品 | 国产只有精品 | 欧美性天天| 日韩av影片在线观看 | 国产精品99久久99久久久二8 | 亚洲国产一二三 | 欧美成人猛片 | 又色又爽又黄 | 中文字幕.av.在线 | 免费一级片久久 | 香蕉视频在线免费看 | 国产麻豆精品久久一二三 | 狠狠网亚洲精品 | 碰超在线观看 | 国产一区二区三区高清播放 | 久久xxxx | 九九综合久久 | 四虎影视精品 | 亚洲成色777777在线观看影院 | 国产亚洲精品美女久久 | 久久草精品| 久久精品电影 | www狠狠操| 少妇高潮流白浆在线观看 | 国产丝袜在线 | 国产一区福利在线 | 日本一区二区三区免费观看 | 免费日韩一区二区三区 | 精品久久久久亚洲 | 狠狠艹夜夜干 | 亚州国产精品久久久 | 91九色蝌蚪视频 | 国内久久精品 | 国精产品满18岁在线 | 久久亚洲私人国产精品va | 国产在线毛片 | 一区av在线播放 | 久久精品久久精品久久39 | 丁香综合av | 免费人人干 | 成人在线视频你懂的 | 最新av网址在线 | 免费看十八岁美女 | 天天躁天天狠天天透 | 久久久免费视频播放 | 国产精品观看视频 | 91精品国产一区二区在线观看 | 中文字幕在线有码 | 亚洲欧洲美洲av | 激情网在线观看 | 99精品视频免费观看 | 日韩三级视频在线看 | 色综合久久天天 | 亚洲人成在线电影 | 999视频在线观看 | 国产第一二区 | 精品国产诱惑 | 亚洲精品久久久久999中文字幕 | 日韩性xxxx| 天天综合五月天 | 免费看黄在线观看 | 欧美日韩免费观看一区=区三区 | 深爱婷婷久久综合 | 日韩中文字幕国产精品 | 免费看av在线 | 日日碰狠狠躁久久躁综合网 | 亚洲精品国偷拍自产在线观看蜜桃 | 91大神在线观看视频 | 国产一区高清在线观看 | 2018好看的中文在线观看 | 亚洲美女久久 | 伊人国产在线播放 | 97超碰资源| 国产精品麻豆99久久久久久 | 中文字幕一二三区 | 91成人久久 | 成人四虎影院 | 久久九九影视网 | 在线看污网站 | 中文字幕在线播放一区二区 | 97在线成人| 国产精品久久久久久69 | 国产亚洲精品成人av久久ww | 91中文字幕永久在线 | 国产午夜一区 | 99 国产精品| 成人在线黄色 | 天天操天天舔天天爽 | 成人免费av电影 | 久久国产99| 在线 精品 国产 | 在线观看亚洲国产精品 | 亚洲日本va中文字幕 | 国产亲近乱来精品 | 五月激情丁香图片 | 超碰97av在线| 色午夜 | 久久婷婷亚洲 | 中文字幕观看在线 | 欧美 另类 交 | 激情中文在线 | 人人搞人人搞 | 天天操天天干天天爽 | 91在线精品视频 | 亚洲三级在线免费观看 | 色网站在线 | 国产精品观看在线亚洲人成网 | 婷婷去俺也去六月色 | 国产黄色片一级 | 2018亚洲男人天堂 | 五月婷香蕉久色在线看 | 在线激情网 | 精品久久久久久久久久久久 | 日日夜夜婷婷 | av网站在线观看免费 | 午夜av免费观看 | 99在线视频观看 | 国内精品福利视频 | 伊人欧美 | 国产韩国精品一区二区三区 | 日韩久久精品一区二区 | 欧美日韩二区在线 | 色婷婷丁香 | 国产视频资源 | 亚洲黄色小说网 | 97视频在线观看成人 | 国产不卡在线播放 | 中文在线字幕免费观看 | 欧洲高潮三级做爰 | 欧美日本在线观看视频 | 99产精品成人啪免费网站 | 97天天干| 久久全国免费视频 | 午夜精品一二三区 | 日批视频 | 婷婷综合五月天 | 久热av在线 | 亚洲综合黄色 | 操操爽| 天天综合精品 | 日韩电影在线观看一区二区三区 | 久久在线 | 亚洲精品国产精品99久久 | av免费看网站 | 夜夜躁日日躁狠狠久久88av | 久久久精品亚洲 | 久久综合久久八八 | 91成人看片 | 在线观看av大片 | 免费久久99精品国产 | 久久成人人人人精品欧 | 欧美激情精品久久 | 在线亚洲小视频 | 最新超碰在线 | 中文字幕在线观看一区二区三区 | 日本三级在线观看中文字 | 中文字幕中文字幕 | 天天操天天射天天 | 精品福利视频在线 | 欧美粗又大 | 日本黄色免费大片 |