精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

圖文詳解 Gcc -g 調試信息

系統 Linux
DWARF(全稱:Debugging With Attributed Record Formats)是一種廣泛使用的調試數據格式標準,旨在為編譯器、調試器和其他工具提供一種標準化的機制,用于描述程序的源代碼結構、變量、類型、函數調用棧等信息。

大家好,這里是物聯網心球。

作為一個Linux開發者,我們經常會通過gcc -g命令來編譯可執行程序,-g選項能夠生成調試信息,開發者根據調試信息能夠快速定位并排查程序問題。

那么,調試信息到底是什么呢?本文我們一探究竟。

1.調試信息的重要性

gdb調試是一種非常重要的調試手段,如果gdb調試的程序沒有調試信息,那么我們將無法從gdb調試器中獲取到有價值的信息,調試過程也會異常困難。下面我們通過幾個場景來驗證一下。

場景1:查看變量

通過print命令打印變量的值時,帶調試信息輸出示例如下:

(gdb) print a
$1 = 100

未帶調試信息輸出示例如下:

(gdb) print a
'a' has unknown type; cast it to its declared type

gdb調試未帶調試信息的可執行程序時無法識別變量。

場景2:打印數據類型

通過ptype命令打印數據類型,帶調試信息輸出示例如下:

(gdb) ptype it
type = struct item {
    char num;
    int data;
}

未帶調試信息輸出示例如下:

(gdb) ptype it
No symbol table is loaded. Use the "file" command.

gdb調試未帶調試信息的可執行程序時無法識別數據類型。

場景3:指定源文件行號設置斷點

通過break命令在源文件指定行號設置斷點,帶調試信息輸出示例如下:

(gdb) break main.c:12
Breakpoint 2 at 0x55555555515c: file main.c, line 14.

未帶調試信息輸出示例如下:

(gdb) break main.c:12
No symbol table is loaded. Use the "file" command.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (main.c:12) pending.

gdb調試未帶調試信息的可執行程序時,無法在指定源文件行號設置斷點。

場景4:打印堆棧

通過bt命令打印堆棧信息,帶調試信息輸出示例如下:

(gdb) bt
#0 main (argc=1, argv=0x7fffffffe468) at main.c:14

未帶調試信息輸出示例如下:

(gdb) bt
#0 0x0000555555555151 in main ()

gdb調試未帶調試信息的可執行程序時,打印堆棧信息無行號和其他調試信息。

通過以上幾個場景的對比,我們能夠直觀的感受到,帶調試信息的可執行文件能夠提供更加豐富和關鍵的調試信息,協助開發者高效地解決問題。

2.認識調試信息   

調試信息其實并不神秘,它是嵌入在ELF文件中的節,這些節的形式為.debug_*(*代表不同的節)。

我們通過圖1來深入學習調試信息。

圖1    兩種文件對比圖1 兩種文件對比

圖1左邊為無調試信息可執行文件,右邊為帶調試信息可執行文件。無調試信息可執行文件中的內容比較少,文件占用內存空間也比較小。通過對比,我們發現帶調試信息可執行文件多了一些節:.debug_aranges節、.debug_info節、.debug_abbrev節、.debug_line節、.debug_str節、.debug_line_str節。這些多出來的節就是我們今天的主角:調試信息。這些節并不是隨意生成的,需要遵循一定的規則,這個規則就是DWARF。

3.DWARF介紹

DWARF(全稱:Debugging With Attributed Record Formats)是一種廣泛使用的調試數據格式標準,旨在為編譯器、調試器和其他工具提供一種標準化的機制,用于描述程序的源代碼結構、變量、類型、函數調用棧等信息。

DWARF共經歷了5個版本的迭代: 

  • DWARF1:1992年發布,為Unix System V的sdb調試器設計,支持C 語言,現已很少使用。
  • DWARF2:1993年發布,修正v1問題,增加C++支持,引入數據壓縮。
  • DWARF3:2005年發布,增加對多種語言支持,優化數據壓縮。
  • DWARF4:2010年發布,進一步改善數據壓縮,支持編譯器優化后代碼描述。
  • DWARF5:2017年發布,支持調試信息分離,改進宏和源文件描述。

