青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

isware

WinDbg入門教程(轉(zhuǎn)載)

原文出處:http://www.7747.net/Article/200812/31157.html

介紹

在我的職業(yè)生涯中,我看到我們大多數(shù)都是使用Visual Studio來(lái)進(jìn)行調(diào)試,而不是用其它許多免費(fèi)的調(diào)試器。你可能有許多理由來(lái)使用這樣的調(diào)試器,比如,在你家里的機(jī)器上沒(méi)裝開(kāi)發(fā)環(huán)境,但是一個(gè)程序一次次的崩潰。其實(shí)根據(jù)堆棧的dump就可以判斷出IE的崩潰是否是由于一個(gè)第三方的插件。

對(duì)于WinDbg,我目前為止還沒(méi)有發(fā)現(xiàn)很好的快速入門的教程。這篇文章結(jié)合實(shí)例討論了WinDbg的使用。我首先假設(shè)你熟悉調(diào)試的基本概念:stepping in, stepping out,斷點(diǎn)以及遠(yuǎn)程調(diào)試的基本概念。

注意,這本來(lái)是座位一個(gè)入門的文檔,你可以閱讀并且開(kāi)始使用WinDbg. 如果對(duì)于特定的命令有疑問(wèn),請(qǐng)查閱WinDbg的文檔。你可以在任何微軟提供的調(diào)試器中使用這篇文章中提到的命令,比如在VS的命令行窗口中。

這篇文章是基于WinDbg 6.3.

這僅僅是一系列關(guān)于調(diào)試技術(shù)的文章中的第一篇。在下一篇文章中,我會(huì)解釋如何針對(duì)調(diào)試器編寫擴(kuò)展DLL.

調(diào)試器一覽

下面大概介紹了你可以從微軟網(wǎng)站上下載到的調(diào)試器:

·         KD-內(nèi)核調(diào)試器。你可以用它來(lái)調(diào)試藍(lán)屏一類的系統(tǒng)問(wèn)題。如果是開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序是少不了它的。

·         CDB-命令行調(diào)試器。這是一個(gè)命令行程序

·         NTSD-NT調(diào)試器。這是一個(gè)用戶模式調(diào)試器,可以用來(lái)調(diào)試用戶模式應(yīng)用程序。它實(shí)際上是一個(gè)CDBwindows UI增強(qiáng)。

·         WinDbg-用一個(gè)漂亮的UI包裝了KDNTSDWinDbg即可以調(diào)試內(nèi)核模式,也可以調(diào)試用戶模式程序。

·         VS, VS.net-使用同KDNTSD相同的調(diào)試引擎,并且相比于同樣用于調(diào)試目的的WinDbg,提供了功能更豐富的界面。

調(diào)試器之間的比較

功能

KD

NTSD

WinDbg

Visual Studio .NET

內(nèi)核模式調(diào)試

Y

N

Y

N

用戶模式調(diào)試

 

Y

Y

Y

非托管調(diào)試

Y

Y

Y

Y

托管調(diào)試

 

Y

Y

Y

遠(yuǎn)程調(diào)試

Y

Y

Y

Y

附加到進(jìn)程

Y

Y

Y

Y

從進(jìn)程分離

Y

Y

Y

Y

SQL調(diào)試

N

N

N

Y

WinDbg

WinDbg實(shí)際上包裝了NTSDKD并且提供了一個(gè)更好用的用戶界面。它也提供了命令行開(kāi)關(guān),比如最小化啟動(dòng)(-m),附加到一PID指定的進(jìn)程(-p)以及自動(dòng)打開(kāi)崩潰文件(-z)。它支持三種類型的命令。

·         Regular commands(比如: k) 用來(lái)調(diào)試進(jìn)程

·         Dot commands(比如:.sympath)用來(lái)控制調(diào)試器

·         Extension commands(比如: !handle)-這些命令屬于可以用來(lái)添加到WinDbg的自定義命令;它們用擴(kuò)展DLL的輸出函數(shù)來(lái)實(shí)現(xiàn)。

PDB文件

PDB文件指的是鏈接器生成程序數(shù)據(jù)庫(kù)文件(Program database files)。私有的PDB文件包括私有以及公有符號(hào),源代碼行號(hào),類型,局部以及全局變量。公有的PDB文件不包含類型,局部變量以及源代碼行號(hào)信息。

調(diào)試場(chǎng)景

遠(yuǎn)程調(diào)試

