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

Vistual Studio原生開發的20條調試技巧(下)

開發 前端
我的上篇文章《Vistual Studio原生開發的10個調試技巧》 引發了很多人的興趣,所以我決定跟大家分享更多的調試技巧。

我的上篇文章《Vistual Studio原生開發的10個調試技巧》 引發了很多人的興趣,所以我決定跟大家分享更多的調試技巧。接下來你又能看到一些對于原生應用程序的很有幫助的調試技巧(接著上一篇文章來編號)。這些技 巧需要應用在Vistual Studio 2005 或者更新的版本中(當然也有一些適用于舊版本)。如果你能閱讀本文中推薦的一些相關文章,就可以知道每一個技巧的更多信息。

  • 11. 數據斷點
  • 12. 線程重命名
  • 13. 給指定線程設置斷點
  • 14.(粗略)估算執行時間
  • 15.  數字格式化
  • 16. (內存)數據格式化
  • 17.系統DLL中斷
  • 18.加載符號表
  • 19.  監測MFC中的內存泄漏
  • 20.  調試ATL

技巧11數據斷點

當數據所在的內存位置發生變化時,可以通知調試器進行中斷,但是每次只能創建4個字節這樣的硬件數據斷點。數據斷點只能在調試期間添加,可以通過菜 單(Debug>New Breakpoint>New Data Breakpoint) 或者斷點窗口來添加。

你可以使用內存地址或者地址表達式。盡管棧上和堆上的值你都可以看到,但是我認為當堆上的數值發生變化時,這個功能才會更有用處。它對于識別內存損壞有很大的幫助。

下面的例子中,指針的值發生了變化,不再是它所指向對象的值。為了找出在什么地方發生改變的,我在存儲指針值的位置設置了一個斷點, 即&ptr(注意必須在指針初始化之后)。數據發生變化就意味著有人修改了指針的值,調試器發生中斷,我就能找出是哪段代碼引起的改變。

更多閱讀:

1.怎樣查明指針是否損壞內存

2.怎樣查明指針在什么地方發生改變

技巧12線程重命名

在調試多線程應用程序時,線程窗口會顯示創建了哪些線程以及當前正在運行的線程。線程越多,想找到你想要的線程就越困難(尤其是當一段程序被多個線程同時執行的時候,你不能確切地知道哪個才是當前正在執行的線程實例)。

調試器允許修改線程的名字,可以在線程窗口使用線程的快捷菜單,給線程重命名。

也可以在程序里給線程命名,盡管有點棘手,而且必須在線程啟動之后給它命名,否則調試器會以默認命名規范將它重新初始化。定義一個線程,并用下面的函數重命名該線程。

  1. typedef struct tagTHREADNAME_INFO 
  2.     DWORD dwType;        // must be 0x1000 
  3.     LPCSTR szName;       // pointer to name (in same addr space) 
  4.     DWORD dwThreadID;    // thread ID (-1 caller thread) 
  5.     DWORD dwFlags;       // reserved for future use, most be zero 
  6. } THREADNAME_INFO; 
  7.   
  8. void SetThreadName(DWORD dwThreadID, LPCSTR szThreadName) 
  9.     THREADNAME_INFO info; 
  10.     info.dwType = 0x1000; 
  11.     info.szName = szThreadName; 
  12.     info.dwThreadID = dwThreadID; 
  13.     info.dwFlags = 0; 
  14.   
  15.     __try 
  16.     { 
  17.         RaiseException(0x406D1388, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info); 
  18.     } 
  19.     __except (EXCEPTION_CONTINUE_EXECUTION) 
  20.     { 
  21.     } 

更多閱讀:

設置線程名字(非托管)

#p#

技巧13: 給指定線程設置斷點

 對于多線程應用程序來說,另一個有用的技巧就是給指定的線程,進程,甚至是計算機中的斷點設置過濾.可以通過斷點的Filter命令來實現此功能.

 

