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

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

如何手工抓取dump文件

Posted on 2009-08-11 15:31 S.l.e!ep.¢% 閱讀(1296) 評論(0)  編輯 收藏 引用 所屬分類: WinDbg

在生產環境下進行故障診斷時,為了不終止正在運行的服務或應用程序,有兩種方式可以對正在運行的服務或應用程序的進程進行分析和調試。

首先一種比較直觀簡潔的方式就是用WinDbg等調試器直接attach到需要調試的進程,調試完畢之后再detach即可。但是這種方式有個缺點就是執行debugger命令時必須先break這個進程,執行完debug命令之后又得趕緊F5讓他繼續運行,因為被你break住的時候意味著整個進程也已經被你掛起。另外也經常會由于First Chance Excetpion而自動break,你得時刻留意避免長時間break整個進程。所以這樣的調試方式對時間是個很大的考驗,往往沒有充裕的時間來做仔細分析。

另一種方式則是在出現問題的時候,比如CPU持續長時間100%,內存突然暴漲等非正常情況下,通過對服務進程snapshot抓取一個dump文件,完成dump之后先deatch,讓進程繼續運行。然后用windbg等工具來分析這個抓取到的dump文件。

那么如何在不終止進程的情況下抓取dump文件呢?Debugging Tools for Windows里提供了一個非常好的工具,adplus.vbs。從名字可以看出,實際上是一個vb腳本,只是對cdb調試器作的一個包裝腳本。

其路徑與Debugging Tools for Windows的安裝路徑相同,使用的方法也很簡單,如下所示:

adplus.vbs -hang -p 1234 -o d:\dump

其中-hang指明使用hang模式,亦即在進程運行過程中附加上去snapshot抓取一個dump文件,完成之后detach。與之對應的是-crash崩潰模式,用戶先啟動adplus,然后由它啟動要監控的程序,在出現異常崩潰時自動生成dump文件,或者通過Ctrl-C人為發出抓取指令。但是-crash模式在抓取完成之后,被監控的進程就必須終止。因此我們在這里只選用-hang模式。

-p是要調試的進程ID,比如ASP.NET應用線程池,在Win2003下就是w3wp.exe

-o 指定要output的dump文件路徑。

另外,與adplus類似的,有個UserDump工具,但是抓取用戶模式的進程,而adplus則是內核模式和用戶模式兩者皆可。

而總所周至的Dr. Waston,則會在進程崩潰之后的自動時候抓取dump文件,一樣可以用于windbg等調試器來事后分析程序崩潰時的狀態。