使用WinDbg進(jìn)行遠(yuǎn)程調(diào)試是很容易的,而且有很多種可行的方法。在下文中,調(diào)試服務(wù)器指的是運(yùn)行在你所要調(diào)試的遠(yuǎn)程機(jī)器上的調(diào)試器。調(diào)試客戶端指的是控制當(dāng)前會(huì)話的調(diào)試器。

·         使用調(diào)試器:你需要CDB, NTSD或者WinDbg已經(jīng)安裝在遠(yuǎn)程機(jī)器上。WinDbg客戶端可以連接到CDB, NTSD或者WinDbg中的任何一個(gè)作為服務(wù)器,反之亦然。在客戶端和服務(wù)器直接可以選擇TCP或者命名管道作為通訊協(xié)議。

o   在服務(wù)器端的啟動(dòng)過(guò)程:

§  WinDbg –server npipe:pipe=pipename(注:可以允許多個(gè)客戶端連或

§  WinDbg內(nèi)部: .server npipe:pipe=pipename(注,連接單個(gè)客戶端)

你可以用多種協(xié)議開(kāi)啟不同的服務(wù)會(huì)話。并且可用密碼來(lái)保護(hù)一個(gè)會(huì)話。

o   從客戶端連接:

§  WinDbg -remote npipe:server=Server, pipe=PipeName[,password=Password]

§  WinDbg內(nèi)部: File->Connect to Remote Session: for connection string, enter npipe:server=Server, pipe=PipeName [,password=Password]

·             使用Remote.exe: Remote.exe使用命名管道作為通訊的方式。如果你使用的是一個(gè)命令行接口的程序,比如KD,CDB或者NTSD。你可以使用remote.exe來(lái)遠(yuǎn)程調(diào)試。注意:使用@q(不是q)來(lái)退出客戶端,不用關(guān)掉服務(wù)端。

o   要啟動(dòng)一個(gè)服務(wù)端:

§  Remote.exe /s “cdp –p <pid>” test1

o   從客戶端連接:

§  Remote.exe /c <machinename> test1

上面的test1是我們所選擇的命名管道的名字。

    服務(wù)端會(huì)顯示那個(gè)客戶端從那個(gè)服務(wù)器連接以及執(zhí)行過(guò)的命令。你可以使用‘qq’命令來(lái)退出服務(wù)端;或者使用File->Exit來(lái)退出客戶端。另外,如果要進(jìn)行遠(yuǎn)程調(diào)試,你必須屬于遠(yuǎn)程機(jī)器的”Debugger User”組并且服務(wù)器必須允許遠(yuǎn)程連接。

即時(shí)調(diào)試

WinDbg的文檔的”Enabling Postmorten Debugging”部分對(duì)此有很詳細(xì)的討論。簡(jiǎn)而言之,你可以把WinDbg設(shè)置成默認(rèn)的即時(shí)調(diào)試器,命令就是:Windbg –I。這個(gè)命令實(shí)際上是把注冊(cè)表中 HKLM\Software\Microsoft\Windows NT\CurrentVersion\AeDebug的鍵值設(shè)置成WinDbg。如果要把WinDbg設(shè)置成為默認(rèn)的托管調(diào)試器,你需要顯示設(shè)置如下的注冊(cè)表鍵值:

  • HKLM\Software\Microsoft\.NETFramework\DbgJITDebugLaunchSetting 設(shè)置成 2
  • HKLM\Software\Microsoft\.NETFramework\DbgManagedDebugger 設(shè)置成Windbg.(注意其中的啟動(dòng)參數(shù)設(shè)置)

通過(guò)JIT的設(shè)置,當(dāng)一個(gè)應(yīng)用程序在不是調(diào)試的狀態(tài)下拋出了未處理的異常之時(shí),WinDbg就會(huì)被啟動(dòng)。

64位調(diào)試

所有這些調(diào)試器均支持在AMD64IA64上的64位調(diào)試環(huán)境。

托管應(yīng)用程序的調(diào)試

WinDbg 6.3以后的版本支持在Widbey(VS2005.net 2.0的內(nèi)部開(kāi)發(fā)代號(hào)) .net CLR托管調(diào)試。在文檔中針對(duì)托管調(diào)試有很好的討論。需要注意的是,對(duì)于托管程序來(lái)說(shuō),沒(méi)有剛才所說(shuō)的PDB(譯注:托管代碼實(shí)際上也是有PDB的,但是這個(gè)PDB實(shí)際上記錄了C#代碼和IL代碼的對(duì)應(yīng)關(guān)系以及相關(guān)的一些信息)的概念,因?yàn)樗械某绦蚨际蔷幾g成為ILASM。調(diào)試器通過(guò)CLR來(lái)查詢所需的附加信息。

有幾點(diǎn)需要注意:

你只能在托段函數(shù)的代碼被執(zhí)行過(guò)至少一次之后才能設(shè)置斷點(diǎn)。只有這樣它才能被編譯成匯編代碼。記住以下的幾點(diǎn):

  • 關(guān)于函數(shù)的地址的復(fù)雜化以及對(duì)應(yīng)的斷點(diǎn)設(shè)置:

o   CLR有可能丟棄已經(jīng)編譯好的代碼,所以函數(shù)的入口地址有可能改變。

o   同樣的代碼有可能被多次編譯,如果多個(gè)應(yīng)用程序域沒(méi)有共享這段代碼的話。如果你設(shè)置了一個(gè)斷點(diǎn),它就會(huì)被設(shè)置在當(dāng)前線程(譯注:CLR的邏輯線程)所在的應(yīng)用程序域內(nèi)。

o   泛型的特殊實(shí)例可能導(dǎo)致同一個(gè)函數(shù)有不同的地址。.

  •  數(shù)據(jù)存儲(chǔ)布局的復(fù)雜化以及對(duì)應(yīng)的數(shù)據(jù)檢查:
    • CLR可能會(huì)在運(yùn)行的時(shí)候任意改變數(shù)據(jù)的存儲(chǔ)布局,所以一個(gè)結(jié)構(gòu)體成員的偏移量可能會(huì)被改變掉. (譯注:實(shí)際上是在一個(gè)類型被加載的時(shí)候決定的數(shù)據(jù)布局,之后是不會(huì)改變的。)
    • 一個(gè)類型的信息是在第一次使用的時(shí)候被加載,所以你可能不能夠查看一個(gè)數(shù)據(jù)成員如果它還沒(méi)有被使用過(guò).
  • 調(diào)試器命令的復(fù)雜化

o   當(dāng)跟蹤托管代碼的時(shí)候,你會(huì)需要穿越大段的CLR自己的代碼比如JIT編譯器的代碼,原因可能是你第一次進(jìn)入一個(gè)函數(shù),或者是你在托管和非托管代碼之間進(jìn)行切換。

調(diào)試Windows服務(wù)

使用WinDbg,你可以像調(diào)試其它應(yīng)用程序那樣調(diào)試Windows服務(wù)程序。即可以通過(guò)附加進(jìn)程的方法啟動(dòng)Windows服務(wù),也可以把WinDbg當(dāng)作一個(gè)即時(shí)調(diào)試器,并且在代碼中調(diào)用DbgBreakPoint 或者 DebugBreak,或者在x86機(jī)器上加入一條int 3匯編指令。

調(diào)試異常

一個(gè)調(diào)試器會(huì)得到兩次的異常通知-第一次在應(yīng)用程序有機(jī)會(huì)處理異常之前(‘first chance exception’);如果應(yīng)用程序沒(méi)有處理這個(gè)異常,這時(shí)候調(diào)試器就會(huì)有機(jī)會(huì)來(lái)處理異常(‘second-chance exception’)。如果調(diào)試器沒(méi)有處理二次機(jī)會(huì)的異常,應(yīng)用程序就會(huì)退出。

.lastevent或者,!analyze –v命令會(huì)給你顯示異常的記錄以及異常拋出所在函數(shù)的堆棧跟蹤信息。

你也可以使用 .exr, .cxr以及 .ecxr命令來(lái)顯示異常和上下文記錄。同時(shí)需要注意的是,你也可以改變first-chance的處理選項(xiàng)。對(duì)應(yīng)的命令就是: sxe, sxd, sxnsxi

WinDbg的功能

調(diào)試器擴(kuò)展DLL

所謂的擴(kuò)展指的是一些DLL,你可以用在調(diào)試器內(nèi)調(diào)用并且執(zhí)行一些自定義的命令。這些DLL必須實(shí)現(xiàn)一些特定的函數(shù),并且要滿足一些需求,這樣才能被認(rèn)為是一個(gè)擴(kuò)展DLL。在下一篇文章內(nèi),我們將會(huì)了解到怎樣寫出一個(gè)擴(kuò)展DLL。所謂的bang(!)命令就是從你的擴(kuò)展DLL內(nèi)執(zhí)行的命令。注意這些DLL是被加載到調(diào)試器的進(jìn)程空間內(nèi)。

內(nèi)存轉(zhuǎn)儲(chǔ)文件

你可以使用轉(zhuǎn)儲(chǔ)功能來(lái)取得一個(gè)進(jìn)程的快照信息。一個(gè)mini-dump通常比較小,除非你使用了全內(nèi)存的minidump(.dump /mf)。通常能夠轉(zhuǎn)儲(chǔ)句柄信息也是很有用的,命令是 .dump/mfh。一個(gè)小型轉(zhuǎn)儲(chǔ)通常包含了所有的線程的堆棧以及一個(gè)已被加載的模塊的列表。一個(gè)全轉(zhuǎn)儲(chǔ)包含了更多的信息,比如進(jìn)程的堆。

崩潰轉(zhuǎn)儲(chǔ)分析

如果你的windows系統(tǒng)當(dāng)機(jī),那么它就會(huì)在一個(gè)文件中轉(zhuǎn)儲(chǔ)物理內(nèi)存中的數(shù)據(jù),以及所有的進(jìn)程信息。可以通過(guò)Control Panel ->System->Advanced->’Startup and Recovery’來(lái)配置。你也可以首先把WinDbg配置成為一個(gè)即時(shí)調(diào)試器,然后就可以取得任意一個(gè)非正常終止的進(jìn)程的轉(zhuǎn)儲(chǔ)(.dump)。注意,從轉(zhuǎn)儲(chǔ)文件中分析出代碼中的bug往往是一個(gè)復(fù)雜費(fèi)力的過(guò)程。

使用以下的步驟來(lái)分析一個(gè)轉(zhuǎn)儲(chǔ)文件:

1)      WinDbg內(nèi),通過(guò) File->’Open Crash Dump’, 指向轉(zhuǎn)儲(chǔ)文件。

2)      WinDgb會(huì)給你顯示應(yīng)用程序崩潰之時(shí)所執(zhí)行的指令。