調試器允許你指定線程名,線程ID,進程名,進程ID和機器名的任意組合(使用AND,OR,NOT)來設置過濾。了解怎樣設置線程名字也使得這項過濾操作變得更加簡單。

更多閱讀:

  1. 怎樣指定斷點過濾器
  2. 設置斷點過濾

技巧14: (粗略)估算執行時間

在上一篇文章中,我有寫關于Watch窗口中的偽變量,有一個沒提到的是@clk,它用于顯示計數器的值,可以粗略地計 算出兩個斷點之間的代碼的執行時間,單位是微秒(μS)。但是,千萬不要用這個方法來分析程序的執行效率,應該使用Visual Studio 分析工具或者性能計時器來分析。

可以在Watch 窗口或者即時窗口添加@clk=0來完成對計時器的重置。因此要想估算執行一段代碼需要多長時間,可以按照下面的步驟來操作:

  1. 在代碼塊的開始位置設置斷點
  2. 在代碼塊的結束位置設置斷點
    1. 在Watch窗口添加 @clk
    2. 程序進入到第一個斷點時,在即時窗口輸入@clk=0
    3. 運行程序直到執行進入代碼塊末尾的斷點,查看Watch窗口 @clk的值。

注意網上有一些技巧說在Watch窗口添加兩個表達式:@clk和@clk=0,需要在每次執行斷點的時候都要重置計時器。這種用法只適用于Visual Studio的老版本,在VS2005及以上版本不再適用。

更多閱讀:

 調試技巧-@CLK

技巧15:數字格式化

當你在Watch或者Quick Watch窗口查看變量時, 這些值是以默認的預定義可視化形式顯示的。而對于數字,則是根據數據類型(integer, float, double),用十進制形式顯示的。但是你可以使用調試器把數字用不同的類型或者進制數顯示出來。

想要改變顯示類型可在變量前加以下前綴:

  1. by –unsigned char (又稱為unsigned byte)
  2. wo – unsigned shot(又稱為 unsigned word)
  3. dw – unsigned long(又稱為 unsigned double word)

要改變顯示的進制數在變量前加下列前綴:

  1. d 或者 i– 有符號十進制數
  2. u – 無符號十進制數
  3. o -  無符號八進制數
  4. x – 小寫十六進制數
  5. X – 大寫十六進制數

 

更多閱讀:

C++ 調試技巧

#p#

技巧16:(內存數據)格式化

除了數字,調試器還可以在Watch窗口顯示格式化的內存數據,最多64 bytes。 你可以使用在表達式(變量或內存地址)后添加下列說明符作為后綴來格式化數據:

  1. mb 或者 m – 十六進制顯示的16字節數據,后跟16個ASCII 字符
  2. mw – 8 words
  3. md – 4 double words
  4. mq -  2 quad-words
  5. ma – 64個ASCII字符
  6. mu – 2字節的UNICODE字符

 

更多閱讀:

  1. C++中的格式說明符
  2. Developer Studio的調試技巧

技巧17: 系統DLL的中斷

 有時候在DLL中的函數被調用時進行中斷是很有用的,像系統DLL(比如 Kernel32.dll 或者user32.dll).實現此中斷,需要使用本機調試器提供的上下文運算符.你可以設定斷點位置,變量名或者表達式:

 1.{[函數],[源碼],[模塊]}位置

 2. [函數],[源碼],[模塊]}變量名

 3. [函數],[源碼],[模塊]}表達式

花括號里可以是函數名,源代碼和模塊的任意組合,但是逗號不能省略.

我們假設想要在CreateThread函數被調用時發生中斷,這個函數是從kernel32.dll中導出的,所以上下文運算符應該為:  {,,kernel32.dll}CreateThread. 然而,這樣并不可行,因為上下文運算符需要CreatThread的修飾符,可以使用DBH.exe來獲取一個特定函數的修飾符。

