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

學習使用 GDB 調試代碼

開發 后端
故障排除的麻煩在于它很復雜。GNU調試器 并不是一個特別復雜的應用程序,但如果你不知道從哪里開始,甚至不知道何時和為何你可能需要求助于 GDB來進行故障排除,那么它可能會讓人不知所措。如果你一直使用print、echo或printf語句來調試你的代碼,當你開始思考是不是還有更強大的東西時,那么本教程就是為你準備的。

[[387491]]

使用 GNU 調試器來解決你的代碼問題。

GNU 調試器常以它的命令 gdb 稱呼它,它是一個交互式的控制臺,可以幫助你瀏覽源代碼、分析執行的內容,其本質上是對錯誤的應用程序中出現的問題進行逆向工程。

故障排除的麻煩在于它很復雜。GNU 調試器 并不是一個特別復雜的應用程序,但如果你不知道從哪里開始,甚至不知道何時和為何你可能需要求助于 GDB 來進行故障排除,那么它可能會讓人不知所措。如果你一直使用 printecho 或 printf 語句來調試你的代碼,當你開始思考是不是還有更強大的東西時,那么本教程就是為你準備的。

有錯誤的代碼

要開始使用 GDB,你需要一些代碼。這里有一個用 C++ 寫的示例應用程序(如果你一般不使用 C++ 編寫程序也沒關系,在所有語言中原理都是一樣的),其來源于 猜謎游戲系列 中的一個例子。

  1. #include <iostream>
  2. #include <stdlib.h> //srand
  3. #include <stdio.h> //printf
  4.  
  5. using namespace std;
  6.  
  7. int main () {
  8.  
  9. srand (time(NULL));
  10. int alpha = rand() % 8;
  11. cout << "Hello world." << endl;
  12. int beta = 2;
  13.  
  14. printf("alpha is set to is %s\n", alpha);
  15. printf("kiwi is set to is %s\n", beta);
  16.  
  17. return 0;
  18. } // main

這個代碼示例中有一個 bug,但它確實可以編譯(至少在 GCC 5 的時候)。如果你熟悉 C++,你可能已經看到了,但這是一個簡單的問題,可以幫助新的 GDB 用戶了解調試過程。編譯并運行它就可以看到錯誤:

  1. $ g++ -o buggy example.cpp
  2. $ ./buggy
  3. Hello world.
  4. Segmentation fault

排除段故障

從這個輸出中,你可以推測變量 alpha 的設置是正確的,因為否則的話,你就不會看到它后面的那行代碼執行。當然,這并不總是正確的,但這是一個很好的工作理論,如果你使用 printf 作為日志和調試器,基本上也會得出同樣的結論。從這里,你可以假設 bug 在于成功打印的那一行之后的某行。然而,不清楚錯誤是在下一行還是在幾行之后。

GNU 調試器是一個交互式的故障排除工具,所以你可以使用 gdb 命令來運行錯誤的代碼。為了得到更好的結果,你應該從包含有調試符號的源代碼中重新編譯你的錯誤應用程序。首先,看看 GDB 在不重新編譯的情況下能提供哪些信息:

  1. $ gdb ./buggy
  2. Reading symbols from ./buggy...done.
  3. (gdb) start
  4. Temporary breakpoint 1 at 0x400a44
  5. Starting program: /home/seth/demo/buggy
  6.  
  7. Temporary breakpoint 1, 0x0000000000400a44 in main ()
  8. (gdb)

當你以一個二進制可執行文件作為參數啟動 GDB 時,GDB 會加載該應用程序,然后等待你的指令。因為這是你第一次在這個可執行文件上運行 GDB,所以嘗試重復這個錯誤是有意義的,希望 GDB 能夠提供進一步的見解。很直觀,GDB 用來啟動它所加載的應用程序的命令就是 start。默認情況下,GDB 內置了一個斷點,所以當它遇到你的應用程序的 main 函數時,它會暫停執行。要讓 GDB 繼續執行,使用命令 continue

  1. (gdb) continue
  2. Continuing.
  3. Hello world.
  4.  
  5. Program received signal SIGSEGV, Segmentation fault.
  6. 0x00007ffff71c0c0b in vfprintf () from /lib64/libc.so.6
  7. (gdb)