DWARF的規則很復雜,筆者不建議大家直接研究DWARF標準。我們可以把DWARF標準當做一個手冊,當我們學習的過程中遇到問題再去查閱它。相較于直接學習DWARF標準,更為有效的學習方法是選搞懂各種調試節(.debug_*)的原理和作用。

以DWARF5為例,常見的調試節見表1。

表1    DWARF5常見調試節表1 DWARF5常見調試節

通過命令:readelf -w 可執行文件,可顯示所有的調試節。由于該命令展示的內容比較多,限于篇幅,這里不展示輸出示例。

3.1 .debug_aranges節

.debug_aranges節用于提供內存地址與編譯單元之間的映射關系,編譯單元后續會詳細介紹。通過.debug_aranges節,調試器可以快速將程序計數器(PC)的值映射到.debug_info節中的編譯單元,從而獲取相關的調試信息。

通過命令:readelf -wr 可執行文件,可查看.debug_aranges信息,輸出示例如下:

圖片圖片

.debug_aranges節分為兩個部分:頭部信息和地址范圍表。

頭部信息相關字段如下:

  • Length:表示該節的總長度(不包括這個長度字段本身)。
  • Version:表示 DWARF 格式的版本號,通常為2或4。
  • Offset into .debug_info:表示.debug_info節中的偏移量,用于定位編譯單元的起始位置。
  • Pointer Size:表示目標系統中指針的大小,以字節為單位。
  • Segment Size:表示目標系統中段選擇符的大小,以字節為單位,通常為 0。
    地址范圍表由一系列的地址范圍對組成,每個地址范圍對包含兩個字段:
  • Address:表示地址范圍的起始地址。
  • Length:表示地址范圍的長度。

gcc編譯可執行程序時,會將源文件(如.c/.cpp文件)編譯成編譯單元并將編譯單元覆蓋的地址范圍記錄在.debug_aranges節。

gdb需要確定某個指令地址(如:0x7fff1234)對應的源代碼位置時:    首先,通過0x7fff1234地址查詢.debug_aranges節地址范圍表,找到對應的編譯單元在.debug_info中的偏移;然后,通過偏移定位到.debug_info中的編譯單元;最后,從編譯單元開始解析DIE樹,獲取到源碼相關的信息。

3.2 .debug_info節

.debug_info節由調試信息條目(Debugging Information Entry,DIE)構成。DIE是.debug_info節中的一個基本單元,它通過標簽(Tag)和屬性(Attributes)來描述程序中的一個語義實體(如:函數名、參數、局部變量、代碼行號范圍)。每個DIE可以有多個子條目,形成一個樹狀結構,用于描述更復雜的語義關系。

通過命令:readelf -wi 可執行文件,可查看.debug_info信息,輸出示例如下:

圖片圖片

每個 DIE 包含以下幾個部分:

(1)Tag(標簽)

Tag 是一個單字節的值,用于標識調試信息條目(DIE)的類型。常見的Tag如下:

  • DW_TAG_compile_unit:表示一個編譯單元,通常是源文件。
  • DW_TAG_subprogram:表示一個函數或方法。
  • DW_TAG_variable:表示一個變量,可以是全局變量或局部變量。
  • DW_TAG_formal_parameter:表示函數的參數。
  • DW_TAG_typedef:表示一個類型定義。
  • DW_TAG_structure_type:表示一個結構體類型。  
  • DW_TAG_union_type:表示一個聯合體類型。   
  • DW_TAG_enumeration_type:表示一個枚舉類型。  
  • DW_TAG_array_type:表示一個數組類型。
  • DW_TAG_base_type:表示一個基本類型,如int 、float等。
(2)Attributes(屬性)