下面就是如何得到CreateThread函數的修飾符的:

  1. C:\Program Files (x86)\Debugging Tools for Windows (x86)>dbh.exe -s:srv*C:\Symbo 
  2. ls*http://msdl.microsoft.com/Download/Symbols -d C:\Windows\SysWOW64\kernel32.dl 
  3. enum *CreateThread* 
  4. Symbol Search Path: srv*C:\Symbols*http://msdl.microsoft.com/Download/Symbols 
  5.   
  6.  index            address     name 
  7.      1            10b4f65 :   _BaseCreateThreadPoolThread@12 
  8.      2            102e6b7 :   _CreateThreadpoolWork@12 
  9.      3            103234c :   _CreateThreadpoolStub@4 
  10.      4            1011ea8 :   _CreateThreadStub@24 
  11.      5            1019d40 :   _NtWow64CsrBasepCreateThread@12 
  12.      6            1019464 :   ??_C@_0BC@PKLIFPAJ@SHCreateThreadRef?$AA@ 
  13.      7            107309c :   ??_C@_0BD@CIEDBPNA@TF_CreateThreadMgr?$AA@ 
  14.      8            102ce87 :   _CreateThreadpoolCleanupGroupStub@0 
  15.      9            1038fe3 :   _CreateThreadpoolIoStub@16 
  16.      a            102e6f0 :   _CreateThreadpoolTimer@12 
  17.      b            102e759 :   _CreateThreadpoolWaitStub@12 
  18.      c            102ce8e :   _CreateThreadpoolCleanupGroup@0 
  19.      d            102e6e3 :   _CreateThreadpoolTimerStub@12 
  20.      e            1038ff0 :   _CreateThreadpoolIo@16 
  21.      f            102e766 :   _CreateThreadpoolWait@12 
  22.     10            102e6aa :   _CreateThreadpoolWorkStub@12 
  23.     11            1032359 :   _CreateThreadpool@4 

看上去實際名字應該是_CreateThreadStub@24,這樣我們就可以創建斷點,{,,kernel32.dll}_CreateThreadStub@24

 

運行程序,發生中斷時會有消息提示斷點處無相關源代碼,直接忽略它。

使用調用棧窗口查看調用該函數的代碼。

更多閱讀:

1.  在Visual Studio 2010中,沒有源代碼如何設置斷點

2.  上下文運算符(C/C++語言表達式)

3.  怎樣給函數設置斷點

#p#

技巧18:加載符號表

在調試程序的時候,調用棧窗口不會顯示完整的調用棧,跳過了系統DLL(比如kernel32.dll 和 user32.dll)的信息。

可以通過加載這些DLL的符號表來獲得完整的調用棧信息,直接在調用棧窗口使用快捷菜單就能完成。你可以從預先指定的符號路徑或者微軟的符號服務器(如果是系統DLL)來下載符號。符號下載完成后,直接導入到調試器,調用棧就會得到更新。

 

這些符合也可以從組件Modules窗口導入。

 

一旦下載完成,符號會保存在緩存中,可以在Tools>Options>Debugging>Symbols中配置。

 

技巧19:監測MFC中的內存泄漏

如果你想要在MFC應用程序中檢測內存泄漏,需要使用宏DEBUG_NEW來重新定new運算符,這是new運算符的修改版本,記錄了每個對象內存分配的文件名和行號.在發行版中DEBUG_NEW會解析成new運算符.

向導生成的MFC源文件在#includes后包含了下面的預處理指令:

  1. #ifdef _DEBUG 
  2. #define new DEBUG_NEW 
  3. #endif 

這就是怎樣重新定義new運算符的。