3)      正確設(shè)置你的符號(hào)文件目錄和源代碼目錄。如果你不能夠匹配正確的符號(hào)文件,想要弄清楚程序的邏輯是非常困難的。如果你能夠把符號(hào)文件匹配到正確版本的源代碼,這是就應(yīng)該很容易分析出Bug原因。注意,私有符號(hào)文件含有行號(hào)信息并且會(huì)盲目的顯示你源代碼中的對(duì)應(yīng)行而不進(jìn)行任何的檢查;如果你的源碼版本不對(duì),那么你就不能夠看到匹配匯編代碼的正確源碼。如果你僅僅有公有的符號(hào)文件,你會(huì)看到最后一個(gè)被調(diào)用的函數(shù)(棧上的)。

注意調(diào)試驅(qū)動(dòng)或者托管代碼是與此有很大不同的。參考《The Windows 2000 Device Driver Book》來(lái)獲得調(diào)試設(shè)備驅(qū)動(dòng)的技術(shù)。

WinDbg的常用設(shè)置

符號(hào)文件與文件夾

如果想更有效的調(diào)試,你需要符號(hào)文件。符號(hào)文件可以是老式的COFF格式或者就是PDB格式。PDB就是程序數(shù)據(jù)庫(kù)文件并且包含了公有符號(hào)。這些調(diào)試器內(nèi),你可以使用一系列的地址來(lái)讓調(diào)試器尋找已經(jīng)加載的二進(jìn)制文件的符號(hào)。

