3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Windbg dump分析 学习总结

發布時間:2025/4/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windbg dump分析 学习总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Windbg核心調試之dump分析

http://www.pediy.com/kssd/pediy08/pediy8-428.htm
標 題: Windbg核心調試之dump分析
作 者:Lvg
時 間:2006-11-17 12:56?
鏈 接:http://bbs.pediy.com/showthread.php?threadid=35044
調試環境:winxp sp2+windbg ver:6.6.0007.5+vmware 5.5.2
附件:點擊下載

一.Dump文件的產生,意義和類型

? ? 當系統發生錯誤是,最常見的就是藍屏(Blue screen),這時就會在系統目錄下產生一個Dump文件

,如MEMORY.DMP 。這個文件的主要意義在于分析系統錯誤發生的原因,以作出解決的方法。
? ?它可分為三種類型:
? ?1.完全內存轉儲。這個文件比較大,和物理內存相當,包含了程序崩潰前系統及用戶模式下的所有信
息。
? ?2.核心內存轉儲。這個文件大小約物理內存的三分之一,主要包含崩潰前系統內核的運行情況。一般
為了分析內核錯誤,就選用這種文件。
? ?3.小內存轉儲。這個文件小,只有64k,剛好一個頁面文件大小。它包含了相對比較少的信息,主要
可用于微軟的在線分析。
? ?以上三種形式的文件可以在我的電腦——〉鼠標右鍵——〉屬性——〉高級——〉故障及恢復中設置
。如下圖:

二 Dump文件的強迫產生

? ?由于我們也不知道何時會產生一個系統錯誤,從而得到dump文件,所以當練習分析時,可認為強迫產

生一個。一般有以下兩個辦法。
? ?1.雙機聯調。這里的雙機可以是物理上的兩臺電腦,也可以是用虛擬機模擬。我想這里的大多數人應

該選擇后者,為啥?還不是money的問題~_^。當用windbg把被調試機聯上以后,就可以用.crash命令產

生一個藍屏,當然之前要在被調試機里把dump產生的路徑和類型設定好。還有另外一張辦法,是通過修

改注冊表后,用鍵盤產生dump,但這種方法哪有第一種來的快,所以就不說了,感興趣的可以查查

windbg幫助文檔看看。
? ?2.單機驅動產生。這種方法,不必用雙機聯調,在本機上就可以辦到。由于驅動深入到了內核,它的

要求非常苛刻,一個簡單的除零操作就可引發藍屏。但是驅動的編寫與普通win32 api是有很大不同的,

為了減輕負擔,我直接運用一個現成的程序,是《Microsoft Windows Internals》作者寫的Notmyfault

(見附件)。它由Notmyfault.exe和Myfault.sys兩部分組成。正如名字一樣,引發藍屏的不是

Notmyfault.exe而是由他加載到內核中的Myfault.sys。如圖:
?
? ?我在這里兩種方法都同時用了,先在虛擬機里執行Notmyfault,接著windbg立刻檢測到了系統崩潰,

并輸出相關信息。?

三 Dump文件的分析

? ? 當按上面的方法運行后,windbg輸出了以下內容:
*** Fatal System Error: 0x000000d1
? ? ? ? ? ? ? ? ? ? ? ?(0xE1147008,0x0000001C,0x00000000,0xFBE93403)

? Break instruction exception - code 80000003 (first chance)

? A fatal system error has occurred.
? Debugger entered on first try; Bugcheck callbacks have not been ? invoked.

? A fatal system error has occurred.

*******************************************************************************
* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
* ? ? ? ? ? ? ? ? ? ? ? ?Bugcheck Analysis ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*
* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
*******************************************************************************

Use !analyze -v to get detailed debugging information.

2.BugCheck D1, {e1147008, 1c, 0, fbe93403}

*** ERROR: Module load completed but symbols could not be loaded for myfault.sys
3.Probably caused by : myfault.sys ( myfault+403 )

Followup: MachineOwner
---------
nt!RtlpBreakWithStatusInstruction:
80527da8 cc ? ? ? ? ? ? ?int ? ? 3
Kd:> ?

上面這一段,有用的信息,如1和2兩段,說明的是一個問題,都指明了BugCheck是D1,并給了四個參數

,這里的D1可以在windbg文檔的Bug Check Code Reference中查出其具體含義,也可用!analyze –show?

D1命令查出。3說明引起的原因是myfault.sys模塊。
接著在kd后輸入!analyze –v命令,這個命令是詳細列出dump文件的信息。

windbg輸出如下:
kd> !analyze -v
*******************************************************************************
* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
* ? ? ? ? ? ? ? ? ? ? ? ?Bugcheck Analysis ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*
* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
*******************************************************************************

DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1) ?//指明Bugcheck D1,我們已看見過了
An attempt was made to access a pageable (or completely invalid) address at an
interrupt request level (IRQL) that is too high. ?This is usually
caused by drivers using improper addresses. ? ? ?//解釋了錯誤的原因
If kernel debugger is available get stack backtrace.
Arguments:
Arg1: e1147008, memory referenced
Arg2: 0000001c, IRQL
Arg3: 00000000, value 0 = read operation, 1 = write operation
Arg4: fbe93403, address which referenced memory
? ? ? ? ? ? ? ? ?//給出了相應的四個參數,第二列是代號,第三列是解釋
Debugging Details:
------------------
READ_ADDRESS: ?e1147008 Paged pool ? ? ? //上面的Arg1.

CURRENT_IRQL: ?1c ? ? ? //上面的Arg2

FAULTING_IP: ? ? //指出發生錯誤時所執行的指令
myfault+403
fbe93403 8b06 ? ? ? ? ? ?mov ? ? eax,dword ptr [esi]

DEFAULT_BUCKET_ID: ?DRIVER_FAULT ? //指出錯誤類型,是驅動錯誤

BUGCHECK_STR: ?0xD1 ? //bugcheck索引,可查windbg文檔,也可!analyze –show D1

PROCESS_NAME: ?NotMyfault.exe ?//錯誤所屬進程

TRAP_FRAME: ?f9357b80 --(trap fffffffff9357b80)//錯誤時各寄存器的內容
ErrCode = 00000000
eax=00000000 ebx=8111f330 ecx=000000d1 edx=0000001c esi=e1147008 edi=00000000
eip=fbe93403 esp=f9357bf4 ebp=f9357c58 iopl=0 ? ? ? ? nv up ei pl zr na pe nc
cs=0008 ?ss=0010 ?ds=0023 ?es=0023 ?fs=0030 ?gs=0000 ? ? ? ? ? ? efl=00010246
myfault+0x403:
fbe93403 8b06 ? ? ? ? ? ?mov ? ? eax,dword ptr [esi] ?ds:0023:e1147008=????????
Resetting default scope

LAST_CONTROL_TRANSFER: ?from 804f880d to 80527da8

STACK_TEXT: //反映了錯誤前堆棧中函數調用情況,最下面的0x7c801671處函數調用ntdll中的

ZwDeviceIoControlFile,接著調用了ntdll中的KiFastSystemCallRet,再接著調用了nt(這里的nt指

Ntoskrnl)中的KiFastCallEntry,一直到myfault+0x403,發生異常。
f9357734 804f880d 00000003 f9357a90 00000000 nt!RtlpBreakWithStatusInstruction
f9357780 804f93fa 00000003 e1147008 fbe93403 nt!KiBugCheckDebugBreak+0x19
f9357b60 80540853 0000000a e1147008 0000001c nt!KeBugCheck2+0x574
f9357b60 fbe93403 0000000a e1147008 0000001c nt!KiTrap0E+0x233
WARNING: Stack unwind information not available. Following frames may be wrong.
f9357c58 805759d1 ffb5c3b0 8111f318 811d9130 myfault+0x403
f9357d00 8056e33c 00000090 00000000 00000000 nt!IopXxxControlFile+0x5e7
f9357d34 8053d808 00000090 00000000 00000000 nt!NtDeviceIoControlFile+0x2a
f9357d34 7c92eb94 00000090 00000000 00000000 nt!KiFastCallEntry+0xf8
0012f9f0 7c92d8ef 7c801671 00000090 00000000 ntdll!KiFastSystemCallRet
0012f9f4 7c801671 00000090 00000000 00000000 ntdll!ZwDeviceIoControlFile+0xc
0012fa54 004018c2 00000090 83360018 00000000 0x7c801671

STACK_COMMAND: ?kb

FOLLOWUP_IP: //反匯編了發生錯誤指令的代碼
myfault+403
fbe93403 8b06 ? ? ? ? ? ?mov ? ? eax,dword ptr [esi]

SYMBOL_STACK_INDEX: ?4
FOLLOWUP_NAME: ?MachineOwner
MODULE_NAME: myfault
IMAGE_NAME: ?myfault.sys
DEBUG_FLR_IMAGE_TIMESTAMP: ?43774e1d
SYMBOL_NAME: ?myfault+403
FAILURE_BUCKET_ID: ?0xD1_myfault+403
BUCKET_ID: ?0xD1_myfault+403
Followup: MachineOwner
//以上幾段看名字就知道了,是以上信息的重復沒有多大價值。

四 總結

? ? 通過以上的分析,知道了藍屏的原因是Bugcheck D1引起的,是由于驅動程序讀操作了過高的IRQL引

起的。也知道了這個引發藍屏的驅動程序是myfault.sys,屬于notmyfaulf.exe的進程。還知道了藍屏前

bug程序myfault.sys的調用情況等多個有用信息,接著就可以在myfault.sys源程序中進行bug修改了。

========

利用windbg分析dump文件 ?

http://blog.163.com/crazywolf_/blog/static/195231413201061794619624/
這里主要記錄利用windbg來分析windows藍屏
時所產生的內存轉儲文件*.dmp。
1,下載:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx
2,配置symbol path:
windows程序在編譯生成后,會產生一些.exe,dll文件。同時也會用到一些symbol文件,這些文件包含全

局變量,局部變量等信息。在調試不同的系統的時候,用到的symbol是不同的,而且這些文件會很大,

如果下載安裝會占用很大的硬盤空間。如果下載,在上面提供的地址也可以下載。微軟還提供了一個網

絡上的symbol服務器。其網絡地址是:http://msdl.microsoft.com/download/symbols,設置symbol時

可以在打開windbg后,file->symbol file path 設置如下:其d:\temp 是本地緩存的目錄:

SRV*d:/temp/*http://msdl.microsoft.com/download/symbols。也可以用命令如下設置:
set _NT_SYMBOL_PATH=srv*DownstreamStore*http://msdl.microsoft.com/download/symbols

利用windbg分析dump文件(二)基本調試
1,打開dump文件,在正確設置了symbol路徑后,會有如下的顯示:
Microsoft (R) Windows Debugger Version 6.5.0003.7
Copyright (c) Microsoft Corporation. All rights reserved.

Loading Dump File [D:\important\document\win系統\debug\Mini121605-01.dmp]
Mini Kernel Dump File: Only registers and stack trace are available
Symbol search path is: SRV*d:/temp/*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows 2000 Kernel Version 2195 (Service Pack 4) UP Free x86 compatible
Kernel base = 0x80400000 PsLoadedModuleList = 0x8046e8f0
Debug session time: Fri Dec 16 13:30:21.203 2005 (GMT+8)
System Uptime: not available
Loading Kernel Symbols
...........................................................................................

.........................
Loading unloaded module list
...................
Loading User Symbols
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
Use !analyze -v to get detailed debugging information.
BugCheck 7F, {8, 0, 0, 0}
c0000005 Exception in ext.Analyze debugger extension.
?PC: 77c16fa3 VA: 01fe8000 R/W: 0 Parameter: 0001003f
2,關于調試窗口:view菜單下面有詳細的列表:可以調出對應的窗口,默認的打開窗口是command窗口
3,基本調試命令:
r 可以顯示系統崩潰時的寄存器,和最后的命令狀態。
dd 顯示當前內存地址,dd 參數:顯示參數處的內存。
u 可以顯示反匯編的指令
!analyze -v 顯示分析的詳細信息。
kb 顯示call stack 內容
kv.bugcheck 可以顯示出錯的代碼
========

?WinDBG 技巧:如何生成Dump 文件(.dump 命令)

http://wingeek.blog.51cto.com/1226974/273964

程序崩潰(crash)的時候, 為了以后能夠調試分析問題, 可以使用WinDBG要把當時程序內存空間數據
都保存下來,生成的文件稱為dump 文件。 步驟:
1) 打開WinDBG并將之Attach 到crash的程序進程
2) 輸入產生dump 文件的命令
WinDBG產生dump 文件的命令是 .dump ,可以選擇不同的參數來生成不同類型的dump文件。
選項(1): /m
命令行示例:.dump /m C:\dumps\myapp.dmp
注解: 缺省選項,生成標準的minidump, 轉儲文件通常較小,便于在網絡上通過郵件或其他方式傳輸

。 這種文件的信息量較少,只包含系統信息、加載的模塊(DLL)信息、 進程信息和線程信息。
選項(2): /ma
命令行示例:.dump /ma C:\dumps\myapp.dmp
注解: 帶有盡量多選項的minidump(包括完整的內存內容、句柄、未加載的模塊,等等),文件很大,

但如果條件允許(本機調試,局域網環境), 推薦使用這中dump。
選項(3):/mFhutwd
命令行示例:.dump /mFhutwd C:\dumps\myapp.dmp
注解:帶有數據段、非共享的讀/寫內存頁和其他有用的信息的minidump。包含了通過minidump能夠得到

的最多的信息。是一種折中方案。
========

?WINDBG調試DUMP文件

http://blog.csdn.net/vah101/article/details/5916384

? ? 對于windows程序員來說,程序運行時藍屏是最郁悶的事情,如何找到藍屏的原因則是首要解決的事

情,好在微軟提供了一系列的方法,為我們調試藍屏提供了便利。

? ? 首先要用的工具是windbg,可以到微軟的官方網站下載

? ? http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.11.1.402.msi

? ? 再需要下載并安裝一個符號鏈接庫,微軟官方網站也有提供,這個要根據你所調試系統的版本來選



? ? http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx#d

? ? 也可以不下載這個符號庫,直接讓windbg自己去網上下符號鏈接信息。

? ? 工具軟件準備好了,就可以開始設置了,首先進入 “我的電腦”->“屬性”->“高級”,選擇“啟

動和故障恢復”選項卡,在“寫入調試信息”一欄選擇dump文件的轉儲方式,在“轉儲文件”中填入

dump文件的保存路徑。當出現藍屏時,系統就會保存現場,將dump時的運行信息保存起來,以便我們用


windbg來分析。有一條要注意,如果選擇了完全內存轉儲,系統將會把內存中的所有信息都存進文件中

,這會相當緩慢,所以你能看到藍色屏幕上有一個跳動的數字,那就是保存的進度,必須耐心等待它保

存到100%。


? ? ? 當藍屏再次發生的時候,我們手上就有了dump文件了,通常在windows目錄下的MEMORY.DMP,或者

在windows下的miniDump文件夾中,以*.dmp的形式保存。把.dmp文件拷貝出來,就可以用windbg來調試
。

? ? ? 首先,需要設置一下windbg的符號庫,進入windbg的"File"->"Symbol File Path",在對話框的

“symbol path”里面輸入剛才下載的符號庫的安裝目錄,最省心的方法是在這里填入

SRV*c:/temp*http://msdl.microsoft.com/download/symbols就可以讓windbg自動去下載所需要的符號

信息。

? ? ? 將這里設置完,就可以開始調試.dmp文件了,打開“File”->“Open Crase Dump”,選擇一

個.dmp文件,windbg就開始下載符號庫并進行初步的分析,當出現

*******************************************************************************
* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
* ? ? ? ? ? ? ? ? ? ? ? ?Bugcheck Analysis ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*
* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
*******************************************************************************

Use !analyze -v to get detailed debugging information.

BugCheck 1000007F, {8, f772ffe0, 0, 0}

Probably caused by : bxnd52x.sys ( bxnd52x+365f )

Followup: MachineOwner
---------

就可以在下面的輸入框中敲入

!analyze -v;r;kv;lmtn;.logclose;

回車后就可以看到結果,比如我這里看到


BUGCHECK_STR: ?0x7f_8

CUSTOMER_CRASH_COUNT: ?3

DEFAULT_BUCKET_ID: ?DRIVER_FAULT_SERVER_MINIDUMP

CURRENT_IRQL: ?2

LAST_CONTROL_TRANSFER: ?from 00000000 to f759a65f

STACK_TEXT: ?
f78dc000 00000000 00000000 00000000 00000000 bxnd52x+0x365f

STACK_COMMAND: ?kb

FOLLOWUP_IP:?
bxnd52x+365f
f759a65f 53 ? ? ? ? ? ? ?push ? ?ebx

SYMBOL_STACK_INDEX: ?0

SYMBOL_NAME: ?bxnd52x+365f

FOLLOWUP_NAME: ?MachineOwner

MODULE_NAME: bxnd52x

IMAGE_NAME: ?bxnd52x.sys

DEBUG_FLR_IMAGE_TIMESTAMP: ?44a55446

FAILURE_BUCKET_ID: ?0x7f_8_bxnd52x+365f

BUCKET_ID: ?0x7f_8_bxnd52x+365f

Followup: MachineOwner
---------

? 說明藍屏可能是由于bxnd52x.sys驅動的問題造成的,上網百度了一下,這個 bxnd52x.sys是網卡驅動

,下載了一個更高版本的驅動重新安裝,藍屏的問題就解決了。 ?
========

使用Windbg解析dump文件

http://blog.csdn.net/xuleilx/article/details/17622627

第一章 常用的Windbg指令

①!analyze -v?
②kP ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 可以看函數的入參
③!for_each_frame dv /t ? ? ? ? ? ? ? ? ? ? ? ? ? ?可以看函數中的局部變量
④dc , db ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?產看某一內存中的值 ? ?可以直接接變量名?

不過可能需要回溯棧
⑤!threads ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 顯示所有線程

⑥~0s , ~1s ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 進入某個線程
⑦!frame ProcessA!FunctionA ? ? ? ? ? ? ? ? ? ? ? ?查看某一變量有時需要。 回溯棧 ?
⑧!uniqstack ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 擴展命令顯示當前進程中所有線程的調用堆棧

,除開重復的那些。 ??
⑨!teb ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 擴展以的格式化后的形式顯示線程環境塊

(TEB)的信息。?
⑩s-sa 和 s-su ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 命令搜索未指定的 ASCII 和 Unicode 字符串

。這在檢查某段內存是否包含可打印字符時有用。
?dds、dps 和 dqs 命令顯示給定范圍內存的內容。 ? ? 該內存被假定為符號表中的一連串地址。相應

的符號也會被顯示出來。命令顯示給定范圍內存的內容,它們是把內存區域轉儲出來,并把內存中每個元

素都視為一個符號對其進行解析,dds是四字節視為一個符號,dqs是每8字節視為一個符號,dps是根據

當前處理器架構來選擇最合適的長度
?.kframes ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?命令設置堆?;厮蒿@示的默認長度。默認20
?k, kb, kd, kp, kP, kv (Display Stack Backtrace) k*命令顯示給定線程的調用堆棧,以及其他相

關信息。通常要結合12)使用否則顯示出來的東西很少
?.reload /i xxx.dll ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?忽略.pdb 文件版本不匹配的情況。

第二章 Symbol的設置方法

2.1 將遠程的系統函數的PDB文件拷貝到本地「D:\mysymbol」目錄下
? ? SRV*D:\mysymbol*http://msdl.microsoft.com/download/symbols

2.2 加載設置的符號文件
? ? .reload
? ? 可以使用菜單中的 Debug -> Modules 查看有沒有加載進來

第三章 實例


實例1 如何調查堆被破壞問題。

? ? 錯誤代碼:0xc0000374
? ? 錯誤含義:ACTIONABLE_HEAP_CORRUPTION_heap_failure_buffer_overrun


第一步、先用「!analyze -v」分析出錯誤的地方以及由于什么原因導致程序Dump掉的。
? ? ? ?無非是內存溢出,訪問非法地址等幾種。


0:009> !analyze -v
*******************************************************************************
* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
* ? ? ? ? ? ? ? ? ? ? ? ?Exception Analysis ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
*******************************************************************************
GetPageUrlData failed, server returned HTTP status 404
URL requested:?

http://watson.microsoft.com/StageOne/ProcessA_exe/1_0_0_1/5134aefd/ntdll_dll/6_1_7601_18229

/51fb164a/c0000374/000c4102.htm?Retriage=1

FAULTING_IP:?
ntdll!RtlReportCriticalFailure+62
00000000`777b4102 eb00 ? ? ? ? ? ?jmp ? ? ntdll!RtlReportCriticalFailure+0x64?

(00000000`777b4104)

EXCEPTION_RECORD: ?ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 00000000777b4102 (ntdll!RtlReportCriticalFailure+0x0000000000000062)
? ?ExceptionCode: c0000374
? ExceptionFlags: 00000001
NumberParameters: 1
? ?Parameter[0]: 000000007782b4b0

PROCESS_NAME: ?ProcessA.exe

ERROR_CODE: (NTSTATUS) 0xc0000374 - <Unable to get error code text>

EXCEPTION_CODE: (NTSTATUS) 0xc0000374 - <Unable to get error code text>

EXCEPTION_PARAMETER1: ?000000007782b4b0

MOD_LIST: <ANALYSIS/>

NTGLOBALFLAG: ?0

APPLICATION_VERIFIER_FLAGS: ?0

FAULTING_THREAD: ?0000000000002f8c

DEFAULT_BUCKET_ID: ?ACTIONABLE_HEAP_CORRUPTION_heap_failure_buffer_overrun

PRIMARY_PROBLEM_CLASS: ?ACTIONABLE_HEAP_CORRUPTION_heap_failure_buffer_overrun

BUGCHECK_STR: ?APPLICATION_FAULT_ACTIONABLE_HEAP_CORRUPTION_heap_failure_buffer_overrun

LAST_CONTROL_TRANSFER: ?from 00000000777b4746 to 00000000777b4102

STACK_TEXT: ?
00000000`0548e170 00000000`777b4746 : 00000000`00000002 00000000`00000023 00000000`00000000?

00000000`00000003 : ntdll!RtlReportCriticalFailure+0x62
00000000`0548e240 00000000`777b5952 : 00000000`00000000 00000000`00000000 00000000`00000000?

00000000`1c01001d : ntdll!RtlpReportHeapFailure+0x26
00000000`0548e270 00000000`777b7604 : 00000000`00c50000 00000000`00c50000 00000000`0000000a?

00000000`00000000 : ntdll!RtlpHeapHandleError+0x12
00000000`0548e2a0 00000000`777b79e8 : 00000000`00c50000 00000000`00000000 00000000`00100000?

00000000`00000000 : ntdll!RtlpLogHeapFailure+0xa4
00000000`0548e2d0 00000000`7774fad6 : 00000000`00c50000 00000000`00c59e50 00000000`00c50000?

00000000`00000000 : ntdll!RtlpAnalyzeHeapFailure+0x3a8
00000000`0548e330 00000000`777434d8 : 00000000`00c50000 00000000`00000003 00000000`000006cc?

00000000`000006e0 : ntdll!RtlpAllocateHeap+0x1d2a
00000000`0548e8d0 00000000`777247ea : 00000000`00000003 00000000`00c5ee80 00000000`00c50278?

00000000`000006cc : ntdll!RtlAllocateHeap+0x16c
00000000`0548e9e0 00000000`77723ff2 : 00000000`00c50000 00000000`00000003 00000000`00c5ee90?

00000000`000006cc : ntdll!RtlpReAllocateHeap+0x648
00000000`0548eca0 00000000`750c712f : 00000000`0548fbe8 00000000`00c5ee90 00000000`00000000?

00000000`000005ac : ntdll!RtlReAllocateHeap+0xa2
00000000`0548edb0 00000001`40010f6f : 00000000`00000000 00000000`0548fbe8 00000000`00000000?

00000000`00000661 : msvcr80!realloc+0x6f [f:\dd\vctools\crt_bld\self_64_amd64\crt\src

\realloc.c @ 332]
00000000`0548ede0 00000001`4000f63c : ffffffff`ffffffff 00000000`0548ff10 00000000`00c97fd0?

00000000`0548fe48 : ProcessA!FunctionA_AnalyzeEventData+0xfcf [e:\ProcessA

\FunctionA_sockserv.cpp @ 1666]
00000000`0548f8a0 00000000`774e652d : 00000000`000002a0 00000000`00000000 00000000`00000000?

00000000`00000000 : ProcessA!FunctionA_SockWork+0xe1c [e:\ProcessA\FunctionA_sockserv.cpp @?

1102]
00000000`0548ff60 00000000`7771c541 : 00000000`00000000 00000000`00000000 00000000`00000000?

00000000`00000000 : kernel32!BaseThreadInitThunk+0xd
00000000`0548ff90 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000?

00000000`00000000 : ntdll!RtlUserThreadStart+0x1d

STACK_COMMAND: ?!heap ; ~9s; .ecxr ; kb

FOLLOWUP_IP:?
msvcr80!realloc+6f [f:\dd\vctools\crt_bld\self_64_amd64\crt\src\realloc.c @ 332]
00000000`750c712f 4885c0 ? ? ? ? ?test ? ?rax,rax

SYMBOL_STACK_INDEX: ?9

SYMBOL_NAME: ?msvcr80!realloc+6f

FOLLOWUP_NAME: ?MachineOwner

MODULE_NAME: msvcr80

IMAGE_NAME: ?msvcr80.dll

DEBUG_FLR_IMAGE_TIMESTAMP: ?4ec3407e

FAILURE_BUCKET_ID: ?

ACTIONABLE_HEAP_CORRUPTION_heap_failure_buffer_overrun_c0000374_msvcr80.dll!realloc

BUCKET_ID: ?

X64_APPLICATION_FAULT_ACTIONABLE_HEAP_CORRUPTION_heap_failure_buffer_overrun_msvcr80!

realloc+6f

WATSON_STAGEONE_URL: ?

http://watson.microsoft.com/StageOne/ProcessA_exe/1_0_0_1/5134aefd/ntdll_dll/6_1_7601_18229

/51fb164a/c0000374/000c4102.htm?Retriage=1

Followup: MachineOwner
---------

第二步、使用「!heap」找出出錯的堆。分析出錯的原因。

? ? ? ?0000000000c59c80
? ? ? ?0000000000c59e50 ?←出錯的堆地址。
? ? ? ?0000000000c59fd0

大家應該有這樣的常識,在使用malloc()或者realloc()分配出來的空間的前面都有
相應的管理情報,用來記錄這塊分配的內存的大小以及返回的時候用的情報。

從這里很自然的猜想到,在寫往0000000000c59c80里面寫數據的時候寫過了,
寫到0000000000c59e50上去了,導致它的管理情報被覆蓋了。從而程序dump掉了。

0:009> !heap
**************************************************************
* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*
* ? ? ? ? ? ? ? ? ?HEAP ERROR DETECTED ? ? ? ? ? ? ? ? ? ? ? *
* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*
**************************************************************

Details:


Error address: 0000000000c59e50
Heap handle: 0000000000c50000
Error type heap_failure_buffer_overrun (6)
Parameter 1: 000000000000000a
Last known valid blocks: before - 0000000000c59c80, after -0000000000c59fd0
Stack trace:
? ? ? ? ? ? ? ? 00000000777b79e8: ntdll!RtlpAnalyzeHeapFailure+0x00000000000003a8
? ? ? ? ? ? ? ? 000000007774fad6: ntdll!RtlpAllocateHeap+0x0000000000001d2a
? ? ? ? ? ? ? ? 00000000777434d8: ntdll!RtlAllocateHeap+0x000000000000016c
? ? ? ? ? ? ? ? 00000000777247ea: ntdll!RtlpReAllocateHeap+0x0000000000000648
? ? ? ? ? ? ? ? 0000000077723ff2: ntdll!RtlReAllocateHeap+0x00000000000000a2
? ? ? ? ? ? ? ? 00000000750c712f: msvcr80!realloc+0x000000000000006f
? ? ? ? ? ? ? ? 0000000140010f6f: ProcessA!FunctionA_AnalyzeEventData+0x0000000000000fcf
? ? ? ? ? ? ? ? 000000014000f63c: ProcessA!FunctionA_SockWork+0x0000000000000e1c
? ? ? ? ? ? ? ? 00000000774e652d: kernel32!BaseThreadInitThunk+0x000000000000000d
? ? ? ? ? ? ? ? 000000007771c541: ntdll!RtlUserThreadStart+0x000000000000001d
Index ? Address ?Name ? ? ?Debugging options enabled
? 1: ? 001f0000 ? ? ? ? ? ? ? ?
? 2: ? 00010000 ? ? ? ? ? ? ? ?
? 3: ? 00020000 ? ? ? ? ? ? ? ?
? 4: ? 00670000 ? ? ? ? ? ? ? ?
? 5: ? 00950000 ? ? ? ? ? ? ? ?
? 6: ? 00c50000 ? ? ? ? ? ? ? ?
? 7: ? 00910000 ? ? ? ? ? ? ? ?
? 8: ? 00bc0000 ? ? ? ? ? ? ? ?
? 9: ? 010e0000 ? ? ? ? ? ? ? ?
?10: ? 01220000 ? ? ? ? ? ? ? ?
?11: ? 01420000 ? ? ? ? ? ? ? ?
?12: ? 00c30000 ? ? ? ? ? ? ? ?
?13: ? 03660000 ? ? ? ? ? ? ? ?
?14: ? 00ba0000 ? ? ? ? ? ? ? ?
?15: ? 037b0000 ? ? ? ? ? ? ? ?
?16: ? 01340000 ? ? ? ? ? ? ? ?
?17: ? 039a0000 ? ? ? ? ? ? ? ?

第三步、使用「!for_each_frame dv /t」打印出錯函數的局部變量,找出元兇。
? ? ? ?從下面的變量里面找到距離0000000000c59c80地址最近的變量,對了就是它:

? ? ? ?char * pData_n = 0x00000000`00c59c90 "SE:Security: ???"

? ? ? ?※注意如果變量值指針的指針需要先用dc看一下該指針指向的地址。

? ? ? ?之后看代碼知道,程序在讀取pData_n的數據的時候如果遇到是0a(Windos換行符)就自動在后面

加上
? ? ? ?0d變成0a0d。導致pData_n內存越界了。

0:009> !for_each_frame dv /t
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
12 00000000`0548edb0 00000001`40010f6f msvcr80!realloc+0x6f [f:\dd\vctools\crt_bld

\self_64_amd64\crt\src\realloc.c @ 332]
void * pBlock = 0x00000000`00000000
unsigned int64 newsize = 0x548fbe8
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
13 00000000`0548ede0 00000001`4000f63c ProcessA!FunctionA_AnalyzeEventData+0xfcf [e:

\ProcessA\FunctionA_sockserv.cpp @ 1666]
void * cd = 0xffffffff`ffffffff
struct _MpEvsHead * Head = 0x00000000`0548ff10
char * pEventData = 0x00000000`00c97fd0 "???"
char ** pNewData = 0x00000000`0548fe48
char * SiteName = 0x00000000`0548fe18 ""
int oval_check = 0n0
char * pszHostIp = 0x00000000`0548fbf0 "192.168.1.1"
int j = 0n469
int NodeName_check = 0n0
char [2068] eventtext = char [2068] "SE:Security: ???"
unsigned long err = 0
int NL_henkan = 0n1
int Evttxt_check = 0n1
char [129] nameWork = char [129] "`_???"
int ret = 0n0
struct NameObject_t * pNameObj_n = 0x00000000`00c5eee8
char * pData_n = 0x00000000`00c59c90 "SE:Security: ???"
long lWork = 0n9
char [257] szTrcBuff = char [257] "safely divided text.([453]bytes --> [469]bytes)"
long nNameNum = 0n44
long nNewLen = 0n1740
struct NameObject_t * pNameObj_o = 0x00000000`00c98028
char * pData_o = 0x00000000`00c984c6 "SE:Security: ???"
char * pt = 0x00000000`00c59e55 "[???"
long i = 0n20
int IpAddr_check = 0n0
int res = 0n1
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
14 00000000`0548f8a0 00000000`774e652d ProcessA!FunctionA_SockWork+0xe1c [e:\ProcessA

\FunctionA_sockserv.cpp @ 1102]
void * ns = 0x00000000`000002a0
char * pRead_str = 0x00000000`00c562f0 ","
int bTableRegisterd = 0n0
unsigned long err = 0
char [3] traceflg = char [3] ""
int ret = 0n0
short sWork = 0n2
int oval_check = 0n0
char * pNewData = 0x00000000`00c5ee90 "???"
char * wk = 0x00000000`0548f930 "192.168.1.1"
char [33] SiteName = char [33] ""
long lWork = 0n2032
char [257] szTrcBuff = char [257] "recv event OK"
int iLastSerchedIndex = 0n0
char [256] HostIp = char [256] "192.168.1.1"
int ret2 = 0n0
struct _MpEvsHead Head = struct _MpEvsHead
long nDataLen = 0n3
char [257] szTrcBuff2 = char [257] ""
char [20] szSendData = char [20] "OK"
struct addrinfo hinst = struct addrinfo
int conv_disc_set = 0n1
long lRc = 0n0
void * conv_disc = 0xffffffff`ffffffff
int res = 0n1
char * pData = 0x00000000`00c97fd0 "???"
long nRead = 0n3726
char [16] evttype = char [16] "Alarm.sys"
char * lpszEventid = 0x00000000`00c5f180 ""
long nSend = 0n12
char [256] ipTmp = char [256] "192.168.1.1"
char [20] szToCode = char [20] "sjis"
char [20] szFromCode = char [20] "sjis"
int bWriteEvent = 0n1
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
實例2 ?無效參數(STATUS_INVALID_PARAMETER)。

? ? 錯誤代碼:0xc000000d
? ? 錯誤含義:STATUS_INVALID_PARAMETER

第一步、先用「!analyze -v」分析出錯誤的地方以及由于什么原因導致程序Dump掉的。
?
0:000> !analyze -v
*******************************************************************************
* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
* ? ? ? ? ? ? ? ? ? ? ? ?Exception Analysis ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
*******************************************************************************

*** ERROR: Symbol file could not be found. ?Defaulted to export symbols for user32.dll -?
Unable to load image C:\Windows\Odsv.dll, Win32 error 0n2
*** WARNING: Unable to verify timestamp for Odsv.dll
*** ERROR: Module load completed but symbols could not be loaded for Odsv.dll
GetPageUrlData failed, server returned HTTP status 404
URL requested:?

http://watson.microsoft.com/StageOne/ProcessB_exe/1_0_0_1/4e362265/msvcr80_dll/8_0_50727_61

95/4dcdd833/c000000d/0001d5fa.htm?Retriage=1

FAULTING_IP:?
msvcr80!strncpy_s+10a [f:\dd\vctools\crt_bld\self_64_amd64\crt\src\tcsncpy_s.inl @ 62]
00000000`74e6d5fa b822000000 ? ? ?mov ? ? eax,22h

EXCEPTION_RECORD: ?ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 0000000074e6d5fa (msvcr80!strncpy_s+0x000000000000010a)
? ?ExceptionCode: c000000d
? ExceptionFlags: 00000000
NumberParameters: 0

PROCESS_NAME: ?ProcessB.exe

ERROR_CODE: (NTSTATUS) 0xc000000d - <Unable to get error code text>

EXCEPTION_CODE: (NTSTATUS) 0xc000000d - <Unable to get error code text>

MOD_LIST: <ANALYSIS/>

NTGLOBALFLAG: ?0


APPLICATION_VERIFIER_FLAGS: ?0

LAST_CONTROL_TRANSFER: ?from 0000000000124250 to 0000000074e5b0ec

FAULTING_THREAD: ?ffffffffffffffff

DEFAULT_BUCKET_ID: ?STATUS_INVALID_PARAMETER

PRIMARY_PROBLEM_CLASS: ?STATUS_INVALID_PARAMETER

BUGCHECK_STR: ?APPLICATION_FAULT_STATUS_INVALID_PARAMETER

IP_ON_STACK:?
+2e32faf01dedf58
00000000`00124250 60 ? ? ? ? ? ? ????

FRAME_ONE_INVALID: 1

STACK_TEXT: ?
00000000`00124220 00000000`00124250 : 00000000`00000006 00000000`00000000 00000000`00000001?

00000000`00000000 : msvcr80!_invalid_parameter+0x6c [f:\dd\vctools\crt_bld

\self_64_amd64\crt\src\invarg.c @ 88]
00000000`00124228 00000000`00000006 : 00000000`00000000 00000000`00000001 00000000`00000000?

00000000`00000000 : 0x124250
00000000`00124230 00000000`00000000 : 00000000`00000001 00000000`00000000 00000000`00000000?

00000000`00124260 : 0x6

STACK_COMMAND: ?~0s; .ecxr ; kb


FOLLOWUP_IP:?

msvcr80!strncpy_s+10a [f:\dd\vctools\crt_bld\self_64_amd64\crt\src\tcsncpy_s.inl @ 62]
00000000`74e6d5fa b822000000 ? ? ?mov ? ? eax,22h

FAULTING_SOURCE_CODE: ?
No source found for 'f:\dd\vctools\crt_bld\self_64_amd64\crt\src\tcsncpy_s.inl'

SYMBOL_STACK_INDEX: ?0

SYMBOL_NAME: ?msvcr80!strncpy_s+10a

FOLLOWUP_NAME: ?MachineOwner

MODULE_NAME: msvcr80

IMAGE_NAME: ?msvcr80.dll

DEBUG_FLR_IMAGE_TIMESTAMP: ?4dcdd833

FAILURE_BUCKET_ID: ?STATUS_INVALID_PARAMETER_c000000d_msvcr80.dll!strncpy_s

BUCKET_ID: ?X64_APPLICATION_FAULT_STATUS_INVALID_PARAMETER_msvcr80!strncpy_s+10a

WATSON_STAGEONE_URL: ?

http://watson.microsoft.com/StageOne/ProcessB_exe/1_0_0_1/4e362265/msvcr80_dll/8_0_50727_61

95/4dcdd833/c000000d/0001d5fa.htm?Retriage=1

Followup: MachineOwner
---------
這次運氣很不好,從「!analyze -v」打出來的結果來看看不出啥東西來,只知道
在調用strncpy_s的時候dmp掉了,無法定位具體是哪個函數出錯的原因很多,有可能
客戶采集的不是全dmp文件或者dmp文件中的棧被破壞了。 ??

這的確很傷腦筋,就針對這個我可是花了3個星期一行行的解析棧里面的內容 才解決的。

第二步、先用「!teb」看一下這個程序的棧是從哪里到哪里的。

0:000>!teb
TEB at 000007ffffeee000
? ? ExceptionList: ? ? ? ?0000000000000000
? ? StackBase: ? ? ? ? ? ?0000000008d50000
? ? StackLimit: ? ? ? ? ? 0000000008d4d000
? ? SubSystemTib: ? ? ? ? 0000000000000000
? ? FiberData: ? ? ? ? ? ?0000000000001e00
? ? ArbitraryUserPointer: 0000000000000000
? ? Self: ? ? ? ? ? ? ? ? 000007ffffeee000
? ? EnvironmentPointer: ? 0000000000000000
? ? ClientId: ? ? ? ? ? ? 0000000000001bdc . 0000000000001868
? ? RpcHandle: ? ? ? ? ? ?0000000000000000
? ? Tls Storage: ? ? ? ? ?000007ffffeee058
? ? PEB Address: ? ? ? ? ?000007fffffd6000
? ? LastErrorValue: ? ? ? 87
? ? LastStatusValue: ? ? ?c000000d
? ? Count Owned Locks: ? ?0
? ? HardErrorMode: ? ? ? ?0

第三步、先用「dps」看一下這個程序的棧中的內存的內容。 下面截取其中比較重要的一段。

-------------------------------------------------------------------------------------------

------------------------------------
00000000`001247d8 ?00000000`74e6d5fa msvcr80!strncpy_s+0x10a [f:\dd\vctools\crt_bld

\self_64_amd64\crt\src\tcsncpy_s.inl @ 62]
00000000`001247e0 ?00000000`009c01e0
00000000`001247e8 ?00000000`030f5810
00000000`001247f0 ?00000000`0057e310 ProcessB2!work   
★「ProcessB2!work」的內容本應該是像這樣的數據「DNxxxxxxxx_150_109」
但是現在「ProcessB2!work」中的內容卻是「VIP_rtcrx00184-004a/b-y3b-d」這個。

00000000`001247f8 ?00000000`005782c0 ProcessB2!trcData 
▲「ProcessB2!trcData」的內容是「Function:testB call」。
?函數List::testB の trace("testB", __FILE__, __LINE__, TRCLV_3);

00000000`00124800 ?00000000`00000000
00000000`00124808 ?00000000`00000000
00000000`00124810 ?00000000`004a3150 ProcessB2!`string' 
▲「 ProcessB2!`string'」的內容是「e:\ProcessB\FunctionB.cpp  __FILE__」。

00000000`00124818 ?00000000`00455b65 ProcessB2!List::testB+0x55 [e:\ProcessB\Listset.cpp @?

719]
00000000`00124820 ?00000000`009c01e0
00000000`00124828 ?00000000`030f5810
00000000`00124830 ?00000000`0057e310 ProcessB2!work
00000000`00124838 ?00000000`001249e0
00000000`00124840 ?32322e35`322e3000
00000000`00124848 ?30614031`33312e34
00000000`00124850 ?7097fb8e`bc923730
00000000`00124858 ?5049565f`5753334c
00000000`00124860 ?00000000`0000125f
00000000`00124868 ?000082bd`b1200d5e
00000000`00124870 ?00000000`009c01e0
00000000`00124878 ?00000000`00467bda ProcessB2!FunctionB+0x73a [e:\ProcessB\FunctionB.cpp @?

181] ??
-------------------------------------------------------------------------------------------

------------------------------------
這里終于定位到是哪個函數出問題。搞清楚這些函數的功能,然后打印出所有可能打印的內容,發現
函數傳遞了一個不合法的數據。在這里要說一下為啥傳的數據不合法就會Dmp掉。

首先strncpy 這個函數在使用的時候只要有個宏定義(默認是有的)在編譯的時候就會使用strncpy_s這個
安全函數。
詳情可以參考下面微軟的說明文檔。
http://msdn.microsoft.com/zh-cn/LIBRARY/ms175759(v=vs.80)

其次說明一下為什么會dmp掉。strncpy在使用的時候如果轉化成strncpy_s的時候是這樣一種形式。
char dst[5];
strncpy(dst, "a long string", 5); ? ?----> ?strncpy_s(dst, 5, "a long string", 5);

而這樣就會到時報STATUS_INVALID_PARAMETER這個錯誤這是strncpy_s的特性。具體使用方法可以參考下
面的文檔。
http://msdn.microsoft.com/zh-cn/library/5dae5d43(v=vs.90).aspx

節選:
char dst[5];
strncpy_s(dst, 5, "a long string", 5);
means that we are asking strncpy_s to copy five characters into a buffer five bytes long;?

this would leave no space for the null terminator, hence strncpy_s zeroes out the string?

and calls the invalid parameter handler.
If truncation behavior is needed, use _TRUNCATE or (size – 1):
strncpy_s(dst, 5, "a long string", _TRUNCATE);
strncpy_s(dst, 5, "a long string", 4);

詳細的ACTIONABLE_HEAP_CORRUPTION_heap_failure_buffer_overrun方法還可以參考以下的例子:
http://blogs.msdn.com/b/jiangyue/archive/2010/03/16/windows-heap-overrun-monitoring.aspx
========

?windbg分析dump文件

http://blog.csdn.net/xiaoshahai/article/details/7284867/
前言:WinDbg是微軟開發的免費源代碼級的調試工具。WinDbg可以用于Kernel模式調試和用戶模式調試

,還可以調試Dump文件。本文的討論是在安裝了Debugging Tools for Windows 的前提下進行的,下載

地址可以參考我之前的文章。WinDbg對于dump文件的調試可以通過菜單設置Symbol File Path、Source?

File Path ,并可設置多個路徑。

1、 ?打開Dump格式文件


打開WinDbg,通過菜單[File] à [Open Crash dump] 選擇dump文件打開,也可通過CMD打開Dos命令窗口

,切換到WinDbg所在目錄,利用命令:

WinDbg –z “D:/Lines2009-7-25-22-20-33-900.dmp”

-z表示路徑

clip_image001

圖1.1 利用WinDbg打開dump文件

本文編寫了一個簡單能產生除數為0異常的程序,讓其運行,產生崩潰,通過drwtsn產生dmp文件,然后

通過windbg分析dmp文件,定位程序bug。

目的:學習windbg基本功能使用。

程序源代碼:

void Crash(void) {int i = 1;int j = 0;i /= j; }void main(void) {Crash(); }
編譯環境:vc++6.0

編譯器設置:

?這一步設置,要求對release版本不使用優化,如果使用優化,上面源代碼中Crash(void)函數將不被匯
編。

這一步設置,產生release版本的調試符號表,為后續定位錯誤準備。

步驟:

1、 安裝drwtsn32

用戶可以通過drwtsn32命令,查看dmp文件會被保存在何處。

2、 安裝windbg,Windbg下載地址:

http://www.microsoft.com/whdc/devtools/debugging/default.mspx

3、 設置windbg

A、符號表路徑設置

其中;srv*d:/symbolslocal*http://msdl.microsoft.com/download/symbols設置的目的是下載該程序用

到的操作系統相關的庫函數的符號表到本地。

B、源代碼路徑設置

C、dmp文件導入

載入dump文件顯示如圖:

clip_image002

圖1.2 WinDbg界面

2、 ?分析dump文件


若生成的dump文件在本機,dump文件中將包含調試需要的PDB文件及源代碼路徑,若不在本機,可以通過

WinDbg菜單[File] à [Symbol File path] 及 [Source File Path] 分別設置PDB文件路徑和源代碼路徑

。如果程序涉及到DLL,需要將EXE、DLL所有涉及的PDB、源代碼路徑都包括。使用命令:

!analyze –v

將分析dump文件,并顯示程序崩潰處于的代碼行:

clip_image003

圖1.3 分析dump 文件
========

?調試技巧 —— 如何利用windbg + dump + map分析程序異常

http://blog.csdn.net/xiaoshahai/article/details/7285103
之前碰到論壇里有幾個好友,說程序不時的崩潰,什么xxoo不能read的! 如果光要是這個內存地址,估

計你會瘋掉~~

所以分享一下基本的調試技巧,需要準備的工具有WinDbg + VC6.0,

下面是自己整理的一份自動生成DUMP文件的源代碼,只需要添加到工程即可,源代碼如下:

MiniDump.h

[cpp] view plaincopy?
#include <windows.h> ?
#include <tlhelp32.h> ?
??
//#include "dbghelp.h" ?
//#define DEBUG_DPRINTF ? ? 1 ? //allow d() ?
//#include "wfun.h" ?
??
#pragma optimize("y", off) ? ? ?//generate stack frame pointers for all functions - same as?

/Oy- in the project ?
#pragma warning(disable: 4200) ?//nonstandard extension used : zero-sized array in?

struct/union ?
#pragma warning(disable: 4100) ?//unreferenced formal parameter ?
??
/*BOOL WINAPI Get_Module_By_Ret_Addr(PBYTE Ret_Addr, PCHAR Module_Name, PBYTE &?

Module_Addr);?
int ?WINAPI Get_Call_Stack(PEXCEPTION_POINTERS pException, PCHAR Str);?
int ?WINAPI Get_Version_Str(PCHAR Str);?
PCHAR WINAPI Get_Exception_Info(PEXCEPTION_POINTERS pException);?
void WINAPI Create_Dump(PEXCEPTION_POINTERS pException, BOOL File_Flag, BOOL Show_Flag);*/ ?
??
// In case you don't have dbghelp.h. ?
#ifndef _DBGHELP_ ?
??
typedef struct _MINIDUMP_EXCEPTION_INFORMATION { ?
? ? DWORD ? ThreadId; ?
? ? PEXCEPTION_POINTERS ExceptionPointers; ?
? ? BOOL ? ?ClientPointers; ?
} MINIDUMP_EXCEPTION_INFORMATION, *PMINIDUMP_EXCEPTION_INFORMATION; ?
??
typedef enum _MINIDUMP_TYPE { ?
? ? MiniDumpNormal = ? ? ? ? ? ?0x00000000, ?
? ? ? ? MiniDumpWithDataSegs = ? ? ?0x00000001, ?
} MINIDUMP_TYPE; ?
??
typedef BOOL (WINAPI * MINIDUMP_WRITE_DUMP)( ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IN HANDLE ? ? ? ? ? hProcess, ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IN DWORD ? ? ? ? ? ?ProcessId, ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IN HANDLE ? ? ? ? ? hFile, ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IN MINIDUMP_TYPE ? ?DumpType, ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IN CONST PMINIDUMP_EXCEPTION_INFORMATION ? ?

ExceptionParam, OPTIONAL ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IN PVOID ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

UserStreamParam, OPTIONAL ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IN PVOID ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

CallbackParam OPTIONAL ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ); ?
??
#else ?
??
typedef BOOL (WINAPI * MINIDUMP_WRITE_DUMP)( ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IN HANDLE ? ? ? ? ? hProcess, ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IN DWORD ? ? ? ? ? ?ProcessId, ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IN HANDLE ? ? ? ? ? hFile, ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IN MINIDUMP_TYPE ? ?DumpType, ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IN CONST PMINIDUMP_EXCEPTION_INFORMATION ? ?

ExceptionParam, OPTIONAL ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IN PMINIDUMP_USER_STREAM_INFORMATION ? ? ? ?

UserStreamParam, OPTIONAL ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IN PMINIDUMP_CALLBACK_INFORMATION ? ? ? ? ??

CallbackParam OPTIONAL ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ); ?
#endif //#ifndef _DBGHELP_ ?
??
// Tool Help functions. ?
typedef HANDLE (WINAPI * CREATE_TOOL_HELP32_SNAPSHOT)(DWORD dwFlags, DWORD th32ProcessID); ?
typedef BOOL (WINAPI * MODULE32_FIRST)(HANDLE hSnapshot, LPMODULEENTRY32 lpme); ?
typedef BOOL (WINAPI * MODULE32_NEST)(HANDLE hSnapshot, LPMODULEENTRY32 lpme); ?
??
??extern void WINAPI Create_Dump(PEXCEPTION_POINTERS pException, BOOL File_Flag, BOOL?

Show_Flag); ?
??
extern HMODULE ?hDbgHelp; ?
extern MINIDUMP_WRITE_DUMP ?MiniDumpWriteDump_; ?
??
extern CREATE_TOOL_HELP32_SNAPSHOT ?CreateToolhelp32Snapshot_; ?
extern MODULE32_FIRST ? Module32First_; ?
extern MODULE32_NEST ? ?Module32Next_; ?