然而,很多STL頭文件和重新定義的new運算符和版本不兼容.如果你重新定義了new運算符后,又包含 了<map>,<vector>,<list>,<string>等頭文件的話,就會出現下面的錯誤 (以<vector>為例):

  1. 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\xmemory(43) : error C2665: 'operator new' : none of the 5 overloads could convert all the argument types 
  2. 1>        c:\program files\microsoft visual studio 9.0\vc\include\new.h(85): could be 'void *operator new(size_t,const std::nothrow_t &) throw()' 
  3. 1>        c:\program files\microsoft visual studio 9.0\vc\include\new.h(93): or       'void *operator new(size_t,void *)' 
  4. 1>        while trying to match the argument list '(const char [70], int)' 
  5. 1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\xmemory(145) : see reference to function template instantiation '_Ty *std::_Allocate<char>(size_t,_Ty *)' being compiled 
  6. 1>        with 
  7. 1>        [ 
  8. 1>            _Ty=char 
  9. 1>        ] 
  10. 1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\xmemory(144) : while compiling class template member function 'char *std::allocator<_Ty>::allocate(std::allocator<_Ty>::size_type)' 
  11. 1>        with 
  12. 1>        [ 
  13. 1>            _Ty=char 
  14. 1>        ] 
  15. 1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\xstring(2216) : see reference to class template instantiation 'std::allocator<_Ty>' being compiled 
  16. 1>        with 
  17. 1>        [ 
  18. 1>            _Ty=char 
  19. 1>        ] 

解決辦法就是總是把包含這些STL頭文件放在重新定義new運算符之前.

更多閱讀:

 DEBUG_NEW

技巧20: 調試ATL

在開發ATL COM組件時,你可以在調試器觀察COM對象的QueryInterface,AddRef和Release的調用情況.默認情況下并不支持這些,但是你 只要在預處理定義或者預編譯頭文件時定義兩個宏,宏定義好之后,關于這些函數的調用信息就會顯示在output窗口.

這兩個宏如下:

  1. _ATL_DEBUG_QI: 顯示你定義的對象里每一個被查詢的接口的名字,必須在atlcom.h被包含之前定義.
  2. _ATL_DEBUG_INTERFACES: 在每次AddRef 或者Release被調用時,顯示接口的當前引用計數以及對應的類名和接口名,必須在atlbase.h被包含之前定義.

更多閱讀:

  1. 調試技巧
  2. ATL調試技巧
  3. _ATL_DEBUG_INTERFACES是如何工作的?

結束語

盡管這兩篇文章并不是包含了所有的調試技巧,但是足以幫你解決原生開發中調試時遇到的大多數問題。

原文鏈接:http://www.codeproject.com/Articles/518159/10-Even-More-Visual-Studio-Debugging-Tips-for-Nati

譯文鏈接:http://blog.jobbole.com/45447/

 

責任編輯:陳四芳 來源: 伯樂在線
相關推薦

2020-07-09 15:10:20

開發技能代碼

2013-04-18 10:19:40

iOS開發Xcode調試

2017-03-02 14:05:42

AndroidAndroid Stu調試技巧

2021-01-28 10:04:40

JavaScript開發技術

2009-11-30 15:21:38

Visual Stud

2015-05-12 14:05:49

谷歌開發者

2014-12-11 13:40:15

Android Stu開發技巧

2023-11-27 13:41:00

Kubernete本地調試

2009-10-09 10:21:31

Visual Stud

2010-11-30 09:06:28

Visual Stud

2012-04-04 11:36:40

iOS

2011-03-08 10:18:18

Visual StudMongoDB

2025-04-11 08:26:41

2019-09-27 08:00:00

Visual StudVisual Stud開發技巧

2017-04-25 17:15:00

2013-07-31 13:36:07

Windows PhoVS調試技巧Windows Pho

2009-12-03 13:47:13

Microsoft V

2023-10-16 08:00:00

2012-06-25 16:14:26

Windows Pho
點贊
收藏

51CTO技術棧公眾號