操作系統(tǒng)的符號(hào)文件一般存儲(chǔ)在%SYSTEMDIR%Symbols目錄。驅(qū)動(dòng)程序的符號(hào)文件(.DBG.PDB)一般存儲(chǔ)在和驅(qū)動(dòng)文件(.sys 文件)相同的目錄下。私有符號(hào)文件包含的信息包括:函數(shù),局部以及全局變量,以及用來(lái)把匯編代碼和源代碼關(guān)聯(lián)起來(lái)的行號(hào)信息;對(duì)于客戶來(lái)說(shuō),符號(hào)文件一半是公有的-這些文件僅僅包括公有成員。

你可以通過(guò)File-Symbol File Path來(lái)設(shè)置符號(hào)文件目錄,或者使用 .sympath命令。如果想要添加到網(wǎng)絡(luò)上符號(hào)文件的引用,添加以下的內(nèi)容到你的 .sympath

SRV*downstream_store*http://msdl.microsoft.com/download/symbols

使用的命令就是:

.sympath+ SRV*c:\tmp*http://msdl.microsoft.com/download/symbols

C:\tmp就是download_store,所需要的符號(hào)文件會(huì)被下載存儲(chǔ)至此。注意這個(gè)符號(hào)服務(wù)器僅僅開(kāi)放了公有的符號(hào)文件。