Attributes 是一個屬性列表,每個屬性由一個屬性名稱和一個屬性值組成。常見的Attributes如下:

  • DW_AT_name:表示實體的名稱,如變量名、函數名、文件名等。  
  • DW_AT_type:表示實體的類型,通常是一個偏移量,指向.debug_info節中的另一個 DIE。
  • DW_AT_location:表示變量的存儲位置,可以是寄存器或內存地址。
  • DW_AT_low_pc和DW_AT_high_pc:表示函數的代碼范圍,分別表示函數的起始地址和結束地址。
  • DW_AT_decl_file、DW_AT_decl_line 和DW_AT_decl_column:表示實體在源文件中的聲明位置。
(3)Children(子條目)

Children 是一個 DIE 的子條目列表,每個子條目也是一個 DIE。

3.3 .debug_abbrev節

.debug_abbrev節用于定義.debug_info節中調試信息條目(DIE)的結構和屬性的縮寫表。通過使用縮寫表,.debug_info節可以更高效地存儲和解析調試信息,減少重復數據的存儲。

通過命令:readelf -wa 可執行文件,可查看.debug_abbrev節信息,輸出示例如下:

圖片圖片

.debug_abbrev節中的DIE和.debug_info節中的DIE互為抽象和實現的關系。一個比較形象的比喻,.debug_abbrev節中的DIE如同C++中的類,.debug_info節中的DIE如同C++中的對象。類是數據類型,對象為類的具體實現。

3.4 .debug_line節

.debug_line節建立了機器指令地址與源代碼行號之間的映射關系,是實現源碼級調試的核心基礎。

.debug_line節的核心功能是:

  • 提供源代碼行號與機器指令地址的精確映射。
  • 使調試器能夠將程序計數器(PC)值轉換為源代碼位置。
  • 支持設置斷點、單步執行和堆棧跟蹤等基本調試功能。

通過命令:readelf -wl 可執行文件,可查看.debug_line節信息,輸出示例如下:

圖片圖片

注意,.debug_line節的規則比較復雜,我們可以跳過規則學習,先了解.debug_line的作用。.debug_line節最終將會呈現一個指令地址和源文件行號的映射表,見表2。

表2    .debug_line指令地址和行號映射表表2 .debug_line指令地址和行號映射表

3.5 .debug_str節

.debug_str節是一個字符串池,它存儲了調試過程中所需的所有字符串數據,包括:函數名、變量名、類型名、編譯器信息、其他文本描述。

通過命令:readelf -ws 可執行文件,可查看.debug_str節信息,輸出示例如下:

圖片圖片

從輸出示例可以看到.debug_str包含一些我們比較常見的字符串,如果我們想使用這些字符串,只需要從調試文件指定的位置讀取這些字符串即可。

3.6 .debug_line_str節

.debug_line_str節同樣是一個字符串池。這些字符串通常包括文件名、目錄路徑等,它們被.debug_line節中的行號程序引用。

輸出示例如下:

圖片圖片

.debug_line_str和.debug_str的使用方法類似。

4.調試信息分離

調試信息分離是指將調試信息從可執行文件中分離出來,存儲在單獨的文件中。將調試信息存儲在單獨的文件有幾個優點:

  • 減小可執行文件大?。和ㄟ^將調試信息分離到單獨的文件中,可執行文件的大小可以顯著減小。
  • 提高安全性:分離的調試信息文件可以存儲在安全的環境中,從而防止調試信息泄露。
  • 提高性能:較小的可執行文件可以更快地加載和運行,從而提高應用程序的性能。

4.1 實現原理

為了讓大家更好的理解調試信息分離的過程,我們通過一張圖描述該過程,如圖2所示。

圖2    調試信息分離

調試信息分離具體步驟如下:

  • 步驟1:編譯帶調試信息的可執行程序。

gcc -g編譯帶調試信息的可執行文件,以test程序為例,命令如下:

gcc -g -o test test.c
  • 步驟2:生成單獨的調試信息文件。