国产成人一区二| 亚洲欧美日韩网| 久久久性生活视频| 精品视频一二区| 久久精品国产成人一区二区三区 | 欧美自拍偷拍午夜视频| 亚洲日韩中文字幕在线播放| 超碰在线97免费| 三级资源在线| 国产亚洲精品bt天堂精选| 成人福利网站在线观看11| 日韩在线观看第一页| 成人aaaa| 亚洲电影第1页| 亚洲 国产 图片| 在线观看福利电影| 一区二区三区四区高清精品免费观看| 蜜桃视频在线观看成人| 国产精品一区二区av白丝下载| 日韩视频不卡| 欧美大片va欧美在线播放| 加勒比一区二区| 永久免费精品视频| 欧美午夜宅男影院| 男人揉女人奶房视频60分| 国产高清一区二区三区视频| 久久免费看少妇高潮| 69视频在线播放| 神马午夜精品91| 精品久久久久久久久久久aⅴ| 精品国产伦一区二区三区观看方式| 99视频在线视频| 亚洲午夜天堂| 精品日本高清在线播放| 欧美黄网在线观看| 麻豆网在线观看| 91网站免费视频| 色综合视频在线| 精品一二三四在线| 国产精品91久久久久久| 国产一级黄色av| 欧美hd在线| 夜夜嗨av色综合久久久综合网| 亚洲蜜桃精久久久久久久久久久久| 一区二区三区在线免费看| 欧美电影在线免费观看| www.色偷偷.com| 偷拍精品精品一区二区三区| 精品久久中文字幕久久av| 国产片侵犯亲女视频播放| 日韩免费影院| 亚洲精品伦理在线| a级片一区二区| 在线中文字幕视频观看| 亚洲精品精品亚洲| 国产在线视频综合| 国产桃色电影在线播放| 亚洲成av人片在线观看| av在线观看地址| 96av在线| 成人av在线资源网站| 51午夜精品| 免费av一级片| 91蝌蚪porny九色| 精品一区二区日本| 欧美69xxxxx| 久久精品网站免费观看| 日韩少妇中文字幕| 午夜激情视频在线观看| 亚洲欧美激情小说另类| 国产精品裸体一区二区三区| 午夜精品久久久久久久第一页按摩| 国产精品一区二区无线| 国产日韩精品久久| 中文在线免费看视频| 麻豆久久久久久久| 99高清视频有精品视频| 亚洲精品一区二区口爆| 91亚洲国产成人精品一区二区三| 欧美中文娱乐网| 日本在线视频观看| 亚洲一区二区三区四区五区黄| 成人午夜视频在线观看免费| 水蜜桃在线视频| 欧美日本高清视频在线观看| 深夜福利网站在线观看| 国产精品高清乱码在线观看| 欧美老人xxxx18| 美女被爆操网站| 免费一区二区| 久久精品一区中文字幕| 国产在线一二区| 青青草成人在线观看| 亚洲综合社区网| 四虎影视在线观看2413| 一色桃子久久精品亚洲| 农民人伦一区二区三区| 欧美精品资源| 欧美精品一区视频| 日日操免费视频| 99热这里只有精品8| 国产精品视频男人的天堂| 亚洲国产成人一区二区| 国产日韩影视精品| 国产性生活免费视频| 欧美aaa视频| 精品久久久久香蕉网| 国产18无套直看片| 雨宫琴音一区二区在线| 成人女保姆的销魂服务| 久久久久久女乱国产| 亚洲精品国产a| 久久久久久久片| 精品在线网站观看| 久久天天躁狠狠躁老女人| 亚洲黄色网址大全| 99国产精品| 91网免费观看| 很黄的网站在线观看| 国产精品乱码人人做人人爱| 97中文字幕在线| 青青伊人久久| 国产一区二区三区日韩欧美| 日韩欧美亚洲视频| 国产不卡视频一区| 香蕉精品视频在线| 成人免费黄色| 亚洲深夜福利网站| 日本特级黄色片| 99久久久国产精品| 国产精品一线二线三线| 精品一区二区三区中文字幕| 国产一区二区三区在线视频| 国偷自拍第113页| 成人免费黄色大片| 欧美一级中文字幕| 亚洲一区电影| 欧美日韩电影在线观看| 国产欧美日韩成人| 亚洲人午夜精品天堂一二香蕉| 一级在线免费视频| 成人永久在线| 中文字幕无线精品亚洲乱码一区| 性欧美疯狂猛交69hd| 日本aⅴ精品一区二区三区| 欧美精品久久| 日韩福利一区| 亚洲桃花岛网站| 天堂中文字幕在线观看| 久久久精品2019中文字幕之3| 黄色av网址在线播放| 国产一区调教| 亚洲图中文字幕| 亚洲黄网在线观看| 国产欧美视频一区二区三区| 在线免费观看成人网| 992tv国产精品成人影院| 亚洲欧美福利视频| 姑娘第5集在线观看免费好剧| 国产亚洲欧美日韩在线一区| 亚洲中文字幕久久精品无码喷水| 久久不卡国产精品一区二区| 国产成人精品免费久久久久| 在线激情小视频| 欧美日韩精品一区二区| www.99re7| 成人h动漫精品| 麻豆av免费在线| 四虎成人av| 亚洲自拍另类欧美丝袜| 国产www视频在线观看| 亚洲精品国产综合久久| 在线观看日本网站| 中文字幕一区二区三区四区不卡| 国产探花在线观看视频| 亚洲国产美女| 欧洲高清一区二区| 成人午夜888| 96精品视频在线| 成人影视在线播放| 日韩视频123| 五月婷婷开心网| 中文字幕欧美三区| 国产免费a级片| 首页欧美精品中文字幕| 久久最新免费视频| 小说区图片区色综合区| 成人做爽爽免费视频| 国产精品yjizz视频网| 国产亚洲综合久久| 亚洲AV无码精品国产| 日韩欧美精品网站| 婷婷在线精品视频| 久久久天堂av| 中国特级黄色片| 蜜臀久久99精品久久久久宅男| 欧美a级黄色大片| 亚洲福利网站| www日韩av| 国产美女久久| 538国产精品一区二区免费视频| 日韩免费网站| 亚洲精品久久久久久久久久久久| 在线观看中文字幕网站| 精品女厕一区二区三区| 成年人一级黄色片| 国产欧美日韩不卡| 亚洲成av人片在线观看无| 久久国内精品视频| 美女福利视频在线| 1024日韩| 国产精品视频一二三四区| 欧洲激情视频| 精品一区久久久| 亚洲欧美日本国产| 国产一区二区色| 国产私拍福利精品视频二区| 国内精品久久久久久中文字幕| 天堂中文8资源在线8| 亚洲免费福利视频| 日韩在线观看视频一区| 欧美tk—视频vk| 国产v片在线观看| 一区二区三区日韩欧美| 日韩欧美视频免费观看| 国产视频一区在线播放| 国产精品久久无码| 国产成人aaa| 精品人妻一区二区三| 狠狠色综合日日| 国产原创精品在线| 日韩黄色在线观看| 亚洲成熟丰满熟妇高潮xxxxx| 狠久久av成人天堂| www.xxx麻豆| 国内激情久久| 日韩成人三级视频| 欧美日韩国产高清| 男人c女人视频| 欧美一区激情| 国内精品视频在线播放| 91蝌蚪精品视频| 97se亚洲综合在线| 色悠久久久久综合先锋影音下载| 成人福利网站在线观看| 亚洲精品无播放器在线播放| 国产精品成人播放| 26uuu亚洲电影在线观看| 日韩最新av在线| 日本不卡不卡| 美女久久久久久久久久久| а√资源新版在线天堂| 欧美成人精品不卡视频在线观看| 国产成人无吗| 欧美高清在线播放| 国产一线二线在线观看 | 国产视频一区二区不卡| 粉嫩的18在线观看极品精品| 国产综合欧美在线看| 色婷婷狠狠五月综合天色拍 | 天堂аⅴ在线地址8| xxxxx成人.com| 色呦呦视频在线观看| 欧美激情欧美激情| 美女网站在线看| 日韩免费在线免费观看| 99久久er| 日韩av观看网址| 奇米精品一区二区三区| 久热av在线| 亚洲国产精品久久久久久| 色综合免费视频| 亚洲性无码av在线| 国产写真视频在线观看| 欧美激情一区二区三区成人 | 国产日产亚洲系列最新| 欧美大胆人体bbbb| 欧美片一区二区| 午夜视黄欧洲亚洲| 国产偷人爽久久久久久老妇app| 欧美精品18+| 狠狠人妻久久久久久综合麻豆| 亚洲黄色有码视频| av网站在线播放| 欧美精品福利视频| 日本精品裸体写真集在线观看| 成人免费在线视频网址| 卡通动漫国产精品| 一区二区精品视频| 亚洲国产综合在线看不卡| 天天干在线影院| 懂色av中文字幕一区二区三区| 成年人免费观看视频网站| 亚洲天堂成人网| 91午夜精品亚洲一区二区三区| 欧美精品第1页| 天天爽夜夜爽夜夜爽| 久久精品成人欧美大片| 中文字幕影音在线| 91麻豆蜜桃| 青青草国产免费一区二区下载| 成人免费在线网| 六月丁香婷婷久久| 无码h肉动漫在线观看| 中文字幕一区视频| www毛片com| 国产99久久久国产精品潘金网站| 欧美妇女性影城| 午夜精品电影在线观看| 国产一区在线电影| 亚洲国产精品123| 在线观看视频免费一区二区三区| 国产精品自产拍在线观看中文| 黄色小视频免费观看| 亚洲人精品午夜在线观看| 亚洲精品天堂| 国产精品白嫩美女在线观看| 卡通动漫精品一区二区三区| 国产精品久久久影院| 免费看日韩精品| 亚洲最大的黄色网| 亚洲综合一区在线| 91亚洲精品国偷拍自产在线观看| 亚洲美女av电影| 97蜜桃久久| 亚洲自拍偷拍色片视频| 日韩一级毛片| 亚洲福利精品视频| 久久免费视频色| 天天爽夜夜爽夜夜爽精品| 日韩欧美美女一区二区三区| 免费a级在线播放| 国产精品一区av| 凹凸成人精品亚洲精品密奴| 免费日韩视频在线观看| 91看片淫黄大片一级在线观看| 日韩黄色a级片| 精品国产一区a| 欧美xxxbbb| 成人欧美视频在线| 国产精品99免费看| 亚洲美女精品视频| 亚洲一区免费在线观看| jlzzjlzzjlzz亚洲人| 美女国内精品自产拍在线播放| 只有精品亚洲| 国产女人18毛片| 国产精品888| 久久精品亚洲无码| 亚洲成人黄色在线| caoporn-草棚在线视频最| 国产精品.com| 日韩视频在线一区二区三区| 亚洲狠狠婷婷综合久久久久图片| 欧美日韩国产色视频| 日韩精品视频无播放器在线看| 欧美与黑人午夜性猛交久久久| 中国av一区| 中文字幕第38页| 亚洲精品中文在线影院| 亚洲av永久纯肉无码精品动漫| 久久久久国产视频| 校花撩起jk露出白色内裤国产精品 | 国产亚洲精品久| 在线免费观看av片| 欧美成人亚洲成人日韩成人| 9l视频自拍蝌蚪9l视频成人| 国产av天堂无码一区二区三区| 91色综合久久久久婷婷| 蜜臀尤物一区二区三区直播| 中文字幕九色91在线| 国产精久久一区二区| 国产一二三在线视频| 2020国产精品久久精品美国| 亚洲精品国产精品乱码视色| 久久视频免费在线播放| 国产伦精品一区二区三区在线播放| 妞干网在线视频观看| 国产欧美日产一区| www.色播.com| 日本久久久久亚洲中字幕| 五月久久久综合一区二区小说| 又大又长粗又爽又黄少妇视频| 欧美日韩中文字幕在线| 在线观看国产原创自拍视频| 成人av免费在线看| 日韩黄色免费网站| jizz中文字幕| 亚洲v天堂v手机在线| 免费在线a视频| 中文字幕中文乱码欧美一区二区| 国产激情无套内精对白视频| 欧美又大又硬又粗bbbbb| 天天做综合网| 亚洲乱码国产乱码精品精大量 | 国产女人高潮时对白| 57pao国产精品一区| 亚洲激情中文在线| 美国黄色一级毛片| 日韩一区二区影院|