MiniDump.cpp
/*?
? ? Author: Vladimir Sedach.?
?
? ? Purpose: demo of Call Stack creation by our own means,?
? ? and with MiniDumpWriteDump() function of DbgHelp.dll.?
*/ ?
??
#include "StdAfx.h" ?
#include "MiniDump.h" ?
#include <Shlwapi.h> ?
??
#pragma comment(lib,"shlwapi.lib") ?
??
HMODULE hDbgHelp; ?
MINIDUMP_WRITE_DUMP MiniDumpWriteDump_; ?
??
CREATE_TOOL_HELP32_SNAPSHOT CreateToolhelp32Snapshot_; ?
MODULE32_FIRST ?Module32First_; ?
MODULE32_NEST ? Module32Next_; ?
??
#define DUMP_SIZE_MAX ? 8000 ? ?//max size of our dump ?
#define CALL_TRACE_MAX ?((DUMP_SIZE_MAX - 2000) / (MAX_PATH + 40)) ?//max number of traced?

calls ?
#define NL ? ? ? ? ? ? ?"\r\n" ?//new line ?
??
extern CString GetExePath(); ?
??
//**************************************************************************************** ?
BOOL WINAPI Get_Module_By_Ret_Addr(PBYTE Ret_Addr, PCHAR Module_Name, PBYTE & Module_Addr) ?
//**************************************************************************************** ?
// Find module by Ret_Addr (address in the module). ?
// Return Module_Name (full path) and Module_Addr (start address). ?
// Return TRUE if found. ?
{ ?
? ? MODULEENTRY32 ? M = {sizeof(M)}; ?
? ? HANDLE ?hSnapshot; ?
??
? ? Module_Name[0] = 0; ?
? ? ??
? ? if (CreateToolhelp32Snapshot_) ?
? ? { ?
? ? ? ? hSnapshot = CreateToolhelp32Snapshot_(TH32CS_SNAPMODULE, 0); ?
? ? ? ? ??
? ? ? ? if ((hSnapshot != INVALID_HANDLE_VALUE) && ?
? ? ? ? ? ? Module32First_(hSnapshot, &M)) ?
? ? ? ? { ?
? ? ? ? ? ? do ?
? ? ? ? ? ? { ?
? ? ? ? ? ? ? ? if (DWORD(Ret_Addr - M.modBaseAddr) < M.modBaseSize) ?
? ? ? ? ? ? ? ? { ?
? ? ? ? ? ? ? ? ? ? lstrcpyn(Module_Name, M.szExePath, MAX_PATH); ?
? ? ? ? ? ? ? ? ? ? Module_Addr = M.modBaseAddr; ?
? ? ? ? ? ? ? ? ? ? break; ?
? ? ? ? ? ? ? ? } ?
? ? ? ? ? ? } while (Module32Next_(hSnapshot, &M)); ?
? ? ? ? } ?
??
? ? ? ? CloseHandle(hSnapshot); ?
? ? } ?
??
? ? return !!Module_Name[0]; ?
} //Get_Module_By_Ret_Addr ?
??
//****************************************************************** ?
int WINAPI Get_Call_Stack(PEXCEPTION_POINTERS pException, PCHAR Str) ?
//****************************************************************** ?
// Fill Str with call stack info. ?
// pException can be either GetExceptionInformation() or NULL. ?
// If pException = NULL - get current call stack. ?
{ ?
? ? CHAR ? ?Module_Name[MAX_PATH]; ?
? ? PBYTE ? Module_Addr = 0; ?
? ? PBYTE ? Module_Addr_1; ?
? ? int ? ? Str_Len; ?
? ? ??
? ? typedef struct STACK ?
? ? { ?
? ? ? ? STACK * Ebp; ?
? ? ? ? PBYTE ? Ret_Addr; ?
? ? ? ? DWORD ? Param[0]; ?
? ? } STACK, * PSTACK; ?
??
? ? STACK ? Stack = {0, 0}; ?
? ? PSTACK ?Ebp; ?
??
? ? if (pException) ? ? //fake frame for exception address ?
? ? { ?
? ? ? ? Stack.Ebp = (PSTACK)pException->ContextRecord->Ebp; ?
? ? ? ? Stack.Ret_Addr = (PBYTE)pException->ExceptionRecord->ExceptionAddress; ?
? ? ? ? Ebp = &Stack; ?
? ? } ?
? ? else ?
? ? { ?
? ? ? ? Ebp = (PSTACK)&pException - 1; ?//frame addr of Get_Call_Stack() ?
??
? ? ? ? // Skip frame of Get_Call_Stack(). ?
? ? ? ? if (!IsBadReadPtr(Ebp, sizeof(PSTACK))) ?
? ? ? ? ? ? Ebp = Ebp->Ebp; ? ? ?//caller ebp ?
? ? } ?
??
? ? Str[0] = 0; ?
? ? Str_Len = 0; ?
??
? ? // Trace CALL_TRACE_MAX calls maximum - not to exceed DUMP_SIZE_MAX. ?
? ? // Break trace on wrong stack frame. ?
? ? for (int Ret_Addr_I = 0; ?
? ? ? ? (Ret_Addr_I < CALL_TRACE_MAX) && !IsBadReadPtr(Ebp, sizeof(PSTACK)) && !


IsBadCodePtr(FARPROC(Ebp->Ret_Addr)); ?
? ? ? ? Ret_Addr_I++, Ebp = Ebp->Ebp) ?
? ? { ?
? ? ? ? // If module with Ebp->Ret_Addr found. ?
? ? ? ? if (Get_Module_By_Ret_Addr(Ebp->Ret_Addr, Module_Name, Module_Addr_1)) ?
? ? ? ? { ?
? ? ? ? ? ? if (Module_Addr_1 != Module_Addr) ? //new module ?
? ? ? ? ? ? { ?
? ? ? ? ? ? ? ? // Save module's address and full path. ?
? ? ? ? ? ? ? ? Module_Addr = Module_Addr_1; ?
? ? ? ? ? ? ? ? Str_Len += wsprintf(Str + Str_Len, NL "%08X ?%s", Module_Addr,?

Module_Name); ?
? ? ? ? ? ? } ?
??
? ? ? ? ? ? // Save call offset. ?
? ? ? ? ? ? Str_Len += wsprintf(Str + Str_Len, ?
? ? ? ? ? ? ? ? NL " ?+%08X", Ebp->Ret_Addr - Module_Addr); ?
??
? ? ? ? ? ? // Save 5 params of the call. We don't know the real number of params. ?
? ? ? ? ? ? if (pException && !Ret_Addr_I) ?//fake frame for exception address ?
? ? ? ? ? ? ? ? Str_Len += wsprintf(Str + Str_Len, " ?Exception Offset"); ?
? ? ? ? ? ? else if (!IsBadReadPtr(Ebp, sizeof(PSTACK) + 5 * sizeof(DWORD))) ?
? ? ? ? ? ? { ?
? ? ? ? ? ? ? ? Str_Len += wsprintf(Str + Str_Len, " ?(%X, %X, %X, %X, %X)", ?
? ? ? ? ? ? ? ? ? ? Ebp->Param[0], Ebp->Param[1], Ebp->Param[2], Ebp->Param[3], Ebp->Param
[4]); ?
? ? ? ? ? ? } ?
? ? ? ? } ?
? ? ? ? else ?
? ? ? ? ? ? Str_Len += wsprintf(Str + Str_Len, NL "%08X", Ebp->Ret_Addr); ?
? ? } ?
??
? ? return Str_Len; ?
} //Get_Call_Stack ?
??
//*********************************** ?
int WINAPI Get_Version_Str(PCHAR Str) ?
//*********************************** ?
// Fill Str with Windows version. ?
{ ?
? ? OSVERSIONINFOEX V = {sizeof(OSVERSIONINFOEX)}; ?//EX for NT 5.0 and later ?
??
? ? if (!GetVersionEx((POSVERSIONINFO)&V)) ?
? ? { ?
? ? ? ? ZeroMemory(&V, sizeof(V)); ?
? ? ? ? V.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); ?
? ? ? ? GetVersionEx((POSVERSIONINFO)&V); ?
? ? } ?
??
? ? if (V.dwPlatformId != VER_PLATFORM_WIN32_NT) ?
? ? ? ? V.dwBuildNumber = LOWORD(V.dwBuildNumber); ?//for 9x HIWORD(dwBuildNumber) = 0x04xx?
??
? ? return wsprintf(Str, ?
? ? ? ? NL "Windows: ?%d.%d.%d, SP %d.%d, Product Type %d", //SP - service pack, Product?

Type - VER_NT_WORKSTATION,... ?
? ? ? ? V.dwMajorVersion, V.dwMinorVersion, V.dwBuildNumber, V.wServicePackMajor,?


V.wServicePackMinor/*, V.wProductType*/); ?
} //Get_Version_Str ?
??
//************************************************************* ?
PCHAR WINAPI Get_Exception_Info(PEXCEPTION_POINTERS pException) ?
//************************************************************* ?
// Allocate Str[DUMP_SIZE_MAX] and return Str with dump, if !pException - just return call?