使用objcopy命令的--only-keep-debug選項,將調試信息提取到一個單獨的文件中,命令如下:

objcopy --only-keep-debug test test.debug

test.debug文件為單獨調試文件。

  • 步驟3:去除可執行文件中的調試信息。

使用objcopy命令的--strip-debug選項,移除可執行文件調試信息,

objcopy --strip-debug test

執行完該命令,可執行文件中的.debug_*節將全部被刪除。    

  • 步驟4:添加調試信息文件鏈接。

使用objcopy命令的--add-gnu-debuglink選項,將調試信息文件的路徑添加到可執行文件中。gdb調試可執行文件時,就能夠自動查找到調試信息文件。

objcopy --add-gnu-debuglink=test.debug test

執行完該命令,可執行文件中將添加一個.gnu_debuglink節,其中包含調試信息文件的路徑。通過以下命令可以查看.gnu_debuglink節中的內容:

readelf -p .gnu_debuglink test

輸出示例如下:

圖片圖片

4.2 gdb調試單獨調試文件

當我們按照上述步驟生成了單獨的調試文件后,我們既能夠獲得一個輕量級的可執行程序,又能夠有一個完整的調試文件。當程序在實際環境運行出現問題時,我們能夠通過單獨的調試文件排查問題。

gdb調試單獨調試文件分為:手動添加調試文件和自動添加調試文件。

手動添加通過gdb add-symbol-file命令完成,輸出示例如下:

(gdb) add-symbol-file test.debug
add symbol table from file "test.debug"
(y or n) y
Reading symbols from test.debug...

自動添加的方式需要在可執行程序中添加調試信息文件鏈接(參考調試信息分離步驟4)。注意,可執行文件和調試文件需要在同一個目錄。輸出示例如下:

圖片圖片


責任編輯:武曉燕 來源: 物聯網心球
相關推薦

2011-07-18 13:11:53

2010-06-23 10:03:01

2010-06-04 17:48:20

Linux編程工具

2024-11-28 12:38:39

gcc開源編譯器

2009-12-23 18:54:53

Fedora Core

2009-12-11 14:05:32

Linux安裝GCC

2011-07-19 16:34:01

Xcode 證書

2024-07-26 10:35:00

2024-09-04 09:43:36

2021-04-25 06:12:19

Java內存布局JVM

2025-08-27 06:25:00

MSTP網絡端口

2018-02-07 09:25:50

Linux命令touch

2015-10-26 15:48:51

安裝Ubuntu 15.1Linux

2009-12-10 19:02:30

2011-11-21 15:12:54

Java斷點Eclipse

2011-07-28 14:31:55

Xcode 調試 異常

2017-07-13 13:13:49

AndroidAPK反編譯

2009-12-23 17:20:55

Fedora GCC

2011-02-13 11:37:45

Android 3.0

2024-05-31 13:34:57

點贊
收藏

51CTO技術棧公眾號