====================
0:000> !dumpheap -stat
No export dumpheap found
======解決方法:
.load clr20\sos.dll,你要先執行的。sos.dll在默認的c:\windows\microsoft.net\framework\v2.....下面,你復制到c:\program files\debugging tools for windows下面的clr20目錄下面(clr20是你手工創建的)
?=======================
????
? 在.NET下開發時,最基本的調試方法就是使用Visual Studio的單步調試。但是對于一些特殊情況,特別是涉及到CLR內部的時候使用這種方式就達不到目的了。
? 如果要查看運行時內存使用情況,IL代碼,CLR信息等可以使用以下兩種方式:
? 1、使用VS2005 + sos.dll
? 2、使用Windbg + sos.dll
? 第二種方式功能更加強大,下面我就通過實際操作展示一下怎么使用這種方法得到運行時ArrayList內部的值。
? 有人可能會說:我直接用Visual Studio的單步調試豈不是更快?當然,這個只是一個演示,通過這個演示是為以后的高級調試打下基礎
??
? 在操作之前,先熟悉一下基本知識:
? A、使用VS2005 + sos.dll調試
? 1、需要在項目->屬性->調試-〉啟用非托管代碼調試
? 2、打開調試-〉窗口-〉即時
? 3、在即時窗口中輸入 !load sos 加載調試模塊
? 4、輸入其它調試語句
??
? B、使用Windbg + sos.dll
? 1、去微軟的網站下載最新的Windbg
? 2、打開Windbg在File-〉Symbol File Path ...窗口中輸入 srv*c:\symbols*http://msdl.microsoft.com/download/symbols
? 3、運行需要調試的程序,然后在Windbg中File-〉Attach to Process中選擇剛才運行的程序
? 4、在出現的Command窗口中就可以輸入調試語句
? 5、常用調試語句:
?? lm //查看加載了哪些模塊
?? .load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos.dll //加載調試模塊
?? ld TestClass //加載調試符號
?? !name2ee TestClass.exe TestClass.Program.test //顯示test方法相關的地址
?? !dumpmt -md 00976d48 //得到類的成員函數詳細信息
?? !dumpil 00973028 // 顯示這個方法被編譯器編譯之后的IL代碼
?? !dumpheap -stat //該命令顯示程序中所有對象的統計信息,顯示的大小是對象本身的大小,不包括對象里面值的大小
?? !dumpheap -mt 790fcb30 //該命令顯示MethodTable 790fcb30的詳細信息
?? !gcroot 012919b8 //來顯示一個實例的所屬關系
?? !dumpobj(do) 012a3904 //顯示一個對象的具體內容,看對象里面有什么,值是什么
?? !ObjSize 012a1ba4 //對象實際在內存中的大小
?? !eeheap -gc //查看托管堆的情況(包括大小)
?? !DumpArray //查看數組信息
?? 下面就來看看具體的調試步驟:
? 1、我們的測試代碼
??
??
? namespace TestClass
? {
?? class Program
?? {
?? [STAThread]
?? static void Main(string[] args)
?? {
?? ArrayList list = new ArrayList();
?? list.Add("aaaa");
?? list.Add("bbbb");
?? Console.ReadLine();
?? }
?? }
? }很簡單,就是一個ArrayList
??
? 運行這個程序(開始執行,不調試),然后進入Windbg,Attach到這個進程
??
? 2、查看所有堆棧信息
? 0:004> !dumpheap -stat
?? MT Count TotalSize Class Name
? 7910062c 1 12 System.Security.Permissions.SecurityPermission
? 7918e284 1 16 System.IO.TextReader+SyncTextReader
? 79102d10 1 20 Microsoft.Win32.SafeHandles.SafeFileMappingHandle
? 79102cb4 1 20 Microsoft.Win32.SafeHandles.SafeViewOfFileHandle
? 79101d30 1 20 System.Text.InternalEncoderBestFitFallback
? 79100a7c 1 20 Microsoft.Win32.SafeHandles.SafeFileHandle
? 79105cd4 1 24 System.Collections.ArrayList
? ......
? 7912ad90 11 9036 System.Object[]
? 790fcb30 2083 131492 System.String
? Total 2202 objects
? 除了我們的ArrayList外,還有很多其它的系統信息,先不用管它
??
? 3、查看我們的ArrayList的信息
? 0:004> !dumpheap -mt 79105cd4
?? Address MT Size
? 012a1b88 79105cd4 24
? total 1 objects
? Statistics:
?? MT Count TotalSize Class Name
? 79105cd4 1 24 System.Collections.ArrayList
? Total 1 objects
??
? 4、查看對應地址內部實際的值
? 0:004> !do 012a1b88
? Name: System.Collections.ArrayList
? MethodTable: 79105cd4
? EEClass: 79105c28
? Size: 24(0x18) bytes
?? (C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
? Fields:
?? MT Field Offset Type VT Attr Value Name
? 7912ad90 40008df 4 System.Object[] 0 instance 012a1bb0 _items
? 791018e0 40008e0 c System.Int32 1 instance 2 _size
? 791018e0 40008e1 10 System.Int32 1 instance 2 _version
? 790fc35c 40008e2 8 System.Object 0 instance 00000000 _syncRoot
? 7912ad90 40008e3 1c0 System.Object[] 0 shared static emptyArray
?? >> Domain:Value 00149c58:012a1ba0 <<
? 可以看到ArrayList的大小為2,具體的值保存在地址012a1bb0中,是一個System.Object[]類型的數組
??
? 5、查看數組信息
? 0:004> !DumpArray 012a1bb0
? Name: System.Object[]
? MethodTable: 7912ad90
? EEClass: 7912b304
? Size: 32(0x20) bytes
? Array: Rank 1, Number of elements 4, Type CLASS
? Element Methodtable: 790fc35c
? [0] 012a1b50
? [1] 012a1b6c
? [2] null
? [3] null
??
? 6、查看數組內對象的值
? 0:004> !do 012a1b50
? Name: System.String
? MethodTable: 790fcb30
? EEClass: 790fca90
? Size: 26(0x1a) bytes
?? (C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
? String: aaaa
? Fields:
?? MT Field Offset Type VT Attr Value Name
? 791018e0 4000096 4 System.Int32 1 instance 5 m_arrayLength
? 791018e0 4000097 8 System.Int32 1 instance 4 m_stringLength
? 790fe534 4000098 c System.Char 1 instance 61 m_firstChar
? 790fcb30 4000099 10 System.String 0 shared static Empty
?? >> Domain:Value 00149c58:790d81bc <<
? 7912b1d8 400009a 14 System.Char[] 0 shared static WhitespaceChars
?? >> Domain:Value 00149c58:012a16f0 <<?
====================

windbg使用小總結
【抓dump】
1、一般抓法
adplus -hang -p 3230 -quiet 抓3230 pid進程,hang模式,相當于把那個進程暫停住,取內存快照
adplus -crash -pn w3wp -quiet 抓w3wp進程,crash模式,當那個進程崩潰結束的時候自動抓取當時的內存
adplus -hang -iis -quiet 抓IIS相關進程,包括其上host的web應用,以及iis自身
2、抓window服務
http://support.microsoft.com/kb/824344/zh-cn
3、遠程抓
http://blog.joycode.com/tingwang/archive/2006/08/11/79763.aspx
4、抓藍屏和死機的dump
電腦無故重啟或者藍屏會在C:\WINDOWS\Minidump\下保存一個minidump,但是這個minidump可用的命令很少,一般只打!analyze –v看到是哪個進程引起的,還有相關的驅動模塊就基本定位問題了。
5、IIS回收的時候抓
http://blog.yesky.com/blog/omakey/archive/2006/12/17/1618015.html
6、計劃任務抓
比如一個進程起來后不知道它什么時候會意外崩潰,可以在計劃任務里用crash里抓,當那個進程意外終止的時候,cdb可以直接附加上去,抓取當時的dump,如果要抓一些會自動重啟的進程,而且要抓每次重啟前的dump,可以參考附錄里一節。

【常用命令】
1、先path C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727,把.net路徑設置為path環境變量,一遍在windbg里可以直接.load sos,而不必.load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos.dll
2、ld demo,加載你程序的pdb文件,調試.net程序一般要把kernel32和mscorwks的符號加載上,關于這兩個東西大家可以查資料,尤其是后者有哪些函數可以多了解一些。
3、在windbg的file/symbol file path對話框里輸入以下文字,以便自動加載和下載符號
C:\WINDOWS\Symbols;d:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\symbols;.sympath SRV*d:\localsymbols*http://msdl.microsoft.com/download/symbols
其中有windows、.net2.0和自動從網上下載的調試符號,注意根據自己的情況適當修改目錄

【調試死鎖】
1、!syncblk,查看哪些線程拿到了鎖
2、~67e!clrstack 跳到某個拿到鎖的線程看它正在干什么操作,遲遲不肯釋放鎖
3、!runaway 查看這個占有鎖的線程運行了多長時間。
4、~*e!clrstack查看所有線程的托管堆棧,看看哪些是正在等待鎖的,比如hang在System.Threading.Monitor.Enter(System.Object)
5、~136s選擇該線程,顯示如下
0:000> ~136s eax=00005763 ebx=08deeb5c ecx=03eff0d4 edx=5570ab69 esi=08deeb5c edi=7ffd6000 eip=7c95ed54 esp=08deeb10 ebp=08deebb8 iopl=0 nv up ei pl zr na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246 ntdll!KiFastSystemCallRet: 7c95ed54 c3 ret
找到ecx寄存器的值,復制后ctrl+f,向上查找,會找到!syncblk的地方,如下
0:000> !syncblk Index SyncBlock MonitorHeld Recursion Owning Thread Info SyncBlock Owner 1906 03ee4be4 5 1 03ee8f88 22c8 67 185e2ef0 System.Object 5390 052ca39c 3 1 05292b30 1dd4 49 1060d3ac System.Object 9372 0530702c 15 1 0012d3a8 1aa8 80 185e7704 System.Object 11428 03eff0d4 35 1 053b8fa8 169c 120 166acd98 System.Object 15278 0531c6b4 61 1 06bc1430 26d8 86 1a5bea88 System.Object
可以看到136線程等待的鎖被120號線程占著不放(格式有點亂,湊合看),
6、有時候通過ecx寄存器找鎖不是很確定,可以用~* kb來把所有線程堆棧打出來,然后根據!syncblk出來的同步快的值去搜索大概有多少個線程在等那個鎖。因為同樣是等待鎖,可等的狀態不一樣,有的在Q里,有的鎖已經升級,有的去嘗試去拿鎖了,所以不一定當時ecx寄存器指向那塊內存,具體如何找到某個正在等待鎖的線程等待的鎖的內存地址,以及它正等待的這個鎖被哪個線程拿著,我還沒琢磨出規律來,但一般情況下,如果有其它同步對象的話,更難查。.net里用我上面說的幾步就能查出鎖的問題了。


【內存泄漏】
1、!dumpheap -stat看看哪些對象個數最多,占內存最大,
2、找到某個格式比較多的對象,可以看它的方法表,然后用!dumpheap -mt 66398fa4去隨機找幾個對象的地址
3、用!do 1e5a22bc命令去查看幾個對象的狀態,屬性的值等,看看正常不正常
4、用!gcroot -nostacks 1e5a22bc去查看幾個對象的根正常不正常,如果有些對象的根不是自己預先設計的那樣,很可能被自己沒想到的對象強引用了,所以GC無法回收它,就泄漏了。
【CPU百分百】
主要用幾個計數器和!runaway命令,具體見以下鏈接
http://www.cnblogs.com/onlytianc ... 7/06/03/769307.html
【線程池耗盡】
!threadpool 能看到完成端口,線程池工作線程和timer回調各占線程池的情況。
【其它】
1、!eestack -short -ee查看所有重要(獲取鎖的,托管的,停止并允許回收的)線程的dumpstack,差不多相當于~*e!dumpstack
2、.time 可以看到進程跑了多少時間
3、!dso 查看當前線程里有哪些對象,分析內存泄漏問題也許會用到
【小結】
要想很好的用windbg排查.net問題,首先要了解一些clr宿主的基礎知識,以及IL的一些基礎,還有簡單的寄存器和匯編嘗試,再就是有個好的思路,最后就是經驗和對代碼邏輯的理解。


【附錄:寫了一個自動抓dump的工具,可在程序異常退出的時候抓dump】
【使用方法】
1、先在cmd下運行以下命令確保計劃任務開著
net start "task scheduler"
2、執行以下命令安排自動抓包
at 13:27 d:\myapp\autodump\processmon.exe
其中計劃啟動的時間和自動抓包的程序路徑要根據情況設置,計劃啟動之前當前用戶一定要注銷。
【相關配置】
<appSettings>
? <add key="adplusPath" value="D:\MyApp\Debugging\adplus.vbs"/><!--adplus的路徑-->
? <add key="ProcessName" value="w3wp"/><!--要抓dump的進程的名字,可用部分名字,不用完整的-->
</appSettings>


【源碼】


using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;

namespace ProcessMon
{
??? class Program
??? {
??????? static readonly List<int> _dumpPIDs = new List<int>();
??????? private static readonly string _processName = System.Configuration.ConfigurationManager.AppSettings["ProcessName"];
??????? private static readonly string _adplusPath = System.Configuration.ConfigurationManager.AppSettings["adplusPath"];
??????? static void Main(string[] args)
??????? {
??????????? while(true)
??????????? {
??????????????? Console.WriteLine("..");
??????????????? ThreadProc();
??????????????? Thread.Sleep(10000);
??????????? }
??????? }

??????? private static void ThreadProc()
??????? {
??????????? foreach(Process vProcess in Process.GetProcesses())
??????????? {
??????????????? try
??????????????? {?????????????
??????????????????? string? processName? =? vProcess.ProcessName.ToLower();
??????????????????? if (processName.IndexOf(_processName) >= 0)
??????????????????? {
??????????????????????? Console.WriteLine("{0}-{1}", vProcess.ProcessName, vProcess.Id);

??????????????????????? if (_dumpPIDs.Contains(vProcess.Id))
??????????????????????????? continue;
??????????????????????? _dumpPIDs.Add(vProcess.Id);
?????
??????????????????????? DumpProcessDeg d = DumpProcess;
??????????????????????? d.BeginInvoke(vProcess.Id, null, null);
??????????????????????? DumpProcess(vProcess.Id);
??????????????????? }
??????????????? }
??????????????? catch(Exception ex)
??????????????? {
??????????????????? Console.WriteLine(ex);
??????????????? }
??????????? }
??????? }

??????? private delegate void DumpProcessDeg(int pid);
??????? static? void? DumpProcess(int pid)
??????? {
??????????? ProcessStartInfo? Info? =? new? System.Diagnostics.ProcessStartInfo();
??????????? Info.FileName = _adplusPath;
??????????? Info.Arguments = string.Format("-crash -p {0} -quiet",pid);
??????????? Info.WorkingDirectory? =? "C:\\";
??????????? Process? Proc? ;
??????????? try
??????????? {
??????????????? Proc? =? Process.Start(Info);
??????????? }
??????????? catch(System.ComponentModel.Win32Exception? e)
??????????? {
??????????????? Console.WriteLine("系統找不到指定的程序文件。\r{0}",? e);
??????????????? return;
??????????? }
??????????? Proc.EnableRaisingEvents = true;
??????????? Console.WriteLine("外部程序的開始執行時間:{0}",? Proc.StartTime);
??????????? Proc.WaitForExit(60000);
??????????? if(Proc.HasExited? ==? false){
??????????????? Console.WriteLine("由主程序強行終止外部程序的運行!");
??????????????? Proc.Kill();
??????????? }
??????????? else{
??????????????? Console.WriteLine("由外部程序正常退出!");
??????????? }
??????????? Console.WriteLine("外部程序的結束運行時間:{0}",? Proc.ExitTime);
??????????? Console.WriteLine("外部程序在結束運行時的返回值:{0}",? Proc.ExitCode);
??????? }
??? }
}

===============
補充幾個命令:

1、!analyze -v :用于分析掛掉線程的詳細情形,錯誤原因。

2、!locks :列出全部資源使用情況。

3、!locks -v 0x???????? :特定地址的死鎖分析。

4、!thread 0x????????:特定線程詳情。

5、.thread 0x????????:轉到某個線程堆棧。
?


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/b2b160/archive/2009/03/03/3951782.aspx

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            中文亚洲字幕| 噜噜噜躁狠狠躁狠狠精品视频| 一个色综合导航| 亚洲精品国产精品乱码不99| 亚洲电影成人| 精品999日本| 亚洲人成毛片在线播放| 欧美mv日韩mv国产网站app| 欧美精品一区在线发布| 欧美日韩第一区日日骚| 国产精品成人免费视频 | 一本久道久久久| 亚洲麻豆国产自偷在线| 夜夜躁日日躁狠狠久久88av| 亚洲免费在线| 久久一区二区视频| 亚洲欧洲精品一区| 欧美激情精品久久久久久变态| 亚洲国产精品日韩| 亚洲网友自拍| 久久久久国产精品www | 免费高清在线一区| 欧美日韩国产天堂| 国产性做久久久久久| 亚洲第一区色| 亚洲女同在线| 欧美国产1区2区| 亚洲资源av| 欧美激情精品久久久六区热门 | 国产模特精品视频久久久久| 欧美国产欧美亚洲国产日韩mv天天看完整 | 黄色一区二区三区| 日韩视频免费看| 久热精品视频在线免费观看| 日韩视频免费观看高清在线视频 | 欧美午夜不卡在线观看免费 | 日韩天堂在线视频| 久久久久国内| 99国产精品久久久久久久成人热| 午夜欧美精品| 欧美日韩蜜桃| 亚洲国产综合在线看不卡| 久久精品中文字幕一区| 欧美一区二区精品| 亚洲精品四区| 欧美成人按摩| 在线成人激情黄色| 久久精品99久久香蕉国产色戒| 欧美激情欧美狂野欧美精品| 欧美一级黄色网| 欧美亚洲成人免费| 亚洲国产精品高清久久久| 欧美一区二区视频免费观看 | 欧美国产日韩精品| 久久精品麻豆| 国产在线观看一区| 久久精品国产久精国产爱| 一本久久精品一区二区| 欧美国产日本| 亚洲精品视频在线| 亚洲国产国产亚洲一二三| 久久久久久久综合狠狠综合| 国产日本欧美视频| 久久er精品视频| 亚洲午夜av电影| 国产精品毛片va一区二区三区| 亚洲天堂av高清| 在线视频精品一| 欧美三级视频| 亚洲欧美日韩一区二区三区在线观看| 最新国产成人av网站网址麻豆| 免费黄网站欧美| 99视频一区二区| 久久久精品日韩欧美| 香蕉免费一区二区三区在线观看| 国产精品一区二区在线观看| 香蕉成人久久| 亚洲欧美成人精品| 国内精品视频久久| 欧美成人免费网站| 欧美激情视频给我| 亚洲一级一区| 国产精品99久久久久久www| 欧美在线三区| 久久精品国产亚洲一区二区三区 | 亚洲专区一区| 国产亚洲精品aa| 噜噜噜91成人网| 欧美激情视频在线播放| 这里只有精品丝袜| 欧美尤物巨大精品爽| 国产精品天美传媒入口| 久久久噜噜噜| 欧美精品激情blacked18| 一区二区三区国产在线| 亚洲小说欧美另类婷婷| 狠狠久久综合婷婷不卡| 欧美国产日韩免费| 欧美精品在线一区| 久久精品首页| 欧美韩日一区二区| 洋洋av久久久久久久一区| 亚洲一区视频在线| 91久久精品美女高潮| 中国女人久久久| 女主播福利一区| 一区二区国产在线观看| 午夜精品久久99蜜桃的功能介绍| 精品成人在线| 亚洲美女淫视频| 亚洲福利在线观看| 亚洲永久网站| 亚洲精品日韩在线| 欧美在线观看一区二区三区| 在线国产精品一区| 中文网丁香综合网| 日韩亚洲不卡在线| 久久精品中文字幕免费mv| 午夜久久电影网| 新67194成人永久网站| 久久婷婷国产麻豆91天堂| 欧美成人精品h版在线观看| 亚洲一二三区在线观看| 久久人人爽人人爽| 久久夜色精品国产欧美乱极品| 亚洲精品乱码久久久久久蜜桃91 | 蜜桃av一区| 欧美影院一区| 国产精品盗摄久久久| 男女激情久久| 一区二区三区在线免费播放| 亚洲欧美制服另类日韩| 亚洲免费视频中文字幕| 欧美日韩免费一区二区三区视频| 欧美华人在线视频| 136国产福利精品导航网址应用| 亚洲欧美影院| 欧美一区二区日韩| 国产精品一区视频| 亚洲无吗在线| 午夜亚洲性色福利视频| 国产精品久久97| 亚洲图中文字幕| 欧美一区在线直播| 国产视频观看一区| 久久成人一区| 欧美成人四级电影| 亚洲人成网站在线观看播放| 欧美国产免费| 一本一本大道香蕉久在线精品| 在线亚洲国产精品网站| 欧美精品v日韩精品v韩国精品v| 亚洲激情社区| 亚洲天堂网在线观看| 国产精品久久久久久久久免费樱桃| aa级大片欧美三级| 亚洲伊人网站| 国产日韩欧美一区在线| 久久精品国产精品亚洲综合| 美女在线一区二区| 99视频精品| 国产农村妇女精品一二区| 欧美在线观看网站| 欧美国产日韩一区二区| 这里只有精品丝袜| 国产亚洲激情在线| 你懂的国产精品| 在线一区日本视频| 久久伊人一区二区| 日韩视频久久| 国产一区二区高清不卡| 欧美国产日韩一二三区| 亚洲婷婷在线| 久久男人av资源网站| 亚洲欧洲一区二区天堂久久 | 在线日韩中文字幕| 亚洲国产精品v| 一区二区欧美日韩视频| 国产精品尤物| 另类综合日韩欧美亚洲| 99国产精品国产精品毛片| 久久久久久久久久久一区| 亚洲区一区二| 国产欧美精品在线| 欧美精品精品一区| 久久激情一区| 亚洲精品极品| 久久中文字幕一区二区三区| 一本色道久久加勒比88综合| 国产日韩在线看| 欧美日本韩国| 久久综合伊人77777尤物| 亚洲综合精品自拍| 最新国产の精品合集bt伙计| 欧美一区三区二区在线观看| 亚洲东热激情| 国产精品三区www17con| 久热成人在线视频| 性久久久久久久久久久久| 亚洲第一在线综合在线|