stack in Str. ?
{ ?
? ? PCHAR ? ? ? Str; ?
? ? int ? ? ? ? Str_Len; ?
? ? int ? ? ? ? i; ?
? ? CHAR ? ? ? ?Module_Name[MAX_PATH]; ?
? ? PBYTE ? ? ? Module_Addr; ?
? ? HANDLE ? ? ?hFile; ?
? ? FILETIME ? ?Last_Write_Time; ?
? ? FILETIME ? ?Local_File_Time; ?
? ? SYSTEMTIME ?T; ?
? ? ??
? ? Str = new CHAR[DUMP_SIZE_MAX]; ?
??
? ? if (!Str) ?
? ? ? ? return NULL; ?
??
? ? Str_Len = 0; ?
? ? Str_Len += Get_Version_Str(Str + Str_Len); ?
??
? ? Str_Len += wsprintf(Str + Str_Len, NL "Process: ?"); ?
? ? GetModuleFileName(NULL, Str + Str_Len, MAX_PATH); ?
? ? Str_Len = lstrlen(Str); ?
??
? ? // If exception occurred. ?
? ? if (pException) ?
? ? { ?
? ? ? ? EXCEPTION_RECORD & ?E = *pException->ExceptionRecord; ?
? ? ? ? CONTEXT & ? ? ? ? ? C = *pException->ContextRecord; ?
??
? ? ? ? // If module with E.ExceptionAddress found - save its path and date. ?
? ? ? ? if (Get_Module_By_Ret_Addr((PBYTE)E.ExceptionAddress, Module_Name, Module_Addr)) ?
? ? ? ? { ?
? ? ? ? ? ? Str_Len += wsprintf(Str + Str_Len, ?
? ? ? ? ? ? ? ? NL "Module: ?%s", Module_Name); ?
??
? ? ? ? ? ? if ((hFile = CreateFile(Module_Name, GENERIC_READ, FILE_SHARE_READ, NULL,?
OPEN_EXISTING, ?
? ? ? ? ? ? ? ? FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE) ?
? ? ? ? ? ? { ?
? ? ? ? ? ? ? ? if (GetFileTime(hFile, NULL, NULL, &Last_Write_Time)) ?
? ? ? ? ? ? ? ? { ?
? ? ? ? ? ? ? ? ? ? FileTimeToLocalFileTime(&Last_Write_Time, &Local_File_Time); ?
? ? ? ? ? ? ? ? ? ? FileTimeToSystemTime(&Local_File_Time, &T); ?
??
? ? ? ? ? ? ? ? ? ? Str_Len += wsprintf(Str + Str_Len, ?
? ? ? ? ? ? ? ? ? ? ? ? NL "Date Modified: ?%02d/%02d/%d", ?
? ? ? ? ? ? ? ? ? ? ? ? T.wMonth, T.wDay, T.wYear); ?
? ? ? ? ? ? ? ? } ?
? ? ? ? ? ? ? ? CloseHandle(hFile); ?
? ? ? ? ? ? } ?
? ? ? ? } ?
? ? ? ? else ?
? ? ? ? { ?
? ? ? ? ? ? Str_Len += wsprintf(Str + Str_Len, ?
? ? ? ? ? ? ? ? NL "Exception Addr: ?%08X", E.ExceptionAddress); ?
? ? ? ? } ?
? ? ? ? ??
? ? ? ? Str_Len += wsprintf(Str + Str_Len, ?
? ? ? ? ? ? NL "Exception Code: ?%08X", E.ExceptionCode); ?
? ? ? ? ??
? ? ? ? if (E.ExceptionCode == EXCEPTION_ACCESS_VIOLATION) ?
? ? ? ? { ?
? ? ? ? ? ? // Access violation type - Write/Read. ?
? ? ? ? ? ? Str_Len += wsprintf(Str + Str_Len, ?
? ? ? ? ? ? ? ? NL "%s Address: ?%08X", ?
? ? ? ? ? ? ? ? (E.ExceptionInformation[0]) ? "Write" : "Read", E.ExceptionInformation[1]);??
? ? ? ? } ?
??
? ? ? ? // Save instruction that caused exception. ?
? ? ? ? Str_Len += wsprintf(Str + Str_Len, NL "Instruction: "); ?
? ? ? ? for (i = 0; i < 16; i++) ?
? ? ? ? ? ? Str_Len += wsprintf(Str + Str_Len, " %02X", PBYTE(E.ExceptionAddress)[i]); ?
??
? ? ? ? // Save registers at exception. ?
? ? ? ? Str_Len += wsprintf(Str + Str_Len, NL "Registers:"); ?
? ? ? ? Str_Len += wsprintf(Str + Str_Len, NL "EAX: %08X ?EBX: %08X ?ECX: %08X ?EDX: %08X",?
C.Eax, C.Ebx, C.Ecx, C.Edx); ?
? ? ? ? Str_Len += wsprintf(Str + Str_Len, NL "ESI: %08X ?EDI: %08X ?ESP: %08X ?EBP: %08X",?
C.Esi, C.Edi, C.Esp, C.Ebp); ?
? ? ? ? Str_Len += wsprintf(Str + Str_Len, NL "EIP: %08X ?EFlags: %08X", C.Eip, C.EFlags); ?
? ? } //if (pException) ?
? ? ??
? ? // Save call stack info. ?
? ? Str_Len += wsprintf(Str + Str_Len, NL "Call Stack:"); ?
? ? Get_Call_Stack(pException, Str + Str_Len); ?
??
? ? if (Str[0] == NL[0]) ?
? ? ? ? lstrcpy(Str, Str + sizeof(NL) - 1); ?
??
? ? return Str; ?
} //Get_Exception_Info ?
??
//************************************************************************************* ?
void WINAPI Create_Dump(PEXCEPTION_POINTERS pException, BOOL File_Flag, BOOL Show_Flag) ?
//************************************************************************************* ?
// Create dump. ??
// pException can be either GetExceptionInformation() or NULL. ?
// If File_Flag = TRUE - write dump files (.dmz and .dmp) with the name of the current?

process. ?
// If Show_Flag = TRUE - show message with Get_Exception_Info() dump. ?
{ ?
? ? HANDLE ?hDump_File; ?
? ? PCHAR ? Str; ?
? ? DWORD ? Bytes; ?
? ? DWORD ? nLen = 0; ?
??
? ? CString strDir,strTXTFile,strDMPFile; ?
? ? CString strDate,strTotal; ?
? ? CTime ? tm = CTime::GetCurrentTime(); ?
? ? ??
? ? strDir.Format(_T("%s\\Log"),GetExePath()); ?
? ? strTXTFile.Format(_T("%s\\Log\\%04d-%02d-%02d %02d%02d%02d.txt"),GetExePath

(),tm.GetYear(),tm.GetMonth(), ?
? ? ? ? tm.GetDay(),tm.GetHour(),tm.GetMinute(),tm.GetSecond()); ?
? ? strDMPFile.Format(_T("%s\\Log\\%04d-%02d-%02d %02d%02d%02d.dmp"),GetExePath

(),tm.GetYear(),tm.GetMonth(), ?
? ? ? ? tm.GetDay(),tm.GetHour(),tm.GetMinute(),tm.GetSecond()); ?
??
? ? if(!PathFileExists(strDir)) ?
? ? ? ? CreateDirectory(strDir,NULL); ?
??
? ? Str = Get_Exception_Info(pException); ?
??
? ? //if (Show_Flag && Str) ?
? ? // ?MessageBox(NULL, Str, "MiniDump", MB_ICONHAND | MB_OK); ?
??
? ? if (File_Flag) ?
? ? { ?
? ? ? ? if (Str) ?
? ? ? ? { ?
? ? ? ? ? ? hDump_File = CreateFile(strTXTFile, ?
? ? ? ? ? ? ? ? GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); ?
? ? ? ? ? ? ??
? ? ? ? ? ? nLen = lstrlen(Str); ?
? ? ? ? ? ? Str[nLen] = '\0'; ?
??
? ? ? ? ? ? WriteFile(hDump_File, Str, lstrlen(Str) + 1, &Bytes, NULL); ?
??
? ? ? ? ? ? CloseHandle(hDump_File); ?
? ? ? ? } ?
??
? ? ? ? // If MiniDumpWriteDump() of DbgHelp.dll available. ?
? ? ? ? if (MiniDumpWriteDump_) ?
? ? ? ? { ?
? ? ? ? ? ? MINIDUMP_EXCEPTION_INFORMATION ?M; ?
??
? ? ? ? ? ? M.ThreadId = GetCurrentThreadId(); ?
? ? ? ? ? ? M.ExceptionPointers = pException; ?
? ? ? ? ? ? M.ClientPointers = 0; ?
??
? ? ? ? ? ? hDump_File = CreateFile(strDMPFile, ?
? ? ? ? ? ? ? ? GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); ?
??
? ? ? ? ? ? MiniDumpWriteDump_(GetCurrentProcess(), GetCurrentProcessId(), hDump_File, ?
? ? ? ? ? ? ? ? MiniDumpNormal, (pException) ? &M : NULL, NULL, NULL); ?
??
? ? ? ? ? ? CloseHandle(hDump_File); ?
? ? ? ? } ?
? ? } //if (File_Flag) ?
??
? ? delete Str; ?
} //Create_Dump ?

具體參考方法如下:
1、在CXXDlg::OnInitDialog()中添加這樣一段:

SetUnhandledExceptionFilter(CrashReportEx); ?
HMODULE hKernel32; ?
??
// Try to get MiniDumpWriteDump() address. ?
hDbgHelp = LoadLibrary("DBGHELP.DLL"); ?
MiniDumpWriteDump_ = (MINIDUMP_WRITE_DUMP)GetProcAddress(hDbgHelp, "MiniDumpWriteDump"); ?
// ?d("hDbgHelp=%X, MiniDumpWriteDump_=%X", hDbgHelp, MiniDumpWriteDump_); ?
??
// Try to get Tool Help library functions. ?
hKernel32 = GetModuleHandle("KERNEL32"); ?
CreateToolhelp32Snapshot_ = (CREATE_TOOL_HELP32_SNAPSHOT)GetProcAddress(hKernel32,?

"CreateToolhelp32Snapshot"); ?
Module32First_ = (MODULE32_FIRST)GetProcAddress(hKernel32, "Module32First"); ?
Module32Next_ = (MODULE32_NEST)GetProcAddress(hKernel32, "Module32Next"); ?
測試代碼如下:

class CTestDlg : public CDialog ?
{ ?
// Construction ?
public: ?
? ? CTestDlg(CWnd* pParent = NULL); // standard constructor ?
??
? ? void Fun1(char *pszBuffer); ?
? ? void Fun2(char *pszBuffer); ?
? ? void Fun3(char *pszBuffer); ?
}; ?


void CTestDlg::Fun1(char *pszBuffer) ?
{ ?
? ? Fun2(pszBuffer); ?
} ?
??
void CTestDlg::Fun2(char *pszBuffer) ?
{ ?
? ? Fun3(pszBuffer); ?
} ?
??
void CTestDlg::Fun3(char *pszBuffer) ?
{ ?
? ? pszBuffer[1] = 0x00; ?
} ?

我們在雙擊確定按鈕時的響應代碼如下:

void CTestDlg::OnOK() ??
{ ?
? ? // TODO: Add extra validation here ?
? ? Fun1(NULL); ?
} ?

2、設置VC編譯選項,勾選生成MAP和Debug Info:


3、將編譯生成的Release目錄中的pdb、map文件保存起來,以后調試會用到:


4、運行程序,單擊確定按鈕出現異常后自動重啟,并創建一個Log文件夾,里面生成dump文件:

5、我們打開WinDbg,設置一下pdb路徑(File \ Symbol File Path):

6、用WiinDbg打開dump文件(File \ Open Crash Dump)

7、輸入命令!analyze -v,等待幾秒后會打印出錯誤信息,函數調用棧如下圖:

OK ,這樣我們就能在發布版本的程序中,準確的定位到哪個函數出了問題,所以發布程序時,一定要記

得生成pdb、map文件,不然客戶運行出錯的話,你不死也殘!

測試工程下載地址:

http://download.csdn.NET/source/3575167
========

總結

以上是生活随笔為你收集整理的Windbg dump分析 学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产真实乱对白精彩久久 | 性欧美熟妇videofreesex | 国产综合久久久久鬼色 | 国产精品永久免费视频 | 国产av无码专区亚洲a∨毛片 | 狠狠躁日日躁夜夜躁2020 | 永久免费精品精品永久-夜色 | 国产在线无码精品电影网 | а√天堂www在线天堂小说 | 综合激情五月综合激情五月激情1 | 欧美猛少妇色xxxxx | 国产精品亚洲一区二区三区喷水 | 国内精品九九久久久精品 | 一本加勒比波多野结衣 | 成人女人看片免费视频放人 | 亚洲色成人中文字幕网站 | 乱人伦人妻中文字幕无码久久网 | 亚洲娇小与黑人巨大交 | 国产一区二区三区日韩精品 | 日本大乳高潮视频在线观看 | 国精产品一品二品国精品69xx | 永久免费精品精品永久-夜色 | 欧美日韩一区二区免费视频 | 国产成人av免费观看 | 嫩b人妻精品一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 丁香啪啪综合成人亚洲 | 久久久久久久久888 | 亚洲精品一区二区三区在线观看 | 免费人成网站视频在线观看 | 色婷婷香蕉在线一区二区 | 久久午夜夜伦鲁鲁片无码免费 | 无码人妻丰满熟妇区毛片18 | 55夜色66夜色国产精品视频 | yw尤物av无码国产在线观看 | 十八禁真人啪啪免费网站 | av无码久久久久不卡免费网站 | 国产成人精品视频ⅴa片软件竹菊 | 国产精品久久久久9999小说 | 熟女少妇在线视频播放 | 精品国产国产综合精品 | 在线成人www免费观看视频 | 日日摸日日碰夜夜爽av | 牲交欧美兽交欧美 | 亚洲爆乳大丰满无码专区 | 日本一本二本三区免费 | 久久久婷婷五月亚洲97号色 | 国内精品人妻无码久久久影院 | 最近免费中文字幕中文高清百度 | 内射老妇bbwx0c0ck | 99久久精品无码一区二区毛片 | 377p欧洲日本亚洲大胆 | 乌克兰少妇性做爰 | 欧美喷潮久久久xxxxx | 无码精品人妻一区二区三区av | 亚洲 高清 成人 动漫 | 无码人妻精品一区二区三区下载 | 人人澡人人透人人爽 | 黄网在线观看免费网站 | 亚洲色大成网站www国产 | 天堂а√在线中文在线 | 国产在线精品一区二区高清不卡 | 色一情一乱一伦 | 国产人妖乱国产精品人妖 | 色婷婷综合激情综在线播放 | 亚洲 日韩 欧美 成人 在线观看 | 欧美一区二区三区视频在线观看 | 国产精品久久久一区二区三区 | 无码人妻久久一区二区三区不卡 | 亚洲成a人片在线观看无码 | 无码人妻丰满熟妇区毛片18 | 精品亚洲韩国一区二区三区 | 久久精品99久久香蕉国产色戒 | 十八禁视频网站在线观看 | 亚洲精品久久久久中文第一幕 | 欧美三级a做爰在线观看 | 国产97在线 | 亚洲 | 成人无码视频免费播放 | 久久综合色之久久综合 | 欧美熟妇另类久久久久久多毛 | 亚洲中文字幕va福利 | 欧美丰满熟妇xxxx性ppx人交 | 天堂亚洲2017在线观看 | 成人av无码一区二区三区 | 激情综合激情五月俺也去 | 成人免费视频视频在线观看 免费 | 激情内射亚州一区二区三区爱妻 | 99久久久无码国产精品免费 | 日本一卡2卡3卡四卡精品网站 | 亚洲精品一区二区三区大桥未久 | 国产美女极度色诱视频www | 日本大香伊一区二区三区 | 亚洲欧洲日本无在线码 | 国产成人人人97超碰超爽8 | 国产午夜视频在线观看 | 亚洲精品鲁一鲁一区二区三区 | 欧洲熟妇色 欧美 | 国产黄在线观看免费观看不卡 | 大乳丰满人妻中文字幕日本 | 中文字幕乱码亚洲无线三区 | 精品无码国产一区二区三区av | 亚洲经典千人经典日产 | 麻豆av传媒蜜桃天美传媒 | 久久精品一区二区三区四区 | 人人澡人人妻人人爽人人蜜桃 | 免费无码一区二区三区蜜桃大 | 男人扒开女人内裤强吻桶进去 | 国产成人无码av一区二区 | 日韩人妻无码一区二区三区久久99 | 99久久久无码国产aaa精品 | 天天综合网天天综合色 | 国产艳妇av在线观看果冻传媒 | 欧美高清在线精品一区 | 乱人伦人妻中文字幕无码久久网 | 强伦人妻一区二区三区视频18 | 精品国产av色一区二区深夜久久 | 免费无码一区二区三区蜜桃大 | 国产内射爽爽大片视频社区在线 | 日本一本二本三区免费 | 国产精品久久久久久无码 | 日韩精品成人一区二区三区 | 人妻少妇精品无码专区二区 | 国产成人精品一区二区在线小狼 | 俺去俺来也在线www色官网 | 久久99精品久久久久婷婷 | 成人性做爰aaa片免费看不忠 | 人妻无码久久精品人妻 | 久久久亚洲欧洲日产国码αv | 曰本女人与公拘交酡免费视频 | 亚洲精品无码国产 | 性生交大片免费看女人按摩摩 | 久久精品国产99久久6动漫 | 欧美成人高清在线播放 | 在线观看国产一区二区三区 | 亚洲自偷自偷在线制服 | 亚洲国产欧美在线成人 | 亚洲国产午夜精品理论片 | 性欧美牲交xxxxx视频 | 午夜福利试看120秒体验区 | 色噜噜亚洲男人的天堂 | 色爱情人网站 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲欧美日韩国产精品一区二区 | 欧美精品一区二区精品久久 | 国产精品沙发午睡系列 | 性欧美熟妇videofreesex | 亚洲综合无码一区二区三区 | 国产 浪潮av性色四虎 | 国产情侣作爱视频免费观看 | 国产精品久久久久7777 | 亚洲中文无码av永久不收费 | 久久国产劲爆∧v内射 | 性啪啪chinese东北女人 | 亚洲精品国产a久久久久久 | 无码中文字幕色专区 | 欧美日韩视频无码一区二区三 | 内射爽无广熟女亚洲 | 精品国产一区av天美传媒 | 熟妇人妻无码xxx视频 | 欧美人与禽zoz0性伦交 | 精品国产福利一区二区 | 影音先锋中文字幕无码 | 精品国产青草久久久久福利 | 国产亚洲精品久久久ai换 | 天天拍夜夜添久久精品大 | 永久免费观看美女裸体的网站 | 狠狠色噜噜狠狠狠狠7777米奇 | 国语自产偷拍精品视频偷 | 国产婷婷色一区二区三区在线 | 久久五月精品中文字幕 | 国产香蕉97碰碰久久人人 | 狠狠cao日日穞夜夜穞av | 成人免费无码大片a毛片 | 久久久国产精品无码免费专区 | 久久午夜无码鲁丝片午夜精品 | 中文无码精品a∨在线观看不卡 | 97精品国产97久久久久久免费 | 在线观看国产午夜福利片 | 欧美性猛交内射兽交老熟妇 | 精品欧洲av无码一区二区三区 | 爱做久久久久久 | 色婷婷综合中文久久一本 | 欧美日本免费一区二区三区 | 国产在热线精品视频 | 国产欧美熟妇另类久久久 | 国产免费久久久久久无码 | 亚洲一区二区观看播放 | 亚洲中文字幕久久无码 | 久久精品国产一区二区三区肥胖 | 日产精品99久久久久久 | 亚洲精品久久久久中文第一幕 | 久热国产vs视频在线观看 | 天堂а√在线中文在线 | а√天堂www在线天堂小说 | 久久综合给久久狠狠97色 | 久久99精品国产麻豆 | 亚洲精品成人av在线 | 久久五月精品中文字幕 | 亚洲色欲久久久综合网东京热 | 精品无码av一区二区三区 | 国产成人无码av一区二区 | 免费无码的av片在线观看 | 亚洲男人av天堂午夜在 | 国产精品人人爽人人做我的可爱 | 高潮喷水的毛片 | yw尤物av无码国产在线观看 | 午夜精品一区二区三区的区别 | 精品 日韩 国产 欧美 视频 | av无码久久久久不卡免费网站 | 巨爆乳无码视频在线观看 | 精品国产国产综合精品 | 国语精品一区二区三区 | 中文字幕无码av激情不卡 | 1000部啪啪未满十八勿入下载 | 成年美女黄网站色大免费全看 | 国产国语老龄妇女a片 | 一二三四社区在线中文视频 | 黑人巨大精品欧美黑寡妇 | 麻豆国产丝袜白领秘书在线观看 | 国产熟女一区二区三区四区五区 | 国语自产偷拍精品视频偷 | 波多野结衣乳巨码无在线观看 | 国产精品美女久久久网av | 人妻少妇被猛烈进入中文字幕 | 精品人人妻人人澡人人爽人人 | 欧美丰满老熟妇xxxxx性 | 国内精品九九久久久精品 | 国色天香社区在线视频 | 国产精品美女久久久久av爽李琼 | 一个人看的视频www在线 | 日韩精品一区二区av在线 | 四虎影视成人永久免费观看视频 | 无码av免费一区二区三区试看 | 牲欲强的熟妇农村老妇女视频 | 色情久久久av熟女人妻网站 | 国产va免费精品观看 | 蜜臀aⅴ国产精品久久久国产老师 | 日日干夜夜干 | 欧美xxxx黑人又粗又长 | 香港三级日本三级妇三级 | 亚洲欧美日韩综合久久久 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 精品少妇爆乳无码av无码专区 | 久久亚洲中文字幕无码 | 少妇人妻偷人精品无码视频 | 亚洲啪av永久无码精品放毛片 | 两性色午夜免费视频 | 亚洲天堂2017无码中文 | 久久午夜无码鲁丝片 | 午夜福利电影 | 久久伊人色av天堂九九小黄鸭 | 精品乱码久久久久久久 | 在线观看国产一区二区三区 | 沈阳熟女露脸对白视频 | 丰满护士巨好爽好大乳 | 国产一区二区三区影院 | 九九在线中文字幕无码 | 婷婷五月综合激情中文字幕 | 午夜无码区在线观看 | 亚洲一区二区三区国产精华液 | 国产电影无码午夜在线播放 | 桃花色综合影院 | 免费国产黄网站在线观看 | 精品久久久无码人妻字幂 | 小sao货水好多真紧h无码视频 | 成人一在线视频日韩国产 | 亚洲国产精品一区二区美利坚 | 日韩无码专区 | av无码电影一区二区三区 | 图片小说视频一区二区 | 欧美日本精品一区二区三区 | 亚欧洲精品在线视频免费观看 | 亚洲欧美国产精品久久 | 俄罗斯老熟妇色xxxx | 奇米影视888欧美在线观看 | 国内少妇偷人精品视频 | 18无码粉嫩小泬无套在线观看 | 在线亚洲高清揄拍自拍一品区 | 久久午夜无码鲁丝片午夜精品 | 日韩视频 中文字幕 视频一区 | 欧美精品无码一区二区三区 | 蜜臀aⅴ国产精品久久久国产老师 | 2019午夜福利不卡片在线 | 国产超级va在线观看视频 | 亚洲日韩av一区二区三区四区 | 无码帝国www无码专区色综合 | 欧美日韩久久久精品a片 | 人妻aⅴ无码一区二区三区 | 乌克兰少妇性做爰 | 亚洲成av人片在线观看无码不卡 | 亚洲中文字幕乱码av波多ji | 亚洲熟妇自偷自拍另类 | 午夜福利不卡在线视频 | 99精品无人区乱码1区2区3区 | 欧美zoozzooz性欧美 | 国产成人亚洲综合无码 | 国产精品手机免费 | 欧美日本精品一区二区三区 | 国产绳艺sm调教室论坛 | 国产极品美女高潮无套在线观看 | 久久亚洲日韩精品一区二区三区 | 欧美性黑人极品hd | 全球成人中文在线 | 激情亚洲一区国产精品 | 在线观看国产一区二区三区 | 国产精品久久久久无码av色戒 | 国产麻豆精品精东影业av网站 | 亚洲精品国产品国语在线观看 | 亚洲综合无码久久精品综合 | 亚洲中文字幕久久无码 | 精品人妻中文字幕有码在线 | 97色伦图片97综合影院 | 亚洲毛片av日韩av无码 | 国产va免费精品观看 | 日本一卡2卡3卡四卡精品网站 | 人人妻人人澡人人爽人人精品浪潮 | 东京热一精品无码av | 亚洲国产精品毛片av不卡在线 | 亚洲精品午夜无码电影网 | 亚洲精品午夜国产va久久成人 | 亚洲另类伦春色综合小说 | 六十路熟妇乱子伦 | 欧美黑人性暴力猛交喷水 | 国产精品久久久av久久久 | 乱人伦中文视频在线观看 | 无码国产激情在线观看 | 久久久精品456亚洲影院 | 无码av免费一区二区三区试看 | 无码精品人妻一区二区三区av | 日日橹狠狠爱欧美视频 | 爽爽影院免费观看 | 又大又黄又粗又爽的免费视频 | 精品国产aⅴ无码一区二区 | 日日橹狠狠爱欧美视频 | 在线亚洲高清揄拍自拍一品区 | 久久国产自偷自偷免费一区调 | 无码精品人妻一区二区三区av | 欧美放荡的少妇 | 欧洲美熟女乱又伦 | 精品久久久久久亚洲精品 | 亚洲色大成网站www国产 | 欧美激情综合亚洲一二区 | 国产激情精品一区二区三区 | 国产口爆吞精在线视频 | 红桃av一区二区三区在线无码av | 又粗又大又硬又长又爽 | 亚洲成a人片在线观看日本 | 好男人社区资源 | 国内精品久久毛片一区二区 | 三级4级全黄60分钟 | 精品无人国产偷自产在线 | aⅴ亚洲 日韩 色 图网站 播放 | 国产女主播喷水视频在线观看 | 好男人社区资源 | 国产无套粉嫩白浆在线 | 在教室伦流澡到高潮hnp视频 | 最新版天堂资源中文官网 | 日韩精品无码一区二区中文字幕 | 无码人妻av免费一区二区三区 | 99久久久无码国产aaa精品 | 狂野欧美激情性xxxx | 国产乱人伦av在线无码 | 一个人免费观看的www视频 | 免费观看激色视频网站 | 兔费看少妇性l交大片免费 | 久久精品无码一区二区三区 | 午夜精品一区二区三区在线观看 | 日日橹狠狠爱欧美视频 | 国产亚洲精品久久久久久 | 色诱久久久久综合网ywww | 欧美 日韩 亚洲 在线 | 草草网站影院白丝内射 | 77777熟女视频在线观看 а天堂中文在线官网 | 亚洲国产成人av在线观看 | 99久久精品国产一区二区蜜芽 | 精品无码一区二区三区的天堂 | 蜜臀av无码人妻精品 | 理论片87福利理论电影 | 伊人久久大香线蕉av一区二区 | 性欧美牲交在线视频 | 天堂一区人妻无码 | 国产精品自产拍在线观看 | 男人和女人高潮免费网站 | 色综合视频一区二区三区 | 精品国产精品久久一区免费式 | 精品国产av色一区二区深夜久久 | 日本一区二区三区免费高清 | 国内精品一区二区三区不卡 | 一本色道久久综合亚洲精品不卡 | 蜜臀aⅴ国产精品久久久国产老师 | 伦伦影院午夜理论片 | 熟妇激情内射com | 老熟女乱子伦 | 欧美精品无码一区二区三区 | 亲嘴扒胸摸屁股激烈网站 | 野狼第一精品社区 | 老熟妇仑乱视频一区二区 | 久久精品人妻少妇一区二区三区 | 久久国产劲爆∧v内射 | 国产欧美熟妇另类久久久 | 日欧一片内射va在线影院 | 大肉大捧一进一出视频出来呀 | 亚洲精品国产精品乱码视色 | 国产精品免费大片 | 成在人线av无码免费 | 内射老妇bbwx0c0ck | 精品久久8x国产免费观看 | 福利一区二区三区视频在线观看 | 亚洲欧洲无卡二区视頻 | 国产熟妇另类久久久久 | 欧美日韩综合一区二区三区 | 亚洲欧美国产精品专区久久 | 亚洲无人区午夜福利码高清完整版 | 四十如虎的丰满熟妇啪啪 | 国产网红无码精品视频 | 国产精品多人p群无码 | 久久人人爽人人爽人人片ⅴ | 欧美怡红院免费全部视频 | 亚洲精品久久久久久一区二区 | 亚洲无人区午夜福利码高清完整版 | 免费视频欧美无人区码 | 国产性生交xxxxx无码 | 精品国精品国产自在久国产87 | 无码人妻少妇伦在线电影 | 国产精品怡红院永久免费 | 日韩亚洲欧美精品综合 | 国内少妇偷人精品视频 | 国产av无码专区亚洲awww | 色老头在线一区二区三区 | 欧美 丝袜 自拍 制服 另类 | 久久99精品国产麻豆蜜芽 | 欧美一区二区三区视频在线观看 | 麻豆md0077饥渴少妇 | 色婷婷久久一区二区三区麻豆 | 一本色道久久综合狠狠躁 | 99久久精品国产一区二区蜜芽 | 日韩人妻系列无码专区 | 日韩精品一区二区av在线 | 久久久久久久女国产乱让韩 | 97夜夜澡人人双人人人喊 | 波多野结衣 黑人 | 夜夜躁日日躁狠狠久久av | 中文字幕无码免费久久99 | 丝袜美腿亚洲一区二区 | 午夜理论片yy44880影院 | 午夜肉伦伦影院 | 一二三四在线观看免费视频 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 欧美精品免费观看二区 | 成 人影片 免费观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 丰满岳乱妇在线观看中字无码 | 无码人妻黑人中文字幕 | 国产无遮挡又黄又爽免费视频 | 女人被男人爽到呻吟的视频 | 精品 日韩 国产 欧美 视频 | 亚洲最大成人网站 | 99久久精品午夜一区二区 | 国产精品美女久久久网av | 精品国产青草久久久久福利 | 色五月五月丁香亚洲综合网 | 精品乱子伦一区二区三区 | 国产高清av在线播放 | 少妇一晚三次一区二区三区 | 中文字幕乱码人妻二区三区 | 亚洲精品一区三区三区在线观看 | 未满小14洗澡无码视频网站 | 国产精品a成v人在线播放 | 乱码午夜-极国产极内射 | 天干天干啦夜天干天2017 | 日本一卡2卡3卡四卡精品网站 | 天天摸天天透天天添 | 欧美阿v高清资源不卡在线播放 | 人妻互换免费中文字幕 | 久久综合狠狠综合久久综合88 | 久久综合网欧美色妞网 | 中文字幕无码人妻少妇免费 | 少妇性荡欲午夜性开放视频剧场 | 国产午夜视频在线观看 | 伊人久久大香线蕉av一区二区 | 国产精品高潮呻吟av久久4虎 | 国产精品久久久午夜夜伦鲁鲁 | 日韩在线不卡免费视频一区 | 国产麻豆精品一区二区三区v视界 | 精品国产aⅴ无码一区二区 | 国产9 9在线 | 中文 | 极品嫩模高潮叫床 | 亚洲一区二区三区偷拍女厕 | 中文字幕中文有码在线 | 久久无码专区国产精品s | 国精品人妻无码一区二区三区蜜柚 | 99久久婷婷国产综合精品青草免费 | 综合人妻久久一区二区精品 | 99er热精品视频 | 色综合视频一区二区三区 | 狠狠色丁香久久婷婷综合五月 | 日本免费一区二区三区最新 | 国产亚洲精品久久久ai换 | 色狠狠av一区二区三区 | 欧美国产亚洲日韩在线二区 | 疯狂三人交性欧美 | 精品久久久久久人妻无码中文字幕 | 久久亚洲中文字幕精品一区 | 1000部夫妻午夜免费 | 日本又色又爽又黄的a片18禁 | 欧美性黑人极品hd | 鲁鲁鲁爽爽爽在线视频观看 | 四十如虎的丰满熟妇啪啪 | 东北女人啪啪对白 | 男女猛烈xx00免费视频试看 | 国产免费久久久久久无码 | 六十路熟妇乱子伦 | 亚洲精品久久久久久一区二区 | 久久久无码中文字幕久... | 精品久久久久久人妻无码中文字幕 | 在线精品国产一区二区三区 | 国色天香社区在线视频 | 熟女体下毛毛黑森林 | 国产精品无码成人午夜电影 | 国产成人人人97超碰超爽8 | 中文字幕人成乱码熟女app | 3d动漫精品啪啪一区二区中 | 亚洲 日韩 欧美 成人 在线观看 | 日韩欧美群交p片內射中文 | 亚洲色成人中文字幕网站 | 国产午夜视频在线观看 | 国产亚洲人成在线播放 | 国产精品理论片在线观看 | 成人欧美一区二区三区黑人免费 | 青春草在线视频免费观看 | 久久五月精品中文字幕 | 午夜福利试看120秒体验区 | 精品成在人线av无码免费看 | 无码一区二区三区在线 | 成人av无码一区二区三区 | 亚洲小说春色综合另类 | 欧美 亚洲 国产 另类 | а天堂中文在线官网 | 人妻少妇精品视频专区 | 4hu四虎永久在线观看 | 人妻中文无码久热丝袜 | 精品少妇爆乳无码av无码专区 | 综合激情五月综合激情五月激情1 | 无码人妻黑人中文字幕 | 成人综合网亚洲伊人 | 久热国产vs视频在线观看 | 国产一精品一av一免费 | 亚洲爆乳无码专区 | 丰满人妻精品国产99aⅴ | 中文字幕av无码一区二区三区电影 | 正在播放东北夫妻内射 | 亚洲欧洲日本综合aⅴ在线 | 丰满人妻一区二区三区免费视频 | 色五月丁香五月综合五月 | 国产精品久久久久9999小说 | 免费视频欧美无人区码 | 人妻体内射精一区二区三四 | 一本色道久久综合狠狠躁 | 国产在线一区二区三区四区五区 | 无码国产色欲xxxxx视频 | 性欧美疯狂xxxxbbbb | 欧洲美熟女乱又伦 | 波多野结衣av在线观看 | 久久国产精品精品国产色婷婷 | 人人妻人人澡人人爽欧美一区九九 | 亚洲一区二区观看播放 | 午夜精品一区二区三区的区别 | 亚洲午夜久久久影院 | 免费乱码人妻系列无码专区 | 97人妻精品一区二区三区 | 中文字幕无码av波多野吉衣 | 99久久无码一区人妻 | 欧美丰满熟妇xxxx | 国产亚洲美女精品久久久2020 | 中文亚洲成a人片在线观看 | 成人影院yy111111在线观看 | 亚洲成在人网站无码天堂 | 久久综合给久久狠狠97色 | 国产精品无码成人午夜电影 | 伊在人天堂亚洲香蕉精品区 | 精品国精品国产自在久国产87 | 国产成人久久精品流白浆 | 日本大香伊一区二区三区 | 亚洲熟悉妇女xxx妇女av | 激情人妻另类人妻伦 | 久久久中文久久久无码 | 最新版天堂资源中文官网 | 装睡被陌生人摸出水好爽 | 国产卡一卡二卡三 | 欧美精品无码一区二区三区 | 国产人妻大战黑人第1集 | av无码久久久久不卡免费网站 | 久久久精品成人免费观看 | 人妻天天爽夜夜爽一区二区 | 成人无码精品1区2区3区免费看 | 东京热男人av天堂 | 久久精品国产99久久6动漫 | 精品熟女少妇av免费观看 | 国产偷国产偷精品高清尤物 | 熟妇女人妻丰满少妇中文字幕 | 精品国产一区二区三区四区 | 亚洲精品一区国产 | 亚洲成a人片在线观看日本 | 伊在人天堂亚洲香蕉精品区 | а天堂中文在线官网 | 亚洲中文字幕久久无码 | 久久久婷婷五月亚洲97号色 | 精品国产青草久久久久福利 | 人人爽人人爽人人片av亚洲 | 67194成是人免费无码 | 国产明星裸体无码xxxx视频 | √天堂资源地址中文在线 | 亚洲国产精华液网站w | 极品嫩模高潮叫床 | 婷婷五月综合激情中文字幕 | 国产成人综合美国十次 | 日本乱人伦片中文三区 | 亚洲色偷偷偷综合网 | 国产精品无码一区二区三区不卡 | 国产香蕉尹人综合在线观看 | 香港三级日本三级妇三级 | 成人片黄网站色大片免费观看 | 蜜桃臀无码内射一区二区三区 | 亚洲精品综合五月久久小说 | 日本www一道久久久免费榴莲 | 一本精品99久久精品77 | 国产成人av免费观看 | 男人和女人高潮免费网站 | 国产一区二区三区日韩精品 | 中文字幕中文有码在线 | 牲欲强的熟妇农村老妇女视频 | 亚洲午夜久久久影院 | 久久综合色之久久综合 | 一个人免费观看的www视频 | 亚洲 另类 在线 欧美 制服 | 男人和女人高潮免费网站 | 丰满人妻翻云覆雨呻吟视频 | 国产成人综合在线女婷五月99播放 | 久久人人爽人人爽人人片av高清 | 一本色道久久综合亚洲精品不卡 | 伊人久久大香线蕉亚洲 | 99久久婷婷国产综合精品青草免费 | 在线亚洲高清揄拍自拍一品区 | 国产精品多人p群无码 | 亚洲中文字幕在线无码一区二区 | 四十如虎的丰满熟妇啪啪 | 国精品人妻无码一区二区三区蜜柚 | 欧美激情内射喷水高潮 | 丰满少妇高潮惨叫视频 | 亚洲午夜福利在线观看 | 丰满肥臀大屁股熟妇激情视频 | 四虎国产精品免费久久 | 国产疯狂伦交大片 | 国产 浪潮av性色四虎 | 丰满肥臀大屁股熟妇激情视频 | 国产莉萝无码av在线播放 | 欧美 丝袜 自拍 制服 另类 | 国产美女极度色诱视频www | 性欧美牲交xxxxx视频 | 扒开双腿疯狂进出爽爽爽视频 | 一本久久a久久精品vr综合 | 久久国产精品_国产精品 | 久青草影院在线观看国产 | 亚洲狠狠婷婷综合久久 | 99精品视频在线观看免费 | 成人片黄网站色大片免费观看 | 人妻体内射精一区二区三四 | 99久久99久久免费精品蜜桃 | 波多野42部无码喷潮在线 | 无码人妻精品一区二区三区下载 | 少妇性荡欲午夜性开放视频剧场 | 鲁鲁鲁爽爽爽在线视频观看 | a片在线免费观看 | 国产超碰人人爽人人做人人添 | 97无码免费人妻超级碰碰夜夜 | 亚洲自偷精品视频自拍 | 亚洲日韩精品欧美一区二区 | 狠狠综合久久久久综合网 | 最近的中文字幕在线看视频 | 无码乱肉视频免费大全合集 | 亚洲熟熟妇xxxx | 日韩人妻无码中文字幕视频 | 日本精品少妇一区二区三区 | 麻花豆传媒剧国产免费mv在线 | 三上悠亚人妻中文字幕在线 | 中文字幕无码热在线视频 | 人人妻人人澡人人爽精品欧美 | 无码国产激情在线观看 | 久久精品人人做人人综合试看 | 国产在线无码精品电影网 | 国产一区二区不卡老阿姨 | 高清国产亚洲精品自在久久 | 成熟女人特级毛片www免费 | 四十如虎的丰满熟妇啪啪 | 无码人妻精品一区二区三区不卡 | 国产一区二区三区日韩精品 | 国产精品99爱免费视频 | 亚洲熟妇色xxxxx亚洲 | 强伦人妻一区二区三区视频18 | 国产成人无码av在线影院 | 国产 精品 自在自线 | 中文精品久久久久人妻不卡 | 国产免费观看黄av片 | 国产绳艺sm调教室论坛 | 色欲久久久天天天综合网精品 | 麻豆国产人妻欲求不满谁演的 | 中文字幕人妻无码一区二区三区 | 国产性生交xxxxx无码 | 国产精品无码一区二区桃花视频 | 亚洲成a人片在线观看日本 | 国产乱人偷精品人妻a片 | 亚洲人成人无码网www国产 | 国产成人精品久久亚洲高清不卡 | 国产在线精品一区二区三区直播 | 无码国产乱人伦偷精品视频 | 久久精品中文字幕一区 | 老太婆性杂交欧美肥老太 | 亚洲日韩av一区二区三区中文 | 黑人大群体交免费视频 | 亚洲成a人片在线观看日本 | 国产精品久久久久久久影院 | 欧美老熟妇乱xxxxx | 中文字幕人妻无码一夲道 | 精品国产麻豆免费人成网站 | 天天av天天av天天透 | 色综合视频一区二区三区 | 亚洲精品午夜无码电影网 | 日韩在线不卡免费视频一区 | 亚洲自偷自偷在线制服 | 日本一卡2卡3卡四卡精品网站 | 黑人粗大猛烈进出高潮视频 | 2020最新国产自产精品 | 色综合天天综合狠狠爱 | 色综合视频一区二区三区 | 无遮无挡爽爽免费视频 | 国精品人妻无码一区二区三区蜜柚 | 国产精品亚洲五月天高清 | 又粗又大又硬又长又爽 | 超碰97人人做人人爱少妇 | 性开放的女人aaa片 | 麻豆国产丝袜白领秘书在线观看 | 国产精品.xx视频.xxtv | 久久国产精品精品国产色婷婷 | 高清无码午夜福利视频 | 美女黄网站人色视频免费国产 | 97夜夜澡人人双人人人喊 | 亚洲男人av香蕉爽爽爽爽 | 青青久在线视频免费观看 | 亚洲第一网站男人都懂 | 97夜夜澡人人双人人人喊 | 夜精品a片一区二区三区无码白浆 | 中文字幕人妻无码一区二区三区 | 亚洲人成人无码网www国产 | 亚洲国产欧美国产综合一区 | 久久久无码中文字幕久... | 中文字幕无码av波多野吉衣 | 国产亚洲精品久久久久久久久动漫 | 国产精品亚洲综合色区韩国 | 亚洲国产精品无码一区二区三区 | 国产成人一区二区三区在线观看 | 玩弄中年熟妇正在播放 | 少妇无套内谢久久久久 | 日韩亚洲欧美中文高清在线 | 无人区乱码一区二区三区 | 狂野欧美性猛交免费视频 | 中文精品久久久久人妻不卡 | av在线亚洲欧洲日产一区二区 | 成人影院yy111111在线观看 | 婷婷丁香五月天综合东京热 | 成 人 网 站国产免费观看 | 中文字幕日产无线码一区 | 亚洲成a人片在线观看日本 | 成人无码精品1区2区3区免费看 | 国产精品第一区揄拍无码 | 人妻天天爽夜夜爽一区二区 | 少妇久久久久久人妻无码 | 欧美激情综合亚洲一二区 | 国产av久久久久精东av | 夜夜影院未满十八勿进 | 131美女爱做视频 | 久久久久久亚洲精品a片成人 | 内射老妇bbwx0c0ck | 日日噜噜噜噜夜夜爽亚洲精品 | 熟妇女人妻丰满少妇中文字幕 | 99久久人妻精品免费一区 | 宝宝好涨水快流出来免费视频 | 激情内射亚州一区二区三区爱妻 | 国产无遮挡又黄又爽免费视频 | 无码吃奶揉捏奶头高潮视频 | 日韩亚洲欧美精品综合 | 成人毛片一区二区 | 亚洲第一无码av无码专区 | 樱花草在线播放免费中文 | 最近中文2019字幕第二页 | 国产精品久久久久久无码 | 精品国精品国产自在久国产87 | 亚洲gv猛男gv无码男同 | 图片区 小说区 区 亚洲五月 | 亚洲色欲久久久综合网东京热 | 激情内射亚州一区二区三区爱妻 | 色一情一乱一伦一区二区三欧美 | 四虎永久在线精品免费网址 | 亚洲日韩av一区二区三区四区 | 人妻夜夜爽天天爽三区 | 狠狠色欧美亚洲狠狠色www | 无码人妻少妇伦在线电影 | 久青草影院在线观看国产 | 精品偷自拍另类在线观看 | 99视频精品全部免费免费观看 | 成人免费视频一区二区 | 亚洲色欲色欲天天天www | 久久国产精品偷任你爽任你 | 国产一区二区三区影院 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 精品无码国产自产拍在线观看蜜 | 亚洲精品www久久久 | 久久天天躁狠狠躁夜夜免费观看 | 无码人中文字幕 | 少妇性荡欲午夜性开放视频剧场 | 67194成是人免费无码 | 亚洲精品午夜国产va久久成人 | 麻豆国产人妻欲求不满 | 免费乱码人妻系列无码专区 | 亚洲自偷自拍另类第1页 | 久久人妻内射无码一区三区 | 中国女人内谢69xxxx | 亚洲一区二区三区在线观看网站 | 特黄特色大片免费播放器图片 | 天下第一社区视频www日本 | 人人超人人超碰超国产 | 少妇被黑人到高潮喷出白浆 | 国产精品二区一区二区aⅴ污介绍 | 人妻夜夜爽天天爽三区 | 亚洲色欲久久久综合网东京热 | 日本大乳高潮视频在线观看 | 99久久无码一区人妻 | 亚洲人亚洲人成电影网站色 | 国产精品永久免费视频 | 亚洲综合无码一区二区三区 | 欧美熟妇另类久久久久久不卡 | 中文无码精品a∨在线观看不卡 | 国内少妇偷人精品视频免费 | 国产激情一区二区三区 | 一二三四在线观看免费视频 | 久久精品人妻少妇一区二区三区 | 无码毛片视频一区二区本码 | 少妇性l交大片 | av香港经典三级级 在线 | 亚洲高清偷拍一区二区三区 | 亚洲色欲久久久综合网东京热 | 国产片av国语在线观看 | 免费人成在线视频无码 | 香蕉久久久久久av成人 | 高清国产亚洲精品自在久久 | 亚洲 a v无 码免 费 成 人 a v | 国产午夜手机精彩视频 | 麻豆精产国品 | 亚洲成色在线综合网站 | 真人与拘做受免费视频 | 国产内射爽爽大片视频社区在线 | 香港三级日本三级妇三级 | 在线观看国产午夜福利片 | 老子影院午夜伦不卡 | aⅴ亚洲 日韩 色 图网站 播放 | 色综合天天综合狠狠爱 | 中国女人内谢69xxxx | 久久久久国色av免费观看性色 | 无码国模国产在线观看 | 亚洲欧洲日本综合aⅴ在线 | 成人欧美一区二区三区黑人免费 | 中文无码精品a∨在线观看不卡 | 少妇厨房愉情理9仑片视频 | 爆乳一区二区三区无码 | 东北女人啪啪对白 | 国产精品-区区久久久狼 | 少妇人妻大乳在线视频 | 日韩人妻无码一区二区三区久久99 | 纯爱无遮挡h肉动漫在线播放 | 国产午夜福利亚洲第一 | 亚洲一区二区三区在线观看网站 | 亚洲国产欧美日韩精品一区二区三区 | 露脸叫床粗话东北少妇 | 精品国产福利一区二区 | 国产片av国语在线观看 | 精品久久久久久亚洲精品 | 麻豆蜜桃av蜜臀av色欲av | 香港三级日本三级妇三级 | 久久天天躁狠狠躁夜夜免费观看 | 成在人线av无码免费 | 性色av无码免费一区二区三区 | 国产精品福利视频导航 | 久久伊人色av天堂九九小黄鸭 | 亚洲日本一区二区三区在线 | 精品无人区无码乱码毛片国产 | 国产成人无码av在线影院 | 狠狠cao日日穞夜夜穞av | 午夜性刺激在线视频免费 | 亚洲男人av香蕉爽爽爽爽 | 久久久婷婷五月亚洲97号色 | 午夜福利电影 | aⅴ亚洲 日韩 色 图网站 播放 | 97夜夜澡人人双人人人喊 | 久久综合久久自在自线精品自 | 无码精品国产va在线观看dvd | 国内精品久久毛片一区二区 | 成人aaa片一区国产精品 | 国产亚洲精品久久久久久大师 | 牲欲强的熟妇农村老妇女 | 日韩视频 中文字幕 视频一区 | 久久人人爽人人人人片 | yw尤物av无码国产在线观看 | 亚洲精品国产精品乱码视色 | 国产免费无码一区二区视频 | 精品久久久无码人妻字幂 | 国产女主播喷水视频在线观看 | 又色又爽又黄的美女裸体网站 | 大胆欧美熟妇xx | 1000部夫妻午夜免费 | 亚洲午夜福利在线观看 | 国产麻豆精品一区二区三区v视界 | 亚洲欧美国产精品久久 | 国产成人综合美国十次 | 日本饥渴人妻欲求不满 | 97久久超碰中文字幕 | 夜夜躁日日躁狠狠久久av | 波多野结衣av在线观看 | 国产人妻精品一区二区三区不卡 | 97精品国产97久久久久久免费 | 国产激情综合五月久久 | 日韩精品无码一本二本三本色 | 久久精品人妻少妇一区二区三区 | 国产熟妇另类久久久久 | 黑人巨大精品欧美一区二区 | 国产 精品 自在自线 | a片在线免费观看 | 国产xxx69麻豆国语对白 | 亚洲 另类 在线 欧美 制服 | 亚洲日韩av一区二区三区中文 | 极品尤物被啪到呻吟喷水 | 国语自产偷拍精品视频偷 | 欧美日韩一区二区综合 | 亚洲熟悉妇女xxx妇女av | 亚洲人成人无码网www国产 | 少妇性l交大片欧洲热妇乱xxx | 人人爽人人澡人人高潮 | 99久久人妻精品免费一区 | 欧美亚洲日韩国产人成在线播放 | 中国大陆精品视频xxxx | 天堂亚洲2017在线观看 | 无遮挡啪啪摇乳动态图 | 精品国产福利一区二区 | 久久精品视频在线看15 | 国产 浪潮av性色四虎 | 欧美自拍另类欧美综合图片区 | 国产av一区二区精品久久凹凸 | 国语精品一区二区三区 | 图片区 小说区 区 亚洲五月 | 午夜福利试看120秒体验区 | 水蜜桃亚洲一二三四在线 | 日韩精品乱码av一区二区 | 最近免费中文字幕中文高清百度 | 少妇性荡欲午夜性开放视频剧场 | 欧美 丝袜 自拍 制服 另类 | 色综合天天综合狠狠爱 | 亚洲另类伦春色综合小说 | 亚洲经典千人经典日产 | 欧美日韩色另类综合 | 国产99久久精品一区二区 | 一本大道久久东京热无码av | 中文精品无码中文字幕无码专区 | 夜夜躁日日躁狠狠久久av | 国产va免费精品观看 | 在教室伦流澡到高潮hnp视频 | 国产超级va在线观看视频 | 蜜臀av无码人妻精品 | 精品一区二区三区波多野结衣 | 色综合天天综合狠狠爱 | 日本一本二本三区免费 | 国产亚洲日韩欧美另类第八页 | 国产在热线精品视频 | 久久无码中文字幕免费影院蜜桃 | 久久久中文久久久无码 | 国产极品美女高潮无套在线观看 | 久久人人爽人人爽人人片ⅴ | 一本无码人妻在中文字幕免费 | 六月丁香婷婷色狠狠久久 | 成 人 免费观看网站 | 精品久久久久香蕉网 | av无码不卡在线观看免费 | 97夜夜澡人人爽人人喊中国片 | 76少妇精品导航 | 最近免费中文字幕中文高清百度 | 亚洲色大成网站www国产 | 67194成是人免费无码 | 人人妻人人澡人人爽人人精品 | 99精品无人区乱码1区2区3区 | 一区二区三区乱码在线 | 欧洲 | 欧洲美熟女乱又伦 | 国产精品-区区久久久狼 | 黑人粗大猛烈进出高潮视频 | 国产成人无码专区 | 国产精品资源一区二区 | 国产无av码在线观看 | 天堂а√在线地址中文在线 | 日本乱人伦片中文三区 | 在线a亚洲视频播放在线观看 | 亚洲国产精品一区二区美利坚 | 精品国产青草久久久久福利 | 欧美熟妇另类久久久久久不卡 | 国产熟妇高潮叫床视频播放 | 又黄又爽又色的视频 | 色婷婷av一区二区三区之红樱桃 | 国产超级va在线观看视频 | 人妻少妇精品无码专区动漫 | 国产高潮视频在线观看 | 欧美黑人巨大xxxxx | 久久久久久久久蜜桃 | 樱花草在线社区www | 97精品国产97久久久久久免费 | 1000部啪啪未满十八勿入下载 | 日韩欧美群交p片內射中文 | 97久久国产亚洲精品超碰热 | 日日碰狠狠丁香久燥 | 老司机亚洲精品影院 | 久久99久久99精品中文字幕 | 亚洲va欧美va天堂v国产综合 | 人妻有码中文字幕在线 | 色婷婷欧美在线播放内射 | 夜先锋av资源网站 | 日韩精品乱码av一区二区 | 欧洲熟妇精品视频 | 欧美freesex黑人又粗又大 | 久久国产36精品色熟妇 | 免费观看的无遮挡av | 国产精品久久精品三级 | 色婷婷综合激情综在线播放 | 麻豆av传媒蜜桃天美传媒 | 精品久久8x国产免费观看 | 精品成人av一区二区三区 | 久久久久久久人妻无码中文字幕爆 | 欧美 日韩 亚洲 在线 | 精品国偷自产在线视频 | 国产精品久久久久无码av色戒 | yw尤物av无码国产在线观看 | 97夜夜澡人人爽人人喊中国片 | 亚洲综合无码久久精品综合 | 亲嘴扒胸摸屁股激烈网站 | 波多野结衣av一区二区全免费观看 | 欧美三级a做爰在线观看 | 免费观看黄网站 | 草草网站影院白丝内射 | 午夜精品一区二区三区在线观看 | 国产精品久久久久7777 | 国产精品久久久午夜夜伦鲁鲁 | 亚洲精品一区二区三区婷婷月 | 欧美熟妇另类久久久久久不卡 | 欧美国产亚洲日韩在线二区 | 亚洲精品美女久久久久久久 | 夜夜高潮次次欢爽av女 | 久久99精品久久久久久 | 午夜福利一区二区三区在线观看 | 人人妻人人澡人人爽人人精品浪潮 | av小次郎收藏 | 国产性生交xxxxx无码 | 日韩人妻无码一区二区三区久久99 | 国产精品a成v人在线播放 | 日产国产精品亚洲系列 | 熟妇人妻激情偷爽文 | 日欧一片内射va在线影院 | 无码人妻久久一区二区三区不卡 | 在线播放免费人成毛片乱码 | 99国产精品白浆在线观看免费 | 女人和拘做爰正片视频 | 国产深夜福利视频在线 | av香港经典三级级 在线 | 99久久精品无码一区二区毛片 | 中文字幕无码av波多野吉衣 | 亚洲精品国偷拍自产在线麻豆 | 2019nv天堂香蕉在线观看 | 国产熟妇高潮叫床视频播放 | yw尤物av无码国产在线观看 | 亚洲小说图区综合在线 | 一本大道久久东京热无码av | 无码精品国产va在线观看dvd | 亚洲精品午夜无码电影网 | 久久亚洲a片com人成 | 九九综合va免费看 | 老子影院午夜伦不卡 | 久久精品99久久香蕉国产色戒 | 在线视频网站www色 | 国产电影无码午夜在线播放 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲精品无码国产 | 欧美三级不卡在线观看 | 国产精品99爱免费视频 | 亚洲男人av天堂午夜在 | 国内老熟妇对白xxxxhd | 日韩精品无码一区二区中文字幕 | 55夜色66夜色国产精品视频 | 亚洲中文字幕在线观看 | 日本大乳高潮视频在线观看 | 免费无码的av片在线观看 | 欧美日本精品一区二区三区 | 欧美高清在线精品一区 | 欧美大屁股xxxxhd黑色 | 国产97色在线 | 免 | 伦伦影院午夜理论片 | aⅴ亚洲 日韩 色 图网站 播放 | 爆乳一区二区三区无码 | 鲁大师影院在线观看 | 国产激情艳情在线看视频 | 无码乱肉视频免费大全合集 | 久久精品国产一区二区三区 | 国语自产偷拍精品视频偷 | 西西人体www44rt大胆高清 | 正在播放东北夫妻内射 | 日日天干夜夜狠狠爱 | 日韩av无码一区二区三区不卡 | 精品偷拍一区二区三区在线看 | 亚洲熟妇色xxxxx亚洲 | 香蕉久久久久久av成人 | 日本饥渴人妻欲求不满 | 欧美性黑人极品hd | 成人一区二区免费视频 | 天天综合网天天综合色 | 美女极度色诱视频国产 | 色欲久久久天天天综合网精品 | 亚洲熟妇色xxxxx亚洲 | 久在线观看福利视频 | 色爱情人网站 | 国产精品美女久久久久av爽李琼 | 久久午夜无码鲁丝片午夜精品 | 国产欧美精品一区二区三区 | 国产成人一区二区三区别 | 欧美35页视频在线观看 | 无码国产激情在线观看 | 亚洲人成人无码网www国产 | 性做久久久久久久久 | 精品乱码久久久久久久 | 日日天日日夜日日摸 | 亚洲精品午夜无码电影网 | 无码国产乱人伦偷精品视频 | av无码电影一区二区三区 | 色婷婷综合中文久久一本 | 亚洲熟熟妇xxxx | 性啪啪chinese东北女人 | 亚洲天堂2017无码中文 | 荫蒂添的好舒服视频囗交 | 无码精品人妻一区二区三区av | 国产精品香蕉在线观看 | 无码国内精品人妻少妇 | 自拍偷自拍亚洲精品10p | 久久午夜无码鲁丝片午夜精品 | 午夜成人1000部免费视频 | 福利一区二区三区视频在线观看 | 国产疯狂伦交大片 | 97精品人妻一区二区三区香蕉 | 久久99精品国产麻豆 | 熟妇女人妻丰满少妇中文字幕 | 亚洲欧洲无卡二区视頻 | 国产精品亚洲lv粉色 | 永久免费观看国产裸体美女 | 99麻豆久久久国产精品免费 | 久久亚洲日韩精品一区二区三区 | 亚洲大尺度无码无码专区 | 免费观看激色视频网站 | 精品乱码久久久久久久 | 亚洲娇小与黑人巨大交 | 大肉大捧一进一出好爽视频 | 人妻无码αv中文字幕久久琪琪布 | 九月婷婷人人澡人人添人人爽 | 欧美日韩人成综合在线播放 | 亚洲热妇无码av在线播放 | 亚洲中文字幕在线观看 | 成在人线av无码免费 | 免费播放一区二区三区 | 国产超级va在线观看视频 | 国内精品久久毛片一区二区 | 女人被男人爽到呻吟的视频 | 亚洲人亚洲人成电影网站色 | 亚洲成色www久久网站 | 国产av一区二区三区最新精品 | 亚洲人成影院在线无码按摩店 | 国产精品美女久久久久av爽李琼 | 3d动漫精品啪啪一区二区中 | 国产麻豆精品精东影业av网站 | 国产另类ts人妖一区二区 | 成 人 免费观看网站 | 精品国产乱码久久久久乱码 | 亚洲天堂2017无码中文 | 无人区乱码一区二区三区 | 国产人妖乱国产精品人妖 | 俄罗斯老熟妇色xxxx | 亚洲自偷自拍另类第1页 | 久久综合九色综合欧美狠狠 | 国产精品亚洲综合色区韩国 | 福利一区二区三区视频在线观看 | 色综合久久久久综合一本到桃花网 | 国产精华av午夜在线观看 | 小鲜肉自慰网站xnxx | 精品人妻人人做人人爽 | 久久99热只有频精品8 | www国产精品内射老师 | 亚欧洲精品在线视频免费观看 | 又粗又大又硬又长又爽 | 精品国偷自产在线 | 性色欲情网站iwww九文堂 | 色诱久久久久综合网ywww | 亚洲天堂2017无码 | 中文字幕 人妻熟女 | 夜夜高潮次次欢爽av女 | 俄罗斯老熟妇色xxxx | 精品一区二区三区波多野结衣 | 亚洲国产欧美日韩精品一区二区三区 | 欧美亚洲国产一区二区三区 | 免费人成在线视频无码 | 鲁一鲁av2019在线 | 精品欧洲av无码一区二区三区 | 18禁止看的免费污网站 | 久久天天躁狠狠躁夜夜免费观看 | 国产日产欧产精品精品app | 亚洲 欧美 激情 小说 另类 | 一本久久a久久精品亚洲 | 亚洲国产av美女网站 | 人妻体内射精一区二区三四 | 国精产品一品二品国精品69xx | 任你躁国产自任一区二区三区 | 国产精品久久久一区二区三区 | 中文精品无码中文字幕无码专区 | 欧美人与动性行为视频 | 久久国产精品精品国产色婷婷 | 大色综合色综合网站 | 中文字幕乱码人妻二区三区 | 欧洲vodafone精品性 | 精品无码av一区二区三区 | 亚洲欧美精品伊人久久 | 国产人妻久久精品二区三区老狼 | 天天摸天天碰天天添 | 中文毛片无遮挡高清免费 | 女人色极品影院 | 亚无码乱人伦一区二区 | 特级做a爰片毛片免费69 | 国产精品办公室沙发 | 久久99精品国产麻豆蜜芽 | 又粗又大又硬毛片免费看 | 性做久久久久久久久 | 国产av人人夜夜澡人人爽麻豆 | 无码人妻少妇伦在线电影 | 亚洲人成影院在线无码按摩店 | 亚洲日韩一区二区 | 国产精品无码mv在线观看 | 亚洲欧美日韩综合久久久 | v一区无码内射国产 | 樱花草在线社区www | 国产成人精品一区二区在线小狼 | 老头边吃奶边弄进去呻吟 | √8天堂资源地址中文在线 | 国产精华av午夜在线观看 | 亚洲熟妇色xxxxx欧美老妇y | 一区二区三区高清视频一 | 免费男性肉肉影院 | 少妇性荡欲午夜性开放视频剧场 | 亚洲精品成a人在线观看 | 久久99精品国产.久久久久 | 久久精品中文字幕大胸 | 免费网站看v片在线18禁无码 | 精品人人妻人人澡人人爽人人 | 午夜精品久久久久久久 | 国产无遮挡又黄又爽又色 | 无码帝国www无码专区色综合 | 国产情侣作爱视频免费观看 | 在线看片无码永久免费视频 | 欧美午夜特黄aaaaaa片 | 欧美 丝袜 自拍 制服 另类 | 成在人线av无码免观看麻豆 | 99久久精品无码一区二区毛片 | 中文字幕日韩精品一区二区三区 | 粗大的内捧猛烈进出视频 | 日韩av无码中文无码电影 | 亚洲国产精品成人久久蜜臀 | 十八禁真人啪啪免费网站 | 成人无码影片精品久久久 | 成年美女黄网站色大免费全看 | 国产av剧情md精品麻豆 | 午夜理论片yy44880影院 | 国产精品久久国产精品99 | 国产亲子乱弄免费视频 | 奇米影视7777久久精品人人爽 | 在线 国产 欧美 亚洲 天堂 | 中文无码伦av中文字幕 | 久久国内精品自在自线 | 沈阳熟女露脸对白视频 | 黄网在线观看免费网站 | 巨爆乳无码视频在线观看 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲の无码国产の无码影院 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产乱码精品一品二品 | 丝袜美腿亚洲一区二区 | 男女爱爱好爽视频免费看 | 国产suv精品一区二区五 | 免费男性肉肉影院 | 国产成人无码av在线影院 | 成人精品一区二区三区中文字幕 | 亚洲日韩中文字幕在线播放 | 国内精品人妻无码久久久影院蜜桃 | 国产成人综合在线女婷五月99播放 | 国产综合色产在线精品 | 一本一道久久综合久久 | 沈阳熟女露脸对白视频 | 永久黄网站色视频免费直播 | 强伦人妻一区二区三区视频18 | 亚洲乱码中文字幕在线 | 一本久道久久综合婷婷五月 | 秋霞成人午夜鲁丝一区二区三区 | 国产97色在线 | 免 | 熟妇女人妻丰满少妇中文字幕 | 欧洲精品码一区二区三区免费看 | 欧美人妻一区二区三区 | 精品久久久久香蕉网 | 精品亚洲韩国一区二区三区 | 一区二区三区乱码在线 | 欧洲 | 乱人伦中文视频在线观看 | 少妇被黑人到高潮喷出白浆 | 水蜜桃色314在线观看 | 国产一区二区三区影院 | 中文字幕无码免费久久9一区9 | 亚洲精品国产a久久久久久 | 扒开双腿疯狂进出爽爽爽视频 | 亚洲日本在线电影 | 亚洲毛片av日韩av无码 | 亚洲精品久久久久久久久久久 | 天堂无码人妻精品一区二区三区 | 日本熟妇大屁股人妻 | 漂亮人妻洗澡被公强 日日躁 | 欧美真人作爱免费视频 | 亚洲成色在线综合网站 | 日韩亚洲欧美精品综合 | 成在人线av无码免费 | 特大黑人娇小亚洲女 | 无码人妻黑人中文字幕 | 影音先锋中文字幕无码 | 亚拍精品一区二区三区探花 | 黑森林福利视频导航 | 国产精品久久久久久久9999 | 亚洲精品久久久久久久久久久 | 亚洲а∨天堂久久精品2021 | 野外少妇愉情中文字幕 | 亚洲色大成网站www | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 久久久久久久女国产乱让韩 | 综合网日日天干夜夜久久 | 精品偷拍一区二区三区在线看 | 最近免费中文字幕中文高清百度 | 免费乱码人妻系列无码专区 | 麻豆精品国产精华精华液好用吗 | 麻豆国产97在线 | 欧洲 | 久久国产精品精品国产色婷婷 | 亚洲人成人无码网www国产 | 国产精品沙发午睡系列 | 四虎国产精品免费久久 | 欧美 亚洲 国产 另类 | av无码久久久久不卡免费网站 | 亚洲男人av天堂午夜在 | 国内精品九九久久久精品 | 亚洲午夜无码久久 | 午夜肉伦伦影院 | av无码久久久久不卡免费网站 | 国产熟女一区二区三区四区五区 | a在线亚洲男人的天堂 | 国产真实伦对白全集 | 日韩少妇内射免费播放 | 精品人妻人人做人人爽夜夜爽 | 国产精品久久久久影院嫩草 | 人人澡人人妻人人爽人人蜜桃 | 美女黄网站人色视频免费国产 | 少妇太爽了在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产精品久久久av久久久 | 久久久久久av无码免费看大片 | 综合激情五月综合激情五月激情1 | 亚洲欧美综合区丁香五月小说 | 日本丰满护士爆乳xxxx | 国产手机在线αⅴ片无码观看 | 牛和人交xxxx欧美 | 亚洲国产欧美日韩精品一区二区三区 | aⅴ亚洲 日韩 色 图网站 播放 | 搡女人真爽免费视频大全 | 波多野结衣乳巨码无在线观看 | 无码国模国产在线观看 | 无码成人精品区在线观看 | 377p欧洲日本亚洲大胆 | 国产av无码专区亚洲a∨毛片 | 日日碰狠狠丁香久燥 | 国产精品va在线观看无码 | 精品无人国产偷自产在线 | 国产色视频一区二区三区 | 18黄暴禁片在线观看 | 亚洲成a人片在线观看无码3d | 亚洲精品久久久久中文第一幕 | 天堂а√在线中文在线 | 少妇人妻大乳在线视频 | 欧美丰满熟妇xxxx性ppx人交 | 国产精品成人av在线观看 | 国精品人妻无码一区二区三区蜜柚 | 疯狂三人交性欧美 | 色一情一乱一伦一区二区三欧美 | 国产精品美女久久久网av | 国产成人精品视频ⅴa片软件竹菊 | 97夜夜澡人人双人人人喊 | 麻豆av传媒蜜桃天美传媒 | 最近的中文字幕在线看视频 | 丝袜人妻一区二区三区 | 久久综合久久自在自线精品自 | 大胆欧美熟妇xx | 狠狠噜狠狠狠狠丁香五月 | 人人澡人人透人人爽 | 国产精品亚洲综合色区韩国 | 97人妻精品一区二区三区 | 精品国产一区二区三区av 性色 | 狠狠亚洲超碰狼人久久 | 久久久久成人精品免费播放动漫 | 日韩av无码一区二区三区 | 久久人人爽人人爽人人片ⅴ | 亚洲精品一区二区三区在线观看 | 日本又色又爽又黄的a片18禁 | 国产精品无码一区二区桃花视频 | 日韩人妻无码一区二区三区久久99 | 少妇性俱乐部纵欲狂欢电影 | 亚洲国产av精品一区二区蜜芽 | 国产热a欧美热a在线视频 | 四虎4hu永久免费 | 麻豆人妻少妇精品无码专区 | 夜先锋av资源网站 | 精品久久综合1区2区3区激情 | 97夜夜澡人人双人人人喊 | 少妇太爽了在线观看 | 亚洲国产成人a精品不卡在线 | 日韩视频 中文字幕 视频一区 | 国产香蕉尹人综合在线观看 | 欧美乱妇无乱码大黄a片 | 荫蒂被男人添的好舒服爽免费视频 | 精品偷自拍另类在线观看 | 亚洲中文字幕va福利 | 男女猛烈xx00免费视频试看 | 欧美 亚洲 国产 另类 | 在线欧美精品一区二区三区 | 国产精品欧美成人 | 色婷婷综合激情综在线播放 | 国产人妻精品一区二区三区不卡 | 中文字幕无码日韩专区 | 亚洲高清偷拍一区二区三区 | 国产成人一区二区三区别 | 成人性做爰aaa片免费看不忠 | 无码人中文字幕 | 无码精品国产va在线观看dvd | 中文字幕 人妻熟女 | 全黄性性激高免费视频 | 久久国内精品自在自线 | 国产又爽又猛又粗的视频a片 | 亚洲精品国产精品乱码视色 | 激情亚洲一区国产精品 | 亚洲精品午夜国产va久久成人 | 久久久久久a亚洲欧洲av冫 | 成人精品一区二区三区中文字幕 | 麻豆国产97在线 | 欧洲 | 97久久国产亚洲精品超碰热 | 日韩精品a片一区二区三区妖精 | √天堂中文官网8在线 | 67194成是人免费无码 | 成人欧美一区二区三区 | 东京热无码av男人的天堂 | 人妻人人添人妻人人爱 | 99麻豆久久久国产精品免费 | 少妇的肉体aa片免费 | 日韩精品久久久肉伦网站 | 天天综合网天天综合色 | 99久久亚洲精品无码毛片 | 国内精品一区二区三区不卡 | 日本www一道久久久免费榴莲 | 在线а√天堂中文官网 | 国产激情一区二区三区 | 波多野42部无码喷潮在线 | 特大黑人娇小亚洲女 | 精品国产一区二区三区四区在线看 | 亚洲国产一区二区三区在线观看 | 免费观看的无遮挡av | 熟妇女人妻丰满少妇中文字幕 | 亚洲 欧美 激情 小说 另类 | 青春草在线视频免费观看 | 欧美阿v高清资源不卡在线播放 | 亚洲男人av天堂午夜在 | 亚洲欧美精品伊人久久 | 无码国产乱人伦偷精品视频 | 国产激情艳情在线看视频 | 亚洲日韩一区二区三区 | 国产av剧情md精品麻豆 | 无码一区二区三区在线 | 狠狠亚洲超碰狼人久久 | 玩弄中年熟妇正在播放 | 国产亚洲人成在线播放 | 亚洲日韩av一区二区三区四区 | 大胆欧美熟妇xx | 国产精品va在线观看无码 | 爽爽影院免费观看 | 少妇无码av无码专区在线观看 | 日日躁夜夜躁狠狠躁 | 秋霞成人午夜鲁丝一区二区三区 | 中文字幕无码av波多野吉衣 | 亚洲va欧美va天堂v国产综合 | 性色欲网站人妻丰满中文久久不卡 | 3d动漫精品啪啪一区二区中 | 无套内射视频囯产 | 国产在热线精品视频 | 波多野结衣av一区二区全免费观看 | 77777熟女视频在线观看 а天堂中文在线官网 | 久久久成人毛片无码 | 久久精品一区二区三区四区 | 亚洲另类伦春色综合小说 | 免费无码的av片在线观看 | 熟妇人妻无乱码中文字幕 | 国产美女极度色诱视频www | 国产成人精品视频ⅴa片软件竹菊 | 宝宝好涨水快流出来免费视频 | 老太婆性杂交欧美肥老太 | a在线亚洲男人的天堂 | 中文毛片无遮挡高清免费 | 亚洲乱码日产精品bd | 亚洲精品国产品国语在线观看 | 小泽玛莉亚一区二区视频在线 | 国产精品18久久久久久麻辣 | 粉嫩少妇内射浓精videos | 亚洲娇小与黑人巨大交 | 丰满护士巨好爽好大乳 | 欧美精品国产综合久久 | 内射爽无广熟女亚洲 | 丰满人妻被黑人猛烈进入 | 国产办公室秘书无码精品99 | 女人被男人爽到呻吟的视频 | 久久精品丝袜高跟鞋 | 精品久久8x国产免费观看 | 日韩欧美群交p片內射中文 | 人妻体内射精一区二区三四 | 亚洲一区二区三区播放 | 狠狠色丁香久久婷婷综合五月 | 中文字幕av日韩精品一区二区 | 亚洲国产精品久久久久久 | 国产在线aaa片一区二区99 | 97精品人妻一区二区三区香蕉 | 国产精品久久久一区二区三区 | 国产一区二区三区日韩精品 | 国产精品美女久久久 | 国产免费观看黄av片 | 99精品久久毛片a片 | 精品国产一区二区三区四区在线看 | 久久午夜无码鲁丝片秋霞 | 欧美精品无码一区二区三区 | 久久综合给合久久狠狠狠97色 | 久久久久成人精品免费播放动漫 | 成人精品一区二区三区中文字幕 | 久久久久se色偷偷亚洲精品av | 欧洲欧美人成视频在线 | 亚洲aⅴ无码成人网站国产app | 国产精品久久久午夜夜伦鲁鲁 | 日本一区二区三区免费播放 | 伊人久久婷婷五月综合97色 | 少妇厨房愉情理9仑片视频 | 中文字幕无码日韩欧毛 | 波多野结衣 黑人 | 天天拍夜夜添久久精品 | 无码国产激情在线观看 | 国产午夜亚洲精品不卡下载 | 无码福利日韩神码福利片 | 精品国产aⅴ无码一区二区 | 东京热无码av男人的天堂 | 天天拍夜夜添久久精品大 | 国产真实伦对白全集 | 性色欲情网站iwww九文堂 | 精品国产麻豆免费人成网站 | 国产精品久久国产三级国 | 美女黄网站人色视频免费国产 | 亚洲日韩av一区二区三区中文 | 亚洲乱亚洲乱妇50p | 久久成人a毛片免费观看网站 | 国产97在线 | 亚洲 | 国产综合色产在线精品 | 国产乱人无码伦av在线a | √天堂中文官网8在线 | 欧美黑人巨大xxxxx | 大乳丰满人妻中文字幕日本 | 亚洲精品国产精品乱码视色 | 亚洲人成影院在线无码按摩店 | 永久免费精品精品永久-夜色 | 老司机亚洲精品影院无码 | 亚洲一区二区三区四区 | 国产在线一区二区三区四区五区 | 国内老熟妇对白xxxxhd | 99视频精品全部免费免费观看 | 国产美女极度色诱视频www | 成人精品视频一区二区 | 国产精品国产三级国产专播 | 欧美熟妇另类久久久久久不卡 | 免费无码的av片在线观看 | 精品人人妻人人澡人人爽人人 | 色欲久久久天天天综合网精品 | 欧美35页视频在线观看 | 国产成人无码午夜视频在线观看 | 欧美丰满熟妇xxxx | 无遮无挡爽爽免费视频 | 成人性做爰aaa片免费看 | 欧美成人午夜精品久久久 | 在线精品国产一区二区三区 | 一本一道久久综合久久 | a片免费视频在线观看 | 日韩少妇内射免费播放 | 国产精品高潮呻吟av久久 | 中文字幕av日韩精品一区二区 | 在线观看免费人成视频 | 国产黑色丝袜在线播放 | 香港三级日本三级妇三级 | 嫩b人妻精品一区二区三区 | 日本精品人妻无码免费大全 | 欧美性色19p | 露脸叫床粗话东北少妇 | 中文字幕中文有码在线 | 无码人妻丰满熟妇区毛片18 | 国产在线精品一区二区高清不卡 | 夜夜夜高潮夜夜爽夜夜爰爰 | 精品人妻人人做人人爽夜夜爽 | 亚洲日韩av一区二区三区四区 | 免费播放一区二区三区 | 性做久久久久久久免费看 | 乱码午夜-极国产极内射 | 又大又硬又爽免费视频 | 亚洲精品一区二区三区在线 | 亚洲人成网站色7799 | 日韩无套无码精品 | 亚洲 另类 在线 欧美 制服 | √天堂中文官网8在线 | 99久久久无码国产精品免费 | 荫蒂被男人添的好舒服爽免费视频 | 日日摸天天摸爽爽狠狠97 | 无码任你躁久久久久久久 | 欧洲熟妇色 欧美 | 男人扒开女人内裤强吻桶进去 | 99精品国产综合久久久久五月天 | 又粗又大又硬毛片免费看 | 成人无码精品1区2区3区免费看 | 亚洲欧美精品aaaaaa片 | 三级4级全黄60分钟 | 国产午夜无码精品免费看 | 人妻无码αv中文字幕久久琪琪布 | 红桃av一区二区三区在线无码av | 精品国产一区二区三区四区在线看 | 一个人看的www免费视频在线观看 | 高清国产亚洲精品自在久久 | 国内精品人妻无码久久久影院蜜桃 | 少妇无套内谢久久久久 | 麻豆国产人妻欲求不满 | 日本爽爽爽爽爽爽在线观看免 | 中文字幕精品av一区二区五区 | 精品少妇爆乳无码av无码专区 | 久久久久久国产精品无码下载 | 国产97在线 | 亚洲 | 99精品国产综合久久久久五月天 | 久久精品国产日本波多野结衣 | 精品一区二区不卡无码av | 久久综合色之久久综合 | 免费无码一区二区三区蜜桃大 | 老熟女重囗味hdxx69 | 中文字幕无码av波多野吉衣 | 少妇激情av一区二区 | 久久精品人妻少妇一区二区三区 | 午夜无码人妻av大片色欲 | 国产 精品 自在自线 | 久久久中文久久久无码 |