国产成人欧美在线观看| 在线免费亚洲电影| 99在线热播| 日韩欧美不卡视频| 亚洲69av| 欧美三级电影在线看| 手机成人av在线| 六月婷婷综合网| 乱人伦精品视频在线观看| 在线视频日韩精品| 色欲欲www成人网站| 巨茎人妖videos另类| 国产精品二区一区二区aⅴ污介绍| 亚洲综合在线做性| 国产精品va无码一区二区三区| 亚洲第一香蕉网| 欧美新色视频| 极品销魂美女一区二区三区| 97香蕉久久超级碰碰高清版 | 9999精品| 狠狠干狠狠久久| 欧美精品一区二区性色a+v| 神马久久久久久久久久| 麻豆高清免费国产一区| 97碰碰碰免费色视频| 无码人妻精品中文字幕| 一呦二呦三呦国产精品| 日韩欧美成人一区二区| 蜜臀av免费观看| 国产精品电影| 亚洲靠逼com| 日韩欧美精品一区二区| 欧美一区二区公司| 久久精品国产一区二区| 日本韩国在线不卡| 日韩精品一区二区三区国语自制| 91亚洲国产| 亚洲午夜久久久久久久| 国产精品福利导航| 一区二区三区国产好| 欧美嫩在线观看| 欧美伦理片在线看| 欧美一级鲁丝片| 香蕉久久一区二区不卡无毒影院| 最新不卡av| 在线免费观看黄色网址| 久久精品视频免费| 欧美高清性xxxxhd| 天天影院图片亚洲| 不卡电影一区二区三区| 97超碰人人看人人| 国产女人爽到高潮a毛片| 蜜臀精品久久久久久蜜臀| 日韩av高清不卡| 国产精品久免费的黄网站| 99av国产精品欲麻豆| 久久久视频免费观看| 久久久久久蜜桃| 国产a∨精品一区二区三区仙踪林| 日韩av黄色| 欧美日韩免费一区二区三区视频| 手机在线免费观看毛片| 成人一区视频| 欧美视频一区在线| 污视频网站观看| 欧美aaaaaa| 91精品国产色综合久久| 黄色一级片免费播放| 日韩高清二区| 精品国产精品一区二区夜夜嗨| 国产一级免费片| 欧美aaaaaaaa牛牛影院| 亚洲欧美国产日韩中文字幕| 在线视频第一页| 91亚洲国产| 久久6免费高清热精品| 国产亚洲精久久久久久无码77777| 亚洲天堂黄色| 91av在线免费观看视频| 国产精品视频一区在线观看| 日韩av一级片| 91在线无精精品一区二区| 午夜精品久久久久久久91蜜桃| 白白色 亚洲乱淫| 欧美日产一区二区三区在线观看| 91高清在线视频| 亚洲免费在线电影| 日本黄大片在线观看| 成人在线黄色电影| 色婷婷综合视频在线观看| 亚洲免费看av| 亚洲天堂av资源在线观看| 亚洲激情视频在线观看| 色天使在线视频| 色婷婷亚洲mv天堂mv在影片| 色综合久久88色综合天天看泰| 成年人视频在线免费看| 蜜臀av亚洲一区中文字幕| 91丝袜脚交足在线播放| 天堂av在线免费观看| 国产精品色噜噜| 999一区二区三区| 日韩av超清在线观看| 日韩一区二区在线看| 国产制服丝袜在线| 日本电影全部在线观看网站视频| 欧美日韩一区二区综合| 久久精品亚洲国产| 天天操天天爽天天干| 久久99热99| 久久国产精品亚洲va麻豆| 五月天婷婷在线视频| 精品动漫一区二区| www.com污| 亚欧洲精品视频在线观看| 精品国产区一区二区三区在线观看| 日韩aaaaaa| 久久99国产精品成人| 久久久久久久有限公司| 超碰人人在线| 在线精品国精品国产尤物884a| 性折磨bdsm欧美激情另类| 成人免费av| 538国产精品视频一区二区| 国产www视频| 欧美激情一区二区三区| 777777av| 999在线精品| 久久久999精品视频| 久久久精品毛片| 成人福利电影精品一区二区在线观看| 亚洲精品国产精品国自产| 亚洲涩涩在线| 精品国产乱码久久久久久牛牛 | 中文字幕资源网| 97se亚洲国产综合在线| 男人天堂a在线| 国产95亚洲| 久久久99免费视频| 伊人久久国产精品| 国产校园另类小说区| av免费观看网| 久久av国产紧身裤| 久久免费国产精品1| 午夜精品久久久久久久99老熟妇| 亚洲欧美日韩中文播放| 中文字幕国产高清| 欧美激情偷拍自拍| 国产美女高潮久久白浆| 第九色区av在线| 国产传媒av在线| 一区二区三区在线观看视频| 爱爱爱爱免费视频| 日韩电影二区| 国产精品久久网| 福利片在线看| 欧美午夜电影网| 人人爽人人爽人人片| 日本不卡一区二区| 天堂社区 天堂综合网 天堂资源最新版 | 大美女一区二区三区| 亚洲国产精品女人| 激情久久免费视频| 久久综合久久美利坚合众国| 国产视频第一页| 亚洲免费在线观看视频| 国产亚洲精品成人a| 黄色综合网站| 精品国产乱码久久久久| 在线播放高清视频www| 亚洲精品中文字幕有码专区| 国产主播第一页| 国产精品久久久一区麻豆最新章节| 国产原创精品在线| 午夜激情久久| 国产高清精品一区| 亚洲欧美se| 日韩中文字幕不卡视频| www.黄色网址.com| 久蕉依人在线视频| 欧美色男人天堂| 国产精品视频一区二区三 | 午夜精品aaa| 色综合99久久久无码国产精品| 久久er精品视频| 成人在线国产视频| 香蕉久久精品日日躁夜夜躁| 国产精品一区二区3区| 日本在线观看高清完整版| 亚洲精品乱码久久久久久金桔影视 | 精品人妻无码中文字幕18禁| 亚洲作爱视频| 亚洲一区二区三区加勒比| 日韩欧美另类中文字幕| 91成人在线观看国产| 伦xxxx在线| 亚洲精品美女在线观看| 亚洲综合五月天婷婷丁香| av在线一区二区三区| 黄色永久免费网站| 91久久亚洲| 相泽南亚洲一区二区在线播放 | 牛人盗摄一区二区三区视频| 视频91a欧美| 国产+人+亚洲| 丝袜美腿美女被狂躁在线观看| 精品成人佐山爱一区二区| 进去里视频在线观看| 亚洲国产欧美在线人成| 日日碰狠狠添天天爽| 99久久综合99久久综合网站| 香蕉视频999| 亚洲欧美日韩国产综合精品二区| ijzzijzzij亚洲大全| 国产精品欧美日韩一区| 国产精品一区二区不卡视频| 自拍偷拍欧美日韩| 清纯唯美亚洲激情| 伦理av在线| 不卡av日日日| 97在线观看免费观看高清| 精品不卡视频| 欧美老女人xx| 北条麻妃在线| 日韩av在线免费观看| 精品人妻少妇AV无码专区| 欧美日韩一区在线观看| www.久久精品视频| 午夜精品久久久久久久久久久| 丝袜 亚洲 另类 欧美 重口| 国产精品拍天天在线| 熟女俱乐部一区二区| 波多野结衣在线一区| 奇米777在线| 看电视剧不卡顿的网站| 亚洲人成无码www久久久| 亚洲三级毛片| 岛国大片在线播放| 欧美三级网页| 菠萝蜜视频在线观看入口| 911精品美国片911久久久| 亚洲一区免费看| 欧洲杯什么时候开赛| 青青草成人网| 国产精品一区二区av日韩在线| 久久亚洲国产精品日日av夜夜| 国产女人18毛片水真多18精品| 亚洲精品免费在线视频| 二区三区精品| 91九色国产社区在线观看| 自拍偷拍亚洲图片| 亚洲在线一区二区| 国产精品xnxxcom| 亚洲自拍av在线| 天堂精品久久久久| 成人性色av| 欧美激情影院| 欧美黄色直播| 日本在线播放| 国产亚洲精品中文字幕| 一级特黄a大片免费| 91香蕉视频在线| 90岁老太婆乱淫| 欧美经典一区二区三区| 福利视频第一页| 亚洲黄色免费网站| 日韩激情一区二区三区| 精品久久久久久久久中文字幕| 天码人妻一区二区三区在线看| 人妻视频一区二区三区| 精品噜噜噜噜久久久久久久久试看| 亚洲精品国产手机| 亚洲级视频在线观看免费1级| 日韩精品视频在线观看一区二区三区| 亚洲欧美日韩一区二区三区在线| 搞黄视频在线观看| 日韩最新免费不卡| 黄色在线观看视频网站| 51久久精品夜色国产麻豆| 欧美一级大黄| 国产在线视频一区| 亚洲图色一区二区三区| 欧美另类高清视频在线| 青青草原综合久久大伊人精品| 裸体裸乳免费看| 国产欧美亚洲一区| 天天爽人人爽夜夜爽| 国产成a人无v码亚洲福利| 中文在线一区二区三区| 中文久久乱码一区二区| 国产a免费视频| 日韩欧美一区视频| 国产三级按摩推拿按摩| 日韩电影中文字幕一区| 日本中文字幕伦在线观看| 久久久久久久久中文字幕| 男人皇宫亚洲男人2020| 91老司机精品视频| 婷婷综合电影| avove在线观看| 西西人体一区二区| 久久婷婷中文字幕| 91麻豆.com| 午夜写真片福利电影网| 色中色一区二区| 亚洲精品久久久蜜桃动漫| 影音先锋欧美精品| 美女扒开腿让男人桶爽久久软| 国产美女精品视频免费观看| 欧美激情15p| 麻豆传媒网站在线观看| 99re国产精品| 91大神免费观看| 国产日韩欧美一区二区三区乱码| 精品视频久久久久| 欧美日韩视频不卡| 免费毛片在线| 久久免费视频网| 九九99久久精品在免费线bt| 欧美一区国产一区| 亚洲国产精品第一区二区| av中文字幕网址| 久久精品在线免费观看| 日本中文字幕免费| 91精品国产欧美一区二区18| 成人精品一区二区三区校园激情| 97香蕉久久超级碰碰高清版 | 精品国产户外野外| 99久久一区二区| 日韩中文有码在线视频| 亚洲四虎影院| 欧美日韩国产高清视频| 亚洲经典在线| 国产精品亚洲一区二区无码| 亚洲欧美另类久久久精品2019| 中文字幕人妻一区二区三区视频 | 性猛交╳xxx乱大交| 亚洲欧美韩国综合色| 在线观看国产小视频| 国产亚洲精品美女| 欧美第一视频| 欧美成熟毛茸茸复古| 国产日韩一区| 黄色国产在线观看| 丁香五六月婷婷久久激情| 亚洲欧美日韩免费| 69av视频在线播放| 国产精品极品国产中出| 久草视频国产在线| 成人精品鲁一区一区二区| 久久久精品国产sm调教| 欧美成人高清电影在线| 麻豆福利在线观看| 好看的日韩精品| 国产农村妇女毛片精品久久莱园子| 大尺度做爰床戏呻吟舒畅| 午夜精品福利一区二区三区蜜桃| 五月天丁香视频| 456国产精品| 岳的好大精品一区二区三区| 免费日韩视频在线观看| 国产欧美一区二区三区网站| 中文字幕制服诱惑| 久久综合久久88| 丁香综合av| 欧美一级片中文字幕| 国产欧美一二三区| 亚洲最大成人在线视频| 久久91精品国产91久久跳| ccyy激情综合| 干日本少妇首页| 中文字幕免费不卡| 国产精品无码久久久久成人app| 欧美猛交ⅹxxx乱大交视频| 国产精品对白久久久久粗| 成年人视频观看| 欧美国产精品专区| 国产99视频在线| 欧美亚洲在线视频| 日韩一级毛片| wwwww在线观看| 色一情一伦一子一伦一区| 婷婷在线视频观看| 99精彩视频| 快she精品国产999| 免费在线黄色网| 亚洲免费av电影| 一区二区三区| 777精品久无码人妻蜜桃| 国产精品青草综合久久久久99| www.黄色一片| 清纯唯美日韩制服另类| 91精品成人| 精品黑人一区二区三区观看时间| 欧美理论片在线| 国产黄大片在线观看| 一区二区不卡在线观看| 成人一区在线观看| 中文字幕一区二区三区人妻四季| 欧美激情免费观看|