毫不意外:應用程序在打印 “Hello world” 后不久就崩潰了,但 GDB 可以提供崩潰發生時正在發生的函數調用。這有可能就足夠你找到導致崩潰的 bug,但為了更好地了解 GDB 的功能和一般的調試過程,想象一下,如果問題還沒有變得清晰,你想更深入地挖掘這段代碼發生了什么。

用調試符號編譯代碼

要充分利用 GDB,你需要將調試符號編譯到你的可執行文件中。你可以用 GCC 中的 -g 選項來生成這個符號:

  1. $ g++ -o debuggy example.cpp
  2. $ ./debuggy
  3. Hello world.
  4. Segmentation fault

將調試符號編譯到可執行文件中的結果是得到一個大得多的文件,所以通常不會分發它們,以增加便利性。然而,如果你正在調試開源代碼,那么用調試符號重新編譯測試是有意義的:

  1. $ ls -l *buggy* *cpp
  2. -rw-r--r--    310 Feb 19 08:30 debug.cpp
  3. -rwxr-xr-x  11624 Feb 19 10:27 buggy*
  4. -rwxr-xr-x  22952 Feb 19 10:53 debuggy*

用 GDB 調試

加載新的可執行文件(本例中為 debuggy)以啟動 GDB:

  1. $ gdb ./debuggy
  2. Reading symbols from ./debuggy...done.
  3. (gdb) start
  4. Temporary breakpoint 1 at 0x400a44
  5. Starting program: /home/seth/demo/debuggy
  6.  
  7. Temporary breakpoint 1, 0x0000000000400a44 in main ()
  8. (gdb)

如前所述,使用 start 命令進行:

  1. (gdb) start
  2. Temporary breakpoint 1 at 0x400a48: file debug.cpp, line 9.
  3. Starting program: /home/sek/demo/debuggy
  4.  
  5. Temporary breakpoint 1, main () at debug.cpp:9
  6. 9       srand (time(NULL));
  7. (gdb)

這一次,自動的 main 斷點可以指明 GDB 暫停的行號和該行包含的代碼。你可以用 continue 恢復正常操作,但你已經知道應用程序在完成之前就會崩潰,因此,你可以使用 next 關鍵字逐行步進檢查你的代碼:

  1. (gdb) next
  2. 10 int alpha = rand() % 8;
  3. (gdb) next
  4. 11 cout << "Hello world." << endl;
  5. (gdb) next
  6. Hello world.
  7. 12 int beta = 2;
  8. (gdb) next
  9. 14 printf("alpha is set to is %s\n", alpha);
  10. (gdb) next
  11.  
  12. Program received signal SIGSEGV, Segmentation fault.
  13. 0x00007ffff71c0c0b in vfprintf () from /lib64/libc.so.6
  14. (gdb)

從這個過程可以確認,崩潰不是發生在設置 beta 變量的時候,而是執行 printf 行的時候。這個 bug 在本文中已經暴露了好幾次(破壞者:向 printf 提供了錯誤的數據類型),但暫時假設解決方案仍然不明確,需要進一步調查。

設置斷點

一旦你的代碼被加載到 GDB 中,你就可以向 GDB 詢問到目前為止代碼所產生的數據。要嘗試數據自省,通過再次發出 start 命令來重新啟動你的應用程序,然后進行到第 11 行。一個快速到達 11 行的簡單方法是設置一個尋找特定行號的斷點:

  1. (gdb) start
  2. The program being debugged has been started already.
  3. Start it from the beginning? (y or n) y
  4. Temporary breakpoint 2 at 0x400a48: file debug.cpp, line 9.
  5. Starting program: /home/sek/demo/debuggy
  6.  
  7. Temporary breakpoint 2, main () at debug.cpp:9
  8. 9       srand (time(NULL));
  9. (gdb) break 11
  10. Breakpoint 3 at 0x400a74: file debug.cpp, line 11.

建立斷點后,用 continue 繼續執行:

  1. (gdb) continue
  2. Continuing.
  3.  
  4. Breakpoint 3, main () at debug.cpp:11
  5. 11 cout << "Hello world." << endl;
  6. (gdb)

現在暫停在第 11 行,就在 alpha 變量被設置之后,以及 beta 被設置之前。

用 GDB 進行變量自省