當(dāng)調(diào)試器把一個(gè)二進(jìn)制文件(DLLexe)的時(shí)候,他會(huì)檢查比如文件名,時(shí)間戳以及校驗(yàn)值。如果你有符號(hào)信息,你就可以在調(diào)用棧上看到函數(shù)名和他們的參數(shù)。如果二進(jìn)制文件和PDB文件都來(lái)自于你自己的應(yīng)用程序,你就可以看到比如私有函數(shù),局部變量以及類型這類額外的信息。

源代碼路徑

你可以通過(guò)File->Source File Path來(lái)設(shè)置源碼路徑,或者使用.srcpath命令。如果你設(shè)置了代碼的路徑,當(dāng)你調(diào)試的時(shí)候,調(diào)試器會(huì)通過(guò)PDB文件的行號(hào)信息來(lái)顯示相匹配的源代碼。

斷點(diǎn),跟蹤

·         通過(guò)bp命令或者工具欄上的斷點(diǎn)圖片來(lái)設(shè)置軟斷點(diǎn)。

·         通過(guò)代碼比如DbgBreakPoint() 或者 KdBreakPoint()來(lái)設(shè)置硬斷點(diǎn)。

·         在擴(kuò)展DLL中使用跟蹤函數(shù)DbgPrint, KdPrint, OutputDebugString 來(lái)把輸出顯示在WinDbg的輸出窗口中。

您對(duì)本文章有什么意見(jiàn)或著疑問(wèn)嗎?請(qǐng)到論壇討論您的關(guān)注和建議是我們前行的參考和動(dòng)力

