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

一個 Demo 學會使用 Go Delve 調試

開發 后端
在 Go 語言中,Delve 調試工具是與 Go 語言親和度最高的,因為 Delve 是 Go 語言實現的。其在我們日常工作中,非常常用。

[[412997]]

本文轉載自微信公眾號「腦子進煎魚了」,作者陳煎魚。轉載本文請聯系腦子進煎魚了公眾號。

大家好,我是煎魚。

在 Go 語言中,除了 go tool 工具鏈中的 pprof、trace 等剖析工具的大利器外。常常還會有小伙伴問,有沒有更好用,更精細的,

大家總嫌棄 pprof、trace 等工具,不夠細,沒法一口氣看到根因,或者具體變量...希望能夠最好能追到代碼級別調試的,看到具體變量的值是怎么樣的,隨意想怎么看怎么看的那種。

為此今天給大家介紹 Go 語言強大的 Delve (dlv)調試工具,來更深入問題剖析。

安裝

我們需要先安裝 Go delve,若是 Go1.16 及以后的版本,可以直接執行下述命令安裝:

  1. $ go install github.com/go-delve/delve/cmd/dlv@latest 

也可以通過 git clone 的方式安裝:

  1. $ git clone https://github.com/go-delve/delve 
  2. $ cd delve 
  3. $ go install github.com/go-delve/delve/cmd/dlv 

在安裝完畢后,我們執行 dlv version 命令,查看安裝情況:

  1. $ dlv version 
  2. Delve Debugger 
  3. Version: 1.7.0 
  4. Build: $Id: e353a65161e6ed74952b96bbb62ebfc56090832b $ 

可以明確看到我們所安裝的版本是 v1.7.0。

演示程序

我們計劃用一個反轉字符串的演示程序來進行 Go 程序的調試。第一部分先是完成 stringer 包的 Reverse 方法。