要查看一個變量的值,使用 print 命令。在這個示例代碼中,alpha 的值是隨機的,所以你的實際結果可能與我的不同:

  1. (gdb) print alpha
  2. $1 = 3
  3. (gdb)

當然,你無法看到一個尚未建立的變量的值:

  1. (gdb) print beta
  2. $2 = 0

使用流程控制

要繼續進行,你可以步進代碼行來到達將 beta 設置為一個值的位置:

  1. (gdb) next
  2. Hello world.
  3. 12  int beta = 2;
  4. (gdb) next
  5. 14  printf("alpha is set to is %s\n", alpha);
  6. (gdb) print beta
  7. $3 = 2

另外,你也可以設置一個觀察點,它就像斷點一樣,是一種控制 GDB 執行代碼流程的方法。在這種情況下,你知道 beta 變量應該設置為 2,所以你可以設置一個觀察點,當 beta 的值發生變化時提醒你:

  1. (gdb) watch beta > 0
  2. Hardware watchpoint 5: beta > 0
  3. (gdb) continue
  4. Continuing.
  5.  
  6. Breakpoint 3, main () at debug.cpp:11
  7. 11 cout << "Hello world." << endl;
  8. (gdb) continue
  9. Continuing.
  10. Hello world.
  11.  
  12. Hardware watchpoint 5: beta > 0
  13.  
  14. Old value = false
  15. New value = true
  16. main () at debug.cpp:14
  17. 14 printf("alpha is set to is %s\n", alpha);
  18. (gdb)

你可以用 next 手動步進完成代碼的執行,或者你可以用斷點、觀察點和捕捉點來控制代碼的執行。

用 GDB 分析數據

你可以以不同格式查看數據。例如,以八進制值查看 beta 的值:

  1. (gdb) print /o beta
  2. $4 = 02

要查看其在內存中的地址:

  1. (gdb) print /o beta
  2. $5 = 0x2

你也可以看到一個變量的數據類型:

  1. (gdb) whatis beta
  2. type = int

用 GDB 解決錯誤

這種自省不僅能讓你更好地了解什么代碼正在執行,還能讓你了解它是如何執行的。在這個例子中,對變量運行的 whatis 命令給了你一個線索,即你的 alpha 和 beta 變量是整數,這可能會喚起你對 printf 語法的記憶,使你意識到在你的 printf 語句中,你必須使用 %d 來代替 %s。做了這個改變,就可以讓應用程序按預期運行,沒有更明顯的錯誤存在。

當代碼編譯后發現有 bug 存在時,特別令人沮喪,但最棘手的 bug 就是這樣,如果它們很容易被發現,那它們就不是 bug 了。使用 GDB 是獵取并消除它們的一種方法。

下載我們的速查表

生活的真相就是這樣,即使是最基本的編程,代碼也會有 bug。并不是所有的錯誤都會導致應用程序無法運行(甚至無法編譯),也不是所有的錯誤都是由錯誤的代碼引起的。有時,bug 是基于一個特別有創意的用戶所做的意外的選擇組合而間歇性發生的。有時,程序員從他們自己的代碼中使用的庫中繼承了 bug。無論原因是什么,bug 基本上無處不在,程序員的工作就是發現并消除它們。

GNU 調試器是一個尋找 bug 的有用工具。你可以用它做的事情比我在本文中演示的要多得多。你可以通過 GNU Info 閱讀器來了解它的許多功能:

  1. $ info gdb

無論你是剛開始學習 GDB 還是專業人員的,提醒一下你有哪些命令是可用的,以及這些命令的語法是什么,都是很有幫助的。

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2021-07-28 08:53:53

GoGDB調試

2015-08-14 09:21:09

gdb工具調試 Go

2025-03-31 03:25:00

2017-02-06 18:42:37

Linuxgdb程序

2022-07-25 07:57:19

工具代碼調試

2021-06-04 05:18:29

ARM程序Gdbserver

2010-06-04 17:48:20

Linux編程工具

2025-07-03 02:00:00

2022-09-15 14:56:12

GDB調試鴻蒙

2023-11-22 13:13:54

多線程死鎖

2010-03-26 15:41:39

Python腳本

2022-12-19 10:10:07

GDB命令

2025-06-26 05:00:00

2009-12-04 13:31:50

VS代碼調試

2025-07-08 00:00:00