posted on 2010-03-09 14:33 艾斯維亞 閱讀(919) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费短视频成人日韩| 久久激情视频久久| 午夜国产欧美理论在线播放| 在线日韩av片| 依依成人综合视频| 欲香欲色天天天综合和网| 国产综合色一区二区三区| 伊人久久亚洲美女图片| 91久久精品一区| 日韩一级成人av| 亚洲午夜电影网| 午夜精品区一区二区三| 久久av二区| 亚洲大胆av| 亚洲国产福利在线| 亚洲少妇自拍| 久久久亚洲高清| 欧美精品v国产精品v日韩精品| 欧美日韩一区二区在线播放| 国产精品一区毛片| 91久久国产综合久久蜜月精品 | 久久人人97超碰精品888| 麻豆乱码国产一区二区三区| 欧美激情综合五月色丁香小说| 欧美视频中文在线看 | 欧美国产激情| 亚洲免费黄色| 欧美在线观看视频一区二区三区 | 国产精品福利在线观看| 国内精品伊人久久久久av影院| 亚洲精品国产日韩| 欧美有码在线视频| 欧美激情一区在线| 欧美一区二区日韩一区二区| 欧美激情综合在线| 精品成人一区二区| 午夜精品久久久久久久男人的天堂 | 亚洲一区日韩| 久久免费偷拍视频| 99精品国产热久久91蜜凸| 亚洲愉拍自拍另类高清精品| 久久国产精品网站| 先锋影音网一区二区| 久久精品国产精品亚洲综合| 欧美成人69av| 国产精品视频一二三| 影音先锋日韩精品| 欧美影院在线播放| 亚洲一区二区三区在线视频| 欧美日韩国产成人高清视频| 在线国产欧美| 麻豆久久婷婷| 久久精品国产v日韩v亚洲| 国产精品青草久久久久福利99| 一本色道久久精品| 亚洲人成人一区二区三区| 久久婷婷麻豆| 亚洲国产综合在线看不卡| 老司机免费视频久久| 久久成人羞羞网站| 国产一区二区三区免费在线观看| 午夜在线精品偷拍| 亚洲小说春色综合另类电影| 国产精品成人在线| 亚洲欧美日韩国产中文在线| 一区二区三区 在线观看视频| 欧美日韩一区二区在线视频| aa级大片欧美| 99精品欧美一区二区三区| 欧美色道久久88综合亚洲精品| av成人免费在线观看| 亚洲精品美女免费| 欧美先锋影音| 欧美一区二区日韩一区二区| 亚洲天天影视| 国语自产精品视频在线看8查询8| 久久综合九色综合欧美狠狠| 久久精品国产一区二区电影| 一区在线播放视频| 91久久精品国产91久久性色| 欧美日本亚洲韩国国产| 亚洲免费在线看| 香蕉久久国产| 在线免费观看视频一区| 91久久一区二区| 国产精品国产亚洲精品看不卡15| 亚洲免费在线精品一区| 久久久久久久成人| 日韩一二三区视频| 国产精品99久久久久久久女警 | 尤物精品在线| 久久久99国产精品免费| 亚洲小说春色综合另类电影| 国产亚洲精品7777| 久久尤物视频| 欧美日韩亚洲系列| 久久久精品国产免大香伊 | 一区二区三区日韩欧美精品| 亚洲深夜av| 91久久国产自产拍夜夜嗨| 一区二区三区精品视频在线观看| 国产日韩一区| 欧美激情一区二区在线| 国产精品大片免费观看| 欧美成人午夜视频| 国产精品久久久久av免费| 久久五月天婷婷| 欧美日韩久久不卡| 美女露胸一区二区三区| 欧美日韩综合在线免费观看| 麻豆精品国产91久久久久久| 欧美伦理在线观看| 久久中文欧美| 国产精品视频专区| 亚洲福利视频在线| 国产美女精品视频免费观看| 亚洲国产黄色| 黄色成人在线网站| 亚洲一区二区高清视频| 日韩视频免费观看高清完整版| 久久不射网站| 亚洲综合色婷婷| 欧美日韩第一页| 欧美黄色aaaa| 亚洲夫妻自拍| 久久久久久亚洲精品杨幂换脸 | 性欧美暴力猛交69hd| 欧美1区2区3区| 久久久亚洲成人| 国产婷婷成人久久av免费高清| 亚洲免费观看在线观看| 一本色道久久加勒比精品| 欧美成人网在线| 美女精品在线观看| 国模一区二区三区| 欧美一区二区三区免费视| 亚洲综合大片69999| 欧美日韩国产123| 欧美国产1区2区| 亚洲精品久久久久久久久久久久久 | 一区二区不卡在线视频 午夜欧美不卡在 | 国产精品你懂的在线欣赏| 亚洲精品乱码久久久久久蜜桃91| 亚洲第一主播视频| 欧美在线国产精品| 久久亚洲免费| 亚洲激情啪啪| 欧美日韩一区三区| 在线一区二区视频| 欧美国产高潮xxxx1819| 欧美一级艳片视频免费观看| 欧美精品18videos性欧美| 亚洲二区精品| 亚洲免费av电影| 欧美人在线观看| 亚洲视频一二| 久久激情综合网| 在线精品一区| 欧美精品一区三区| 一区二区欧美在线| 午夜精品区一区二区三| 国产夜色精品一区二区av| 久久成人av少妇免费| 欧美大片免费久久精品三p | 久久夜精品va视频免费观看| 在线看国产一区| 欧美精品一区二区三区在线看午夜| 亚洲精品美女在线观看| 亚洲欧美色婷婷| 亚洲第一精品久久忘忧草社区| 欧美精品一区二| 亚洲一区久久久| 欧美a级片网站| 亚洲一级网站| 加勒比av一区二区| 欧美日韩亚洲国产精品| 亚洲香蕉视频| 美女视频网站黄色亚洲| 一本色道久久精品| 一区二区三区我不卡| 欧美视频一二三区| 老司机成人网| 亚洲欧美日韩一区在线| 国产一区二区三区观看| 蜜桃精品久久久久久久免费影院| 亚洲另类一区二区| 久久久久久久久久码影片| 日韩一区二区免费高清| 国产一区二区三区高清在线观看| 欧美美女福利视频| 久久国产精品亚洲77777| 一区二区三区精密机械公司| 亚洲电影一级黄| 久久久欧美一区二区| 亚洲女人av| 亚洲素人一区二区| 亚洲欧洲一区二区在线观看| 红桃视频亚洲| 国产欧美成人| 国产精品欧美日韩久久|