代碼如下:

  1. package stringer 
  2.  
  3. func Reverse(s string) string { 
  4.  r := []rune(s) 
  5.  for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 { 
  6.   r[i], r[j] = r[j], r[i] 
  7.  } 
  8.  return string(r) 

再在具體的 main 啟動函數中進行調用。代碼如下:

  1. import ( 
  2.  "fmt" 
  3.  
  4.  "github.com/eddycjy/awesome-project/stringer" 
  5.  
  6. func main() { 
  7.  fmt.Println(stringer.Reverse("腦子進煎魚了!")) 

輸出結果:

  1. !了魚煎進子腦 

進行調試

Delve 是 Go 程序的源代碼級調試器。Delve 使您能夠通過控制流程的執行與您的程序進行交互,查看變量,提供線程、goroutine、CPU 狀態等信息。

其一共支持如下 11 個子命令:

  1. Available Commands: 
  2.   attach      Attach to running process and begin debugging. 
  3.   connect     Connect to a headless debug server. 
  4.   core        Examine a core dump. 
  5.   dap         [EXPERIMENTAL] Starts a TCP server communicating via Debug Adaptor Protocol (DAP). 
  6.   debug       Compile and begin debugging main package in current directory, or the package specified. 
  7.   exec        Execute a precompiled binaryand begin a debug session. 
  8.   help        Help about any command 
  9.   run         Deprecated command. Use 'debug' instead
  10.   test        Compile test binary and begin debugging program. 
  11.   trace       Compile and begin tracing program. 
  12.   version     Prints version. 

我們今天主要用到的是 debug 命令,他能夠編譯并開始調試當前目錄下的主包,或指定的包,是最常用的功能之一。

接下來我們利用這個演示程序來進行 dlv 的深入調試和應用。

執行如下命令:

  1. ➜  awesomeProject dlv debug . 
  2. Type 'help' for list of commands. 
  3. (dlv)  

我們先在演示程序根目錄下執行了 debug,進入了 dlv 的交互模式。

再使用關鍵字 b(break 的縮寫)對 main.main 方法設置斷點:

  1. (dlv) b main.main 
  2. Breakpoint 1 (enabled) set at 0x10cbab3 for main.main() ./main.go:9 
  3. (dlv)  

設置完畢后,我們可以看到方法對應的文件名、行數。接著我們可以執行關鍵字 c(continue 的縮寫)跳轉到下一個斷點處:

  1. (dlv) c 
  2. > main.main() ./main.go:9 (hits goroutine(1):1 total:1) (PC: 0x10cbab3) 
  3.      4:  "fmt" 
  4.      5:  
  5.      6:  "github.com/eddycjy/awesome-project/stringer" 
  6.      7: ) 
  7.      8:  
  8. =>   9: func main() { 
  9.     10:  fmt.Println(stringer.Reverse("腦子進煎魚了!")) 
  10.     11: } 
  11. (dlv)  

在斷點處,我看可以看到具體的代碼塊、goroutine、CPU 寄存器地址等運行時信息。

緊接著執行關鍵字 n(next 的縮寫)單步執行程序的下一步:

  1. (dlv) n 
  2. > main.main() ./main.go:10 (PC: 0x10cbac1) 
  3.      5:  
  4.      6:  "github.com/eddycjy/awesome-project/stringer" 
  5.      7: ) 
  6.      8:  
  7.      9: func main() { 
  8. =>  10:  fmt.Println(stringer.Reverse("腦子進煎魚了!")) 
  9.     11: } 

我們可以看到程序走到了 main.go 文件中的第 10 行中,并且調用了 stringer.Reverse 方法去處理。

此時我們可以執行關鍵字 s(step 的關鍵字)進入到這個函數中去繼續調試:

  1. (dlv) s 
  2. > github.com/eddycjy/awesome-project/stringer.Reverse() ./stringer/string.go:3 (PC: 0x10cb87b) 
  3.      1: package stringer 
  4.      2:  
  5. =>   3: func Reverse(s string) string { 
  6.      4:  r := []rune(s) 
  7.      5:  for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 { 
  8.      6:   r[i], r[j] = r[j], r[i] 
  9.      7:  } 
  10.      8:  return string(r) 

輸入后,調試的光標會到 Reverse 方法上,此時我們可以調用關鍵字 p(print 的縮寫)傳出所傳入的變量的值:

  1. (dlv) p s 
  2. "腦子進煎魚了!" 

此處函數的形參變量是 s,輸出了 “腦子進煎魚了!”,與我們所傳入的是一致的。

但故事一般沒有這么的簡單,會用到 Delve 來調試,說明是比較細致、隱患的 BUG。為此我們大多需要更進一步的深入。

我們繼續圍觀 Reverse 方法:

  1. 5:  for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 { 
  2.  6:   r[i], r[j] = r[j], r[i] 
  3.  7:  } 

從表現來看,我們常常會懷疑是第 6 行可能是問題的所在。這時可以針對性的對第 6 行進行斷點查看:

  1. (dlv) b 6 
  2. Breakpoint 2 (enabled) set at 0x10cb92c for github.com/eddycjy/awesome-project/stringer.Reverse() ./stringer/string.go:6 

設置完斷點后,我們只需要執行關鍵字 c,繼續下一步:

  1. (dlv) c 
  2. > github.com/eddycjy/awesome-project/stringer.Reverse() ./stringer/string.go:6 (hits goroutine(1):1 total:1) (PC: 0x10cb92c) 
  3.      1: package stringer 
  4.      2:  
  5.      3: func Reverse(s string) string { 
  6.      4:  r := []rune(s) 
  7.      5:  for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 { 
  8. =>   6:   r[i], r[j] = r[j], r[i] 
  9.      7:  } 
  10.      8:  return string(r) 
  11.      9: } 

走到對應的代碼片段后,執行關鍵字 locals:

  1. (dlv) locals 
  2. r = []int32 len: 7, cap: 32, [...] 
  3. j = 6 
  4. i = 0 

我們就可以看到對應的變量 r, i, j 的值是多少,可以根據此來分析程序流轉是否與我們預想的一致。

另外也可以調用關鍵字 set 去針對特定變量設置期望的值:

  1. (dlv) set i = 1 
  2. (dlv) locals 
  3. r = []int32 len: 7, cap: 32, [...] 
  4. j = 6 
  5. i = 1 

設置后,若還需要繼續排查,可以繼續調用關鍵字 c 去定位,這種常用于特定變量的特定值的異常,這樣一設置一調試基本就能排查出來了。

在排查完畢后,我們可以執行關鍵字 r(reset 的縮寫):

  1. (dlv)  r 
  2. Process restarted with PID 56614 

執行完畢后,整個調試就會重置,像是前面在打斷點時所設置的變量值就會恢復。

若要查看設置的斷點情況,也可以執行關鍵字 bp 查看:

  1. (dlv) bp 
  2. Breakpoint runtime-fatal-throw (enabled) at 0x1038fc0 for runtime.fatalthrow() /usr/local/Cellar/go/1.16.2/libexec/src/runtime/panic.go:1163 (0) 
  3. Breakpoint unrecovered-panic (enabled) at 0x1039040 for runtime.fatalpanic() /usr/local/Cellar/go/1.16.2/libexec/src/runtime/panic.go:1190 (0) 
  4.  print runtime.curg._panic.arg 
  5. Breakpoint 1 (enabled) at 0x10cbab3 for main.main() ./main.go:9 (0) 
  6. Breakpoint 2 (enabled) at 0x10cb92c for github.com/eddycjy/awesome-project/stringer.Reverse() ./stringer/string.go:6 (0) 

查看斷點情況后,若有部分已經排除了,可以調用關鍵字 clearall 對一些斷點清除:

  1. (dlv) clearall main.main 
  2. Breakpoint 1 (enabled) cleared at 0x10cbab3 for main.main() ./main.go:9 

若不指點斷點,則會默認清除全部斷點。

在日常的 Go 工程中,若都從 main 方法進入就太繁瑣了。我們可以直接借助函數名進行調式定位:

  1. (dlv) funcs Reverse 
  2. github.com/eddycjy/awesome-project/stringer.Reverse 
  3. (dlv) b stringer.Reverse 
  4. Breakpoint 3 (enabled) set at 0x10cb87b for github.com/eddycjy/awesome-project/stringer.Reverse() ./stringer/string.go:3 
  5. (dlv) c 
  6. > github.com/eddycjy/awesome-project/stringer.Reverse() ./stringer/string.go:3 (hits goroutine(1):1 total:1) (PC: 0x10cb87b) 
  7.      1: package stringer 
  8.      2:  
  9. =>   3: func Reverse(s string) string { 
  10.      4:  r := []rune(s) 
  11.      5:  for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 { 
  12.      6:   r[i], r[j] = r[j], r[i] 
  13.      7:  } 
  14.      8:  return string(r) 

緊接著其他步驟都與先前的一樣,進行具體的調試就好了。我們也可以借助 Go 語言的公共函數進行計算:

  1. (dlv) p len(r)-1 

也可以借助關鍵字 vars 查看某個包下的所有全局變量的值,例如:vars main。這種方式對于查看全局變量的情況非常有幫助。

排查完畢后,執行關鍵字 exit 就可以愉快的退出了:

  1. (dlv) exit 

解決完問題,可以下班了 :)

總結

在 Go 語言中,Delve 調試工具是與 Go 語言親和度最高的,因為 Delve 是 Go 語言實現的。其在我們日常工作中,非常常用。

 

像是假設程序的 for 循環運行到第 N 次才出現 BUG 時,我們就可以通過斷點對應的方法和代碼塊,再設置變量的值,進行具體的查看,就可以解決。

 

責任編輯:武曉燕 來源: 腦子進煎魚了
相關推薦

2021-07-28 08:53:53

GoGDB調試

2020-07-10 16:52:43

DelveGo程序開源

2021-07-29 07:55:19

Demo 工作池

2023-03-29 08:18:16

Go調試工具

2022-05-23 09:22:20

Go語言調試器Delve

2023-11-10 09:20:28

Java工具

2023-12-27 07:40:43

HTTP服務器負載均衡

2021-12-28 07:20:43

Hippo WebAssembly云原生

2021-07-26 05:07:23

Swift萬花尺代碼

2021-10-09 10:50:30

JavaScript編程開發

2020-12-08 08:46:07

GoJava工具

2025-05-20 09:39:57

GogRPC微服務

2021-05-30 07:56:51

QSettingsLog4Qt變量

2024-06-03 08:09:39

2024-06-06 09:44:33

2024-07-19 08:21:24

2024-12-19 00:16:43

2024-08-21 08:21:45

CNN算法神經網絡

2024-08-02 10:28:13

算法NLP模型

2009-11-05 15:25:36

WCF服務端配置
點贊
收藏

51CTO技術棧公眾號

三级全黄做爰视频| 99国产精品白浆在线观看免费| 亚洲美女性囗交| 日韩中文字幕影院| 久久亚洲美女| 在线日韩精品视频| 欧美三级理论片| 国产网站在线免费观看| 成人午夜又粗又硬又大| 4p变态网欧美系列| 性の欲びの女javhd| 中文字幕乱码在线播放| 国产精品久久夜| 超碰97网站| 自拍偷拍18p| 香蕉精品视频在线观看| 这里只有精品视频在线观看| 日韩一级特黄毛片| 日本啊v在线| 精品一区二区三区欧美| 欧美激情奇米色| a天堂中文字幕| 日韩激情综合| 色狠狠色噜噜噜综合网| 青春草在线视频免费观看| 香蕉av一区二区三区| 日本 国产 欧美色综合| 久久久久久av| 国产传媒在线看| 波多野结衣在线一区二区 | 亚洲欧洲av在线| 国产精品.com| 中文字幕一二区| 在线综合亚洲| www.美女亚洲精品| 少妇特黄一区二区三区| 6080亚洲理论片在线观看| 精品久久久久久久大神国产| 亚洲一区二三| 亚洲欧洲综合在线| 国产一本一道久久香蕉| 国产精品av在线| 91九色丨porny丨肉丝| 999成人精品视频线3| 日韩成人xxxx| jjzz黄色片| crdy在线观看欧美| 在线观看视频一区| 日韩网站在线免费观看| 秋霞影院午夜丰满少妇在线视频| 西西裸体人体做爰大胆久久久| 日韩视频一区二区三区在线播放| 中文字幕久久综合| 91精彩视频在线观看| 26uuu欧美| 91久久精品www人人做人人爽| 日韩精品电影一区二区三区| 92久久精品| 亚洲精品国产精华液| 午夜精品亚洲一区二区三区嫩草 | 午夜精品久久17c| 青青草原在线免费观看| 97在线精品| 日韩综合中文字幕| a资源在线观看| 一区二区三区日本久久久| 精品国内二区三区| 久久久久中文字幕亚洲精品| 成人国产精品久久| 欧美日韩亚洲丝袜制服| 亚洲无吗一区二区三区| 少妇精品视频一区二区免费看| 中文字幕欧美三区| 艳色歌舞团一区二区三区| 国产高清视频在线播放| 久久精品一区二区| 日韩成人av网站| 波多野结衣在线影院| 欧美国产日本韩| 无码免费一区二区三区免费播放 | 国产福利在线视频| 国产亚洲综合色| 亚洲精品国产系列| 日本高清在线观看wwwww色| 中文字幕在线观看一区| 国产精品12p| 欧美videos另类精品| 亚洲综合色网站| www.av中文字幕| 欧美激情成人动漫| 丰满岳妇乱一区二区三区| 男人日女人bb视频| 日韩制服诱惑| 欧美一卡2卡3卡4卡| 精品国产免费久久久久久婷婷| 成人动漫一区| 欧美午夜精品电影| 97人人模人人爽人人澡| 成功精品影院| 亚洲欧美日韩精品久久奇米色影视 | 国产精品传媒麻豆hd| 欧美怡红院视频| 国产5g成人5g天天爽| 都市激情久久| 亚洲男人第一av网站| 1024在线看片| 黄色成人精品网站| 欧美亚洲国产精品| 91国内精品久久久| 成人免费毛片片v| 色大师av一区二区三区| 色呦呦在线看| 日本高清不卡视频| 午夜诱惑痒痒网| 麻豆国产欧美一区二区三区r| 制服丝袜亚洲色图| 极品粉嫩小仙女高潮喷水久久 | 精品动漫一区| 国产精品丝袜视频| 日韩专区一区二区| 亚洲一区二区三区在线看| 国产福利在线免费| 国产99精品一区| 久久久最新网址| www.久久色| 最近中文字幕一区二区三区| 手机在线免费观看毛片| 午夜精品福利影院| 欧美久久精品午夜青青大伊人| 久久久久久久久久久97| 蜜臀av一区二区在线免费观看| 国产精品香蕉av| 加勒比一区二区三区在线| 五月天欧美精品| 9.1在线观看免费| 欧美激情偷拍| 98国产高清一区| 尤物在线网址| 精品日韩一区二区三区| 日韩一级片av| 国产精品18久久久久| 最新av网址在线观看| 91丨精品丨国产| 日韩视频免费观看| 亚洲一区二区天堂| 日韩一区欧美一区| 色综合天天色综合| 日本一区二区高清不卡| 国产精品午夜一区二区欲梦| 在线看的av网站| 欧美精品视频www在线观看| 大地资源高清在线视频观看| 久久精品国产精品亚洲精品| 一级日韩一区在线观看| 91精品亚洲一区在线观看| 另类专区欧美制服同性| 国产av无码专区亚洲a∨毛片| 久久亚洲精品国产精品紫薇| 日韩欧美一区三区| 欧美猛男同性videos| 国产精品99久久久久久久久| 婷婷在线视频| 欧美二区三区的天堂| 一区视频免费观看| 不卡视频免费播放| 欧美三级午夜理伦三级| 成人影视亚洲图片在线| 成人国产精品日本在线| 2024短剧网剧在线观看| 亚洲国产精品电影在线观看| 中文字幕一区在线播放| 国产精品欧美久久久久一区二区 | 成年网站在线视频网站| 亚洲国语精品自产拍在线观看| 91视频最新网址| 国产成人精品亚洲777人妖| 国产精品网站免费| 精品中文字幕一区二区三区av| 欧美激情伊人电影| 天天躁日日躁狠狠躁喷水| 一本一道久久a久久精品| 国产黄色录像视频| 成人午夜碰碰视频| 久久久久久三级| 真实国产乱子伦精品一区二区三区| 国产盗摄xxxx视频xxx69| 男人和女人做事情在线视频网站免费观看| 黄色成人在线免费| www色com| 国产91精品一区二区麻豆亚洲| 亚洲一区二区在线观| 秋霞影院一区| 国产精品高潮呻吟久久av黑人| 日本福利片高清在线观看| 欧美日韩激情一区| 日韩精品视频免费看| 中文字幕一区二区三区四区| 国产视频久久久久久| 狠狠色丁香婷婷综合| 18禁男女爽爽爽午夜网站免费 | 欧美久久在线| 91麻豆精品国产综合久久久| 韩国日本不卡在线| 日本电影全部在线观看网站视频| 欧美日韩亚洲综合在线| 福利一区二区三区四区| 国产精品护士白丝一区av| 波多野结衣有码| 国产麻豆视频精品| 亚洲天堂av线| 极品中文字幕一区| 亚洲永久一区二区三区在线| 国产一级成人av| 91精品在线看| 久久91导航| 91精品国产电影| 欧美日韩经典丝袜| 俺去亚洲欧洲欧美日韩| 隣の若妻さん波多野结衣| 欧美疯狂做受xxxx富婆| 国产精品suv一区| 亚洲成a人在线观看| 精品无码久久久久成人漫画 | 黄色在线观看av| 国产精品一卡二卡在线观看| 亚洲黄色小视频在线观看| 亚洲综合另类| 亚洲精品久久久久久久蜜桃臀| baoyu135国产精品免费| 成人h视频在线| 成人福利一区二区| 青青久久av北条麻妃海外网| 黄色美女视频在线观看| 欧美精品亚州精品| 99视频免费在线观看| 久久久国产91| 夜级特黄日本大片_在线| 亚洲视频777| 男人天堂资源在线| 亚洲精品在线观看www| 三级视频在线| 亚洲欧美激情在线视频| 国产在线视频你懂得| 亚洲欧美三级在线| 黄色影院在线播放| 国产亚洲人成a一在线v站| 欧洲毛片在线| 亚洲丝袜av一区| 国产日本在线| 最新69国产成人精品视频免费| 国产视频手机在线观看| 欧美精品精品一区| 国产内射老熟女aaaa∵| 91精品国产一区二区| av高清一区二区| 欧美大黄免费观看| 老牛影视av牛牛影视av| 亚洲第一视频网站| 人成在线免费视频| 中文字幕亚洲欧美一区二区三区 | 伊人久久男人天堂| 超碰免费97在线观看| www日韩欧美| 丝袜美腿av在线| 97久久精品国产| 美女色狠狠久久| 国产三级精品网站| 精品视频成人| 国语精品中文字幕| 一区二区三区韩国免费中文网站| 亚洲最大的av网站| 成人动态视频| 欧美日韩喷水| 国产精品88久久久久久| 欧美三级午夜理伦三级老人| 欧美日韩亚洲一区在线观看| 国产美女三级视频| 奇米亚洲午夜久久精品| 免费欧美一级片| 久久丝袜美腿综合| 色婷婷在线视频观看| 亚洲高清免费在线| 中文字幕精品在线观看| 欧美成人女星排名| 国产中文字幕在线看| 久久天天躁夜夜躁狠狠躁2022| 成年人视频在线看| 欧美人在线观看| jk漫画禁漫成人入口| 91麻豆国产精品| 欧美精品中文| 中文精品一区二区三区| 亚洲精品女人| www.久久久久久久久久久| proumb性欧美在线观看| 国产伦精品一区二区三区视频女| 久久综合久久99| 强制高潮抽搐sm调教高h| 五月激情六月综合| 国产精品无码免费播放| 亚洲精品视频二区| 性国产高清在线观看| 国产精品av网站| 丁香综合av| 男人天堂成人网| 日韩综合小视频| 中文字幕影片免费在线观看| 亚洲视频每日更新| 中文字幕一区二区人妻视频| 欧美成人video| 欧美69xxxx| 国产精品久久久久久久久久小说| 午夜精品成人av| 国产在线精品一区二区三区》| 韩国一区二区三区视频| 亚洲综合大片69999| 国产一区二区电影在线观看| 800av在线免费观看| 久久精品免费看| 真实乱视频国产免费观看 | 网爆门在线观看| 欧美日韩亚洲一区二区三区| 国产夫妻自拍av| 日韩日本欧美亚洲| 亚洲第一会所001| 免费成人看片网址| 亚洲精品乱码| 影音先锋资源av| 中文字幕一区二区三区av| 波多野结衣一区二区在线 | 中文字幕55页| 中文字幕在线观看一区二区| 中文字幕欧美人妻精品| 亚洲天堂av在线免费观看| 九色91在线| 丁香五月网久久综合| 国产精品久久| 国产伦理在线观看| 亚洲一区二区在线免费观看视频| 日韩欧美视频在线免费观看| 在线播放欧美女士性生活| 欧美性天天影视| 国产日韩欧美在线播放| 欧美激情电影| 天天操狠狠操夜夜操| 国产精品国产三级国产普通话99 | 视频一区二区三区入口| 三上悠亚影音先锋| 日本电影亚洲天堂一区| 久草在现在线| 国产精品久久一区| 欧美先锋资源| av在线网址导航| 亚洲欧美日韩国产一区二区三区 | 超碰人人在线| 成人自拍性视频| 欧美日韩专区| 亚洲精品国产成人av在线| 无码av免费一区二区三区试看 | 国产成人在线免费视频| 日韩激情在线视频| 成人黄色免费短视频| 亚洲国产日韩综合一区| 久久国产免费看| 一区二区视频免费看| 日韩精品一区二区在线| 成年女人在线看片| 欧美深深色噜噜狠狠yyy| 美女在线视频一区| 色婷婷在线视频观看| 亚洲精品在线观| 日本免费一区二区三区四区| 亚洲视频电影| 国产精品77777| 五月天激情四射| 色伦专区97中文字幕| 久久99成人| 日韩黄色片视频| 国产精品人人做人人爽人人添| 五月婷婷色丁香| 色悠悠久久久久| 亚洲精品黑牛一区二区三区| 成年人网站免费视频| 国产精品日日摸夜夜摸av| 精品毛片在线观看| 日韩av免费在线观看| 91九色精品国产一区二区| 在线播放av网址| 欧美午夜片在线看| 精灵使的剑舞无删减版在线观看| 国产精品揄拍500视频| 国内一区二区三区| 中日韩精品一区二区三区| 91精品国产综合久久久久久漫画| 在线激情网站| 精品国产乱码久久久久久88av| 中文字幕人成人乱码| 欧美做受喷浆在线观看| 制服丝袜av成人在线看| 欧美日韩免费看片|