2017-09-12 15:11:12

Chrome

2009-06-03 14:42:21

Eclipse調試調試Java程序

2025-07-02 09:16:40

2019-12-06 14:30:41

GNU調試器GDB修復代碼

2025-09-28 01:10:00

點贊
收藏

51CTO技術棧公眾號

欧美一区视久久| 456国产精品| 亚洲成人av免费观看| 菠萝蜜视频国产在线播放| 国产成人综合在线播放| 97在线视频免费| 青娱乐国产视频| 精品一区二区三区视频在线播放 | 国产精品无码免费播放| 欧美日本中文| 欧美一区二区三区视频免费播放 | 国产超碰人人模人人爽人人添| 欧美日韩123| 666欧美在线视频| 又粗又黑又大的吊av| 日韩欧美小视频| 成人黄色av电影| 久久久久久亚洲精品中文字幕| 亚洲AV成人精品| av免费在线一区| 午夜视频在线观看一区| 中文字幕一区二区三区在线乱码 | 美女隐私在线观看| 麻豆国产欧美一区二区三区| 中文字幕日韩有码| 午夜久久久久久久| 精品一区二区三区中文字幕视频| 亚洲精品欧美激情| 台湾成人av| 一级黄色片在线| 国产日韩欧美在线播放不卡| 欧美成人免费大片| 色噜噜噜噜噜噜| 欧美日韩看看2015永久免费| 日韩一区二区三区视频在线观看| 成人黄色大片网站| 精品51国产黑色丝袜高跟鞋| 国产日韩av一区二区| 国精产品一区二区| 亚洲高清视频在线播放| 国产在线精品不卡| 成人两性免费视频| 中文字幕在线观看国产| 午夜欧美精品久久久久久久| 中文字幕日韩av电影| 亚洲av无码国产精品久久| 99久久人爽人人添人人澡 | 国产亚洲精品久久777777| 久久中文字幕av| 精品国产一二三区| 黑人巨大猛交丰满少妇| 亚洲国产福利| 狠狠躁夜夜躁人人躁婷婷91| 精品人妻少妇一区二区| 欧洲成人综合网| 悠悠色在线精品| 国产日韩第一页| 麻豆网站视频在线观看| 国产精品麻豆久久久| 日韩av一区二区三区在线| 国产精品探花视频| 欧美综合国产| 欧美在线亚洲一区| www青青草原| 精品国产123区| 国产小视频国产精品| 69精品无码成人久久久久久| 精品日本12videosex| 中文字幕国产亚洲| 精品女人久久久| 小小影院久久| 欧美大奶子在线| 久久久久无码国产精品不卡| 久久一本综合| 久久国产精品久久精品| 国产一级中文字幕| 羞羞视频在线观看欧美| 国产精品视频自拍| 99久久久久久久| 成人av网站大全| 麻豆视频成人| 91精品国产91久久久久游泳池 | 欧美麻豆精品久久久久久| 青青青国产在线观看| 久久久一本精品| 777a∨成人精品桃花网| 性生活免费在线观看| www.欧美视频| 亚洲第一区中文字幕| 男女黄床上色视频| 国产精品片aa在线观看| 久久影院中文字幕| 六月丁香婷婷综合| 宅男噜噜噜66一区二区| 国产精品久久久久99| 99热这里只有精品在线| 激情伊人五月天久久综合| 超碰97在线资源| 福利小视频在线观看| 亚洲色图19p| 亚洲中文字幕无码专区| 日本а中文在线天堂| 欧美三级日本三级少妇99| 久久久久无码国产精品一区李宗瑞| 免费看日产一区二区三区 | 久久精品一偷一偷国产| av片在线免费看| 精品成人久久| 国产精品日韩欧美| 天天干天天干天天干| 国产精品欧美久久久久一区二区| 欧美污视频久久久| 在线观看小视频| 欧美亚洲综合另类| 性色av蜜臀av浪潮av老女人| 欧美jizz19性欧美| 久久久极品av| 久久久久久天堂| 久久成人羞羞网站| 欧美裸体网站| а√在线中文在线新版| 91精品国产福利| 激情av中文字幕| 日韩免费高清| 日韩美女毛茸茸| 韩国中文字幕hd久久精品| 国产精品每日更新在线播放网址| 成年人黄色在线观看| 爱情电影社保片一区| 欧美mv日韩mv| 农村黄色一级片| 久久激情五月激情| dy888夜精品国产专区| www在线免费观看| 欧美性生交xxxxxdddd| 国产xxxx视频| 亚洲国产导航| 国产在线资源一区| av老司机免费在线| 精品国产乱码久久久久久免费| 成人精品在线观看视频| 在线播放不卡| 国模精品娜娜一二三区| 免费av不卡| 欧美精品欧美精品系列| 国产小视频你懂的| 六月婷婷色综合| 一区二区日本| 亚洲男女网站| 久久久成人精品视频| 97人妻精品一区二区三区视频| 99久久婷婷国产精品综合| 免费网站在线观看视频| theporn国产在线精品| 久久久久成人精品| 免费看av毛片| 精品久久久中文| 91亚洲一区二区| 综合久久久久| 97人人香蕉| 成人影音在线| 日韩乱码在线视频| 欧美brazzers| 中文字幕一区二区三区四区| 三级一区二区三区| 中文字幕一区二区三区在线视频| 国产成人福利网站| 春暖花开成人亚洲区| 欧美日韩高清一区二区三区| 欧美老熟妇乱大交xxxxx| 性色一区二区| 亚洲综合网中心| 嫩呦国产一区二区三区av| 欧美乱妇高清无乱码| 日批免费在线观看| 色综合视频在线观看| 荫蒂被男人添免费视频| 久久精品官网| 久久综合九色99| 99久久精品免费看国产小宝寻花| 91麻豆精品国产91久久久更新时间| 阿v天堂2014| 久久av一区| 中文字幕人成一区| 欧美大胆视频| 国产日韩欧美夫妻视频在线观看 | 2021年精品国产福利在线| 久久久久久成人精品| 久久av少妇| 日韩欧美成人一区| 青青视频在线免费观看| 亚洲视频一二区| 黄色片视频免费观看| 亚洲国产免费| 亚洲看片网站| 国内精品麻豆美女在线播放视频| 欧美激情精品在线| 九色在线视频| 精品国产91亚洲一区二区三区婷婷| 婷婷在线精品视频| 国产成人精品在线看| 少妇人妻互换不带套| 欧美粗暴jizz性欧美20| 日韩高清av电影| av自拍一区| 成人国产精品一区二区| 免费h视频在线观看| 久久亚洲精品中文字幕冲田杏梨| 国产一区二区网站| 丁香五六月婷婷久久激情| 亚洲女同二女同志奶水| 99国产欧美另类久久久精品 | 鲁大师私人影院在线观看| 久草精品在线观看| 91av在线免费播放| 精品电影一区| 麻豆一区二区三区在线观看| 欧美伦理影院| 免费一区二区三区| 国产色噜噜噜91在线精品| 91精品视频免费观看| 一区二区视频免费完整版观看| 中文字幕亚洲综合久久筱田步美| 91久久精品国产91性色69| 福利一区视频在线观看| 欧美黑人性猛交xxx| 国产精品卡一卡二卡三| 国产免费看av| 99国产麻豆精品| 国产精品91av| 极品少妇xxxx精品少妇偷拍| 日韩av片网站| 日韩专区在线视频| 欧美色图色综合| 91久久久久| 欧洲精品在线播放| 亚洲图区在线| 欧美激情第六页| 窝窝社区一区二区| 成人免费视频网| 国产美女高潮在线观看| 欧美高跟鞋交xxxxhd| 久蕉在线视频| 亚洲天堂第二页| 福利成人在线观看| 欧美tickling挠脚心丨vk| 精品久久久久中文慕人妻| 欧美一区二区免费视频| 99视频免费看| 欧美视频一区二区三区| 亚洲中文一区二区| 在线国产亚洲欧美| 在线观看国产黄| 69p69国产精品| 国产深喉视频一区二区| 精品久久久久久久久久久久久久久久久| 青青草视频在线观看免费| 一本色道a无线码一区v| 欧美一级高潮片| 黄色一区二区三区| 一二三区免费视频| 欧美日韩国产另类一区| 国产精品国产一区二区三区四区 | 国产日韩综合av| 熟女少妇内射日韩亚洲| 白白色亚洲国产精品| 自拍视频一区二区| 久久久久青草大香线综合精品| 日本wwww色| 99这里只有久久精品视频| 91av在线免费| 中文欧美字幕免费| 国产黄色小视频网站| 亚洲午夜久久久久中文字幕久| 亚洲女人久久久| 亚洲综合丝袜美腿| 在线观看黄网站| 欧美日韩精品在线| 天天天天天天天干| 日韩欧美在线影院| 婷婷色在线视频| 中文字幕久热精品在线视频| 国产精品视频一区二区久久| 久久精品国产v日韩v亚洲| 1234区中文字幕在线观看| 国产经典一区二区| 国产午夜久久av| 91免费综合在线| 久久久伦理片| 亚洲高清视频在线观看| 黄色综合网站| 国产精品视频黄色| 国产mv日韩mv欧美| 欧美丰满美乳xxⅹ高潮www| 99re免费视频精品全部| 日韩av网站在线播放| 亚洲国产精品视频| 亚洲无码久久久久久久| 亚洲成人av在线| 黄页视频在线播放| 日本韩国在线不卡| 成人午夜大片| 欧美爱爱视频网站| 香蕉国产精品偷在线观看不卡| 国产成人黄色片| 国产乱子轮精品视频| 无码少妇精品一区二区免费动态| 国产精品久久久久影院老司| 日本一区二区不卡在线| 91精品欧美久久久久久动漫| 精品视频一二三| 国内精品在线一区| 国产精品99久久免费| 日韩国产一区久久| 9国产精品视频| 亚洲天堂av一区二区三区| 久久久久久久久久久久久久久99| 91社区视频在线观看| 亚洲情趣在线观看| 日日夜夜狠狠操| 亚洲黄色www网站| 日韩伦理电影网站| 成人午夜一级二级三级| 色婷婷色综合| 欧美性猛交xxx乱久交| 久久精品视频一区二区三区| 国产午夜激情视频| 色婷婷精品久久二区二区蜜臀av| 中文字幕在线观看1| 亚洲天堂av网| 成人做爰视频www网站小优视频| 亚洲va欧美va国产综合剧情| 97精品国产| 国产又大又黄又猛| 国产91在线观看| avtt天堂在线| 日韩午夜在线影院| 韩日视频在线| 日本高清不卡在线| 啄木系列成人av电影| 黄色动漫网站入口| 91视视频在线观看入口直接观看www | 国产欧美日韩视频一区二区| 欧美在线观看不卡| 日韩欧美卡一卡二| av免费在线免费| 91国产在线播放| 国内在线观看一区二区三区| 麻豆免费在线观看视频| 亚洲成av人片在www色猫咪| 黄色美女一级片| 久久亚洲精品毛片| 美女精品久久| 霍思燕三级露全乳照| 激情综合色丁香一区二区| 狠狠人妻久久久久久综合蜜桃| 日韩毛片一二三区| 精品国产av一区二区三区| 欧美激情在线观看视频| heyzo高清在线| 国产欧美精品一区二区| 一本到12不卡视频在线dvd| 黄色片视频在线播放| gogo大胆日本视频一区| 亚洲va在线观看| 国产午夜精品美女视频明星a级| sm在线观看| 国产日韩欧美视频在线| 欧美国产三区| 亚洲精品国产成人av在线| 一本大道综合伊人精品热热| 欧美熟妇另类久久久久久不卡 | 国产精品v亚洲精品v日韩精品| 第四色婷婷基地| 亚洲男人的天堂在线观看| 国产性生活视频| 久久精品99国产精品酒店日本 | 欧洲av在线精品| 免费高清在线观看| 国产精品成人观看视频免费| 亚洲影视一区二区三区| 国产精品入口麻豆| 欧美日韩免费高清一区色橹橹| 国产福利在线观看| 成人做爰www免费看视频网站| 99re6这里只有精品| 丰满少妇一区二区三区专区| 欧美日韩亚洲高清| 免费a级毛片在线播放| 久久精品人人做人人爽电影| 精品亚洲aⅴ乱码一区二区三区| 韩国一级黄色录像| 欧美另类一区二区三区| 成全电影大全在线观看| 国产精品日韩一区二区三区 | 亚洲精品在线a| 国产第一页视频| 亚洲国产欧美日韩另类综合| av电影在线观看| 精品国产免费久久久久久尖叫|