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

反向 Debug 了解一下?揭秘 Java DEBUG 的基本原理

開發 前端
相比之下, GDB 的 Reverse Debugging 就比較強大,真正的 “反向” DEBUG,逆向運行,實現回放。所以吧在運行過程中,已經修改的數據,比如引用傳遞的方法參數、變量,一旦修改肯定回退不了,不然真的成時光機了。

Debug 的時候,都遇到過手速太快,直接跳過了自己想調試的方法、代碼的時候吧……

一旦跳過,可能就得重新執行一遍,準備數據、重新啟動可能幾分鐘就過去了。

好在IDE 們都很強大,還給你后悔的機會,可以直接刪除某個 Stack Frame,直接返回到之前的狀態,確切的說是返回到之前的某個 Stack Frame,從而實現讓程序“逆向運行”。

這個 Reset Frame 的能力,可不只是返回上一步,上 N 步也是可以的;選中你期望的那個幀,直接Reset Frame/Drop Frame,可以直接回到調用棧上的某個棧幀,時間反轉!

可惜這玩意也不是那么萬能,畢竟是通過 stack pop 這種操作實現,實際上只是給調用棧棧頂的 N 個 frame pop 出來而已,還談不上是真正的“反向 DEBUG”。

相比之下, GDB 的 Reverse Debugging 就比較強大,真正的 “反向” DEBUG,逆向運行,實現回放。

所以吧在運行過程中,已經修改的數據,比如引用傳遞的方法參數、變量,一旦修改肯定回退不了,不然真的成時光機了。

這些亂七八糟的調試功能,都是基于 Java 內置的 Debug 體系來實現的。

JAVA DEBUG 體系

Java 提供了一個完整的 Debug 體系 JPDA (Java Platform Debugger Architecture),這個 JPDA 架構體系由 3 部分組成:

  1. JVM TI - Java VM Tool Interface
  2. JDWP - Java Debug Wire Protocol
  3. JDI - Java Debug Interface

如果結合IDE 來看,那么一個完整的 Debug 功能看起來就是這個樣子:

解釋一下這個體系:

JVM TI 是一個 JVM 提供的一個調試接口,提供了一系列控制 JVM 行為的功能,比如分析、調試、監控、線程分析等等。也就是說,這個接口定義了一系列調試分析功能,而 JVM 實現了這個接口,從而提供調試能力。

不過吧,這個接口畢竟是 C++的,調用起來確實不方便,所以Java 還提供了 JDI 這么個 Java 接口。

JDI 接口使用 JDWP 這個私有的應用層協議,通過 TCP 和目標 VM 的 JVMTI 接口進行交互。

也可以把簡單這個 JDWP 協議理解為 JSF/Dubbo 協議;相當于 IDE 里通過 JDI 這個 SDK,使用 JDWP 協議調用遠程 JVMTI 的 RPC 接口,來傳輸調試時的各種斷點、查看操作。

可能有人會問,搞什么套殼!要什么 JDWP,我直接 JVMTI 調試不是更香,鏈路越短性能越高!

當然可以,比如 Arthas 里的部分功能,就直接使用了 JVMTI 接口,要什么 JDI!直接 JVMTI 干就完了。

開個玩笑,Arthas 畢竟不是 Debug 工具,人家根本就不用 JDI 接口。而且 JVMTI 的能力也不只是斷點,它的功能非常多:

左邊的功能類,提供了各種亂七八糟的功能,比如我們常用的添加一個斷點:

jvmtiError
SetBreakpoint(jvmtiEnv* env,
            jmethodID method,
            jlocation location)

右邊的事件類,可以簡單的理解為回調;還是拿斷點舉例,如果我用上面的 SetBreakpoint 添加了一個斷點,那么當執行到該位置時,就會觸發這個事件:

void JNICALL
Breakpoint(jvmtiEnv *jvmti_env,
            JNIEnv* jni_env,
            jthread thread,
            jmethodID method,
            jlocation location)

JVMTI 的功能非常之多,而 JDI 只是實現了部分 JVMTI 的方法,所以某些專業的 Profiler 工具,可能會直接使用 JVMTI,從而實現更豐富的診斷分析功能。

遠程調試與本地調試

不知道大家有沒有留意過本地 Debug 啟動時的日志:

第一行是隱藏了后半段的啟動命令,展開后是這個樣子:

/path/to/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:53631,suspend=y,server=n -javaagent:/path/to/jetbrains/debugger-agent.jar ...

第二行是一個 Connected 日志,意思是使用 socket 連接到遠程 VM 的53631端口

上一段說到,IDE 通過 JDI 接口,使用 JDWP 協議和目標 VM 的 JVMTI 交互。這里的 53631 端口,就是目標 JVM 暴露出的 JVM TI 的 server 端口。

而第一行里,IDEA 自動給我們加上了 -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:53631 這么一段,這個參數的意思就是,讓 jvm 以 53631 暴露 jdwp 協議

小知識,這個 agentlib 可不只是為 jvmti 提供的。它還可以讓 JVM 加載其他的 native lib包,直接“”到你的 jvm 上,下面是參數格式:

所以吧,上面的描述其實不太嚴謹,更專業的說法是:

讓 JVM 加載 JDWP 這個 agent 庫,參數為transport=dt_socket,address=127.0.0.1:53631 ,這個 jdwp agent 庫以 53631 端口提供了 jdwp 協議的 server。只不過這個 jdwp 是jvm 內部的庫,不需要額外的 so/dylib/dll 文件。

如有需要,你完全可以弄個 “datupiao” 的 agentlib,”到這個 jvm 上,然后在這個 lib 里調用 JVMTI 接口,然后暴露個端口提供服務和遠程交互,實現自己的 jdwp!

可能某些老板們注意到了,本地調試還要127.0.0.1走tcp 交互一遍,那遠程調試呢?

基于上面的解釋,本地調試和遠程調試真的沒啥區別!或者說,在目前 IDEA/Eclipse 的實現下,不存在本地調試,都是遠程!只不過一個是 127.0.0.1,一個是遠程的 IP 而已。

在本地調試時,IDEA 會自動給我們的 JVM 增加 agent 參數,隨機指定一個端口,然后通過 JDI 接口連接,代碼大概長這樣(JDI 的 SDK 在 JDK_HOME/lib/tools.jar ):

Map<String, Connector.Argument> env = connector.defaultArguments();
env.get("hostname").setValue(hostname);
env.get("port").setValue(port);

VirtualMachine vm = connector.attach(env);

瞅瞅, VirtualMachine 里的就這點方法,能力上比 JVMTI 還是差遠了

List<ReferenceType> classesByName(String className);

List<ReferenceType> allClasses();

void redefineClasses(Map<? extends ReferenceType, byte[]> classToBytes);

List<ThreadReference> allThreads();

void suspend();

void resume();

List<ThreadGroupReference> topLevelThreadGroups();

EventQueue eventQueue();

EventRequestManager eventRequestManager();

VoidValue mirrorOfVoid();

Process process();

再回來看看 IDEA 中獨立的遠程調試,配置好之后,紅框里的信息會提示你 ,遠程的 JVM 需增加這一段啟動參數,而且支持多個版本 JDK 的格式,CV 大法就能直接用。

-agentlib 和 -javaagent

有些細心的同學可能發現了,IDEA 默認的啟動腳本里,同時配置了 -agentlib 和 -javaagent。

-javaagent:/path/to/jetbrains/debugger-agent.jar

這個 debugger-agent吧,其實也沒干啥事,只是對 JDK 內置的一些線程做了些增強,輔助 IDEA 的 debug 功能,支持一些異步的調試。

agentlib、javaagent 這倆兄弟,定位其實很像,都是加載自定義的代碼。

不過區別在于,agentlib 是加載 native lib,需要c/cpp 去寫,相當于自己的代碼在 jvm 上,可以為所欲為,比如在 agentlib 里調用上面說的 JVMTI 。

而 javaagent 是用 java 寫的,可以直接用上層的 Instrumentation API,做一些類的增強轉換之類,這也是大多數 APM Agent、Profiler Agent實現的基本原理。

Arthas 的玩法

Arthas 的核心入口,其實還是 javaagent,支持靜態加載和動態加載兩種玩法。

靜態沒啥好說的,啟動腳本里增加一個-javaagent:/tmp/test/arthas-agent.jar,然后為所欲為。

動態的叫 attach,使用 Java 提供的 VirtualMachine 就可以實現運行時添加 -javaagent,效果一樣:

VirtualMachine virtualMachine = VirtualMachine.attach(virtualMachineDescriptor);
virtualMachine.loadAgent(agentPath, agentArgs);

這個 Agent 在 JVM 里啟動了一個TCP server,用于收發 Arthas Client 的各種 trace、watch 、Dashboard 等指令,然后通過 Instrumentation 增強Class 插入代碼、或者直接調用某些 Java API,實現各種功能。

注意到了嗎?Arthas 可以直接下載一個 jar 包,java -jar 就能連上。

其實吧,它這個直接啟動的 jar 包,是一個 boot 包,啟動之后把亂七八糟的 jar 都下載下來。接著動態 attach 的方式,連接到本機指定進程號的 JVM,然后再為所欲為。

在 3.5 版本之后,Arthas 還新增了一個 vmtool 命令,這個命令可以直接獲取內存中的指定對象實例。

$ vmtool --action getInstances --className java.lang.String --limit 10
@String[][
    @String[com/taobao/arthas/core/shell/session/Session],
    @String[com.taobao.arthas.core.shell.session.Session],
    @String[com/taobao/arthas/core/shell/session/Session],
    @String[com/taobao/arthas/core/shell/session/Session],
    @String[com/taobao/arthas/core/shell/session/Session.class],
    @String[com/taobao/arthas/core/shell/session/Session.class],
    @String[com/taobao/arthas/core/shell/session/Session.class],
    @String[com/],
    @String[java/util/concurrent/ConcurrentHashMap$ValueIterator],
    @String[java/util/concurrent/locks/LockSupport],
]

直接獲取內存對象,這玩意只靠 Instrumentation API 可做不到。Arthas 搞了個騷操作,直接 JNI 調用自定義 lib,用過 cpp 直接調用了 JVMTI 的 API,融合了 Instrumentation 和 JVMTI 的能力,這下是真的為所欲為了!

#include <stdio.h>
#include <jni.h>
#include <jni_md.h>
#include <jvmti.h>
#include "arthas_VmTool.h" // under target/native/javah/

static jvmtiEnv *jvmti;

...

extern "C"
JNIEXPORT jobjectArray JNICALL
Java_arthas_VmTool_getInstances0(JNIEnv *env, jclass thisClass, jclass klass, jint limit) {
    jlong tag = getTag();
    limitCounter.init(limit);
    jvmtiError error = jvmti->IterateOverInstancesOfClass(klass, JVMTI_HEAP_OBJECT_EITHER,
                                               HeapObjectCallback, &tag);
    if (error) {
        printf("ERROR: JVMTI IterateOverInstancesOfClass failed!%u\n", error);
        return NULL;
    }

    jint count = 0;
    jobject *instances;
    error = jvmti->GetObjectsWithTags(1, &tag, &count, &instances, NULL);
    if (error) {
        printf("ERROR: JVMTI GetObjectsWithTags failed!%u\n", error);
        return NULL;
    }

    jobjectArray array = env->NewObjectArray(count, klass, NULL);
    //添加元素到數組
    for (int i = 0; i < count; i++) {
        env->SetObjectArrayElement(array, i, instances[i]);
    }
    jvmti->Deallocate(reinterpret_cast<unsigned char *>(instances));
    return array;
}

總結

  1. Debug 基于 JDPA 體系

IDE 直接接入 JDPA 體系中的 JDI 接口完成

JDI 通過 JDWP 協議,調用遠程 VM 的 JVMTI 接口

JDWP 是通過 agentlib 加載的,agentlib 算是一個 native 的靜態接口

  1. javaagent 是 JAVA 層面的接口,用過 Instrumentation API(Java)實現各種功能,主要用于APM、Profiler 工具
  2. 如果你想,在 javaagent 里調用功能更豐富的 JVMTI 也不是不行。
責任編輯:武曉燕 來源: 今日頭條
相關推薦

2020-12-29 07:32:59

Redis 列表數據

2012-01-12 14:37:34

jQuery

2016-08-17 23:53:29

網絡爬蟲抓取系統

2013-04-07 14:09:55

Android應用基本

2010-08-20 13:29:33

OFDM

2020-03-21 14:57:14

手機定位智能手機APP

2009-02-24 09:43:00

IP電話原理

2011-11-29 12:17:00

2010-03-18 20:13:03

Java socket

2021-04-27 19:21:48

HBase原理開源

2010-03-17 13:35:02

2019-11-28 10:45:28

ZooKeeper源碼分布式

2016-08-18 00:04:09

網絡爬蟲抓取系統服務器

2021-02-08 21:40:04

SockmapBPF存儲

2010-06-18 17:28:37

Linux Anacr

2020-11-26 13:54:03

容器LinuxDocker

2009-06-11 09:56:09

MySQL Repli原理

2011-07-07 14:10:21

Cocoa 內省 hash

2020-12-29 16:55:44

ZooKeeper運維數據結構

2011-07-07 14:46:10

Cocoa Xcode
點贊
收藏

51CTO技術棧公眾號

91毛片在线观看| 国产性色一区二区| 少妇荡乳情欲办公室456视频| 丰满少妇乱子伦精品看片| 欧美性www| 成人欧美一区二区三区黑人麻豆| 97人人模人人爽视频一区二区| 日韩精品人妻中文字幕| 国产精品欧美日韩一区| 正在播放亚洲一区| 毛片在线视频播放| 免费a级在线播放| 成人av综合一区| 国产精品人成电影| 日韩aaaaaa| 99久久精品网站| 日韩精品视频免费在线观看| 制服丝袜中文字幕第一页| 狠狠操一区二区三区| 国产精品国产三级国产普通话99 | 日本一区二区在线视频观看| 国产精品视频一区二区三区,| 国产精品久久久免费 | 欧美美乳视频网站在线观看| 99久久免费国产精精品| 日韩精品亚洲一区| 久久久久亚洲精品成人网小说| 久久噜噜色综合一区二区| 亚洲国产精品嫩草影院久久av| 日韩一区二区在线观看视频| 9久久婷婷国产综合精品性色| 国产精品13p| 亚洲自拍偷拍av| 综合操久久久| av在线电影院| 国产亚洲精品免费| 女同一区二区| 日韩在线免费看| 波多野结衣亚洲一区| 7777奇米亚洲综合久久| 国产一区二区在线视频观看| 老牛国产精品一区的观看方式| 91国语精品自产拍在线观看性色 | 国产一区在线免费观看| 精品国产av一区二区三区| 久久99精品久久久久婷婷| 国产精品成人在线| 日韩av大片在线观看| 18成人免费观看视频| 欧美黑人一级爽快片淫片高清| 无码人妻精品中文字幕| 99精品一区| 久久久av电影| 青娱乐国产盛宴| 一本一道久久a久久精品蜜桃 | 国产精品一区视频| www.五月激情| 成人一区二区三区| 99久久精品无码一区二区毛片 | 久久亚洲精品视频| 国产精品国产精品88| 亚洲一区在线| 欧美激情2020午夜免费观看| 久久国产露脸精品国产| 黄色日韩精品| 91成人天堂久久成人| 久久国产视频一区| 日本欧美韩国一区三区| 国产欧美日韩视频| a级片在线视频| 波多野结衣在线aⅴ中文字幕不卡| 国产伦精品一区二区三区高清| 蜜臀av中文字幕| www国产成人免费观看视频 深夜成人网| 久99久在线| 浮生影视网在线观看免费| 国产精品视频在线看| 色乱码一区二区三区熟女| av在线下载| 黄色一区二区在线| 九九热免费精品视频| 国产激情精品一区二区三区| 日韩视频免费观看高清在线视频| 偷偷色噜狠狠狠狠的777米奇| 国产精品免费99久久久| 久久精品福利视频| 久草国产精品视频| 免费观看30秒视频久久| av噜噜色噜噜久久| 久久av少妇| 亚洲日本在线观看| 国产资源在线视频| 福利精品在线| 亚洲丁香婷深爱综合| 欧美18—19性高清hd4k| 91精品久久久久久久蜜月| 国模私拍一区二区三区| 中文字幕天堂在线| 丁香六月久久综合狠狠色| 日本三级中国三级99人妇网站| 伦xxxx在线| 欧美日韩激情视频8区| 中文字幕在线综合| 精品按摩偷拍| 久久精品小视频| 狠狠人妻久久久久久| 国产精品99久| 日韩中文字幕一区二区| 9lporm自拍视频区在线| 欧美日韩亚洲丝袜制服| av黄色一级片| 66视频精品| 国产精品18久久久久久首页狼| 亚洲国产精品无码久久| 国产精品久久久久一区二区三区共| 性一交一乱一伧国产女士spa| 全球最大av网站久久| 亚洲精品美女久久| 卡通动漫亚洲综合| 日本欧美在线观看| 鲁丝一区鲁丝二区鲁丝三区| 成人在线直播| 欧美日韩免费一区二区三区| av2014天堂网| 国产精品黄色| 91视频免费网站| av资源种子在线观看| 五月开心婷婷久久| 日本人妻一区二区三区| 日韩专区精品| 国产福利视频一区二区| 开心激情综合网| 亚洲人成在线播放网站岛国| 国内自拍视频一区| 99精品国产一区二区三区2021 | 日本三级在线观看网站| 欧美日韩亚洲丝袜制服| av男人的天堂av| 国产人成精品一区二区三| julia一区二区中文久久94| 免费在线观看黄| 欧美在线观看你懂的| 六十路息与子猛烈交尾| 一区福利视频| 粉嫩av一区二区三区免费观看 | 欧美性一区二区三区| 欧美一区二区三区成人片在线| 亚洲另类在线制服丝袜| 一级黄色片国产| 国产精品videosex性欧美| 国产精品视频大全| av资源网站在线观看| 欧美亚洲动漫制服丝袜| 国产又黄又粗视频| 日本一不卡视频| 亚洲电影免费| 久久亚洲精品人成综合网| 在线免费观看羞羞视频一区二区| 日本a级c片免费看三区| 国产亚洲一区二区三区| 91av俱乐部| 日韩精品一区二区三区免费观影| 国产精品久久久久av免费| 五月婷婷在线视频| 欧美三级电影一区| 97在线观看免费高| 国产精品综合一区二区| www.xxx麻豆| 欧美综合自拍| 国产精品第3页| 午夜在线小视频| 日韩欧美国产高清| 国产乡下妇女做爰| 久久毛片高清国产| 亚洲国产精品三区| 中文不卡在线| 精品国产_亚洲人成在线| 成人片免费看| 久久精品国产综合| 五月激情六月婷婷| 欧美性色黄大片| 成人免费视频国产免费观看| 国产99久久久久久免费看农村| 日本a在线免费观看| 欧美美女在线| 91免费在线视频| 天堂网在线最新版www中文网| 亚洲一区二区久久| 99久久精品国产成人一区二区| 亚洲成人免费视频| 97在线观看免费视频| 国产成人亚洲综合a∨猫咪| 日本午夜激情视频| 色婷婷综合网| 久久精品五月婷婷| 国产精品美女久久久久人| 91超碰中文字幕久久精品| 免费av不卡| 亚洲精品乱码久久久久久金桔影视| 亚洲国产无线乱码在线观看| 一区二区三区丝袜| 极品人妻videosss人妻| www.亚洲国产| theporn国产精品| 久久精品女人天堂| 自拍偷拍视频在线| 中文字幕中文字幕精品| 亚洲va久久久噜噜噜| 亚洲高清黄色| 国产综合在线视频| 麻豆tv在线| 精品亚洲男同gayvideo网站 | 日韩免费小视频| 久久免费视频观看| 免费黄网站在线| 亚洲男人第一av网站| 亚洲国产精品18久久久久久| 欧美最新大片在线看| 男女啊啊啊视频| 亚洲一级二级三级| 欧美日韩午夜视频| 国产精品久久夜| 国产男女猛烈无遮挡a片漫画| 国产suv精品一区二区883| 少妇一级淫免费放| 米奇777在线欧美播放| 日韩av新片网| 国产伊人精品| 日本女人高潮视频| 成人黄色av| 日本精品一区二区三区视频 | 午夜精品短视频| 九一国产精品| 久久久综合香蕉尹人综合网| 一区二区精彩视频| 亚洲xxx视频| 国产va免费精品观看精品| 国产精品美女www爽爽爽视频| av免费不卡| 国模视频一区二区| 深夜国产在线播放| 美日韩在线视频| 黄在线免费观看| 久久久精品欧美| 午夜在线视频| 九九热精品视频国产| 99视频免费在线观看| 波霸ol色综合久久| а√天堂资源地址在线下载| 久久久999国产精品| jizzjizz亚洲| 欧美成人精品在线播放| 成人无遮挡免费网站视频在线观看 | 手机视频在线观看| 老妇喷水一区二区三区| 99视频在线免费| 日本少妇一区二区| www.com黄色片| 久久9热精品视频| 欧美国产日韩在线视频| 国产福利一区二区三区视频在线 | 日韩超碰人人爽人人做人人添| 国产综合第一页| 精品在线99| 一区二区国产日产| 午夜片欧美伦| 欧美高清中文字幕| 国产精品毛片| 免费激情视频在线观看| 久久国产精品色| 性一交一黄一片| 91丝袜高跟美女视频| 成人黄色a级片| 中文字幕在线一区免费| 欧美日韩综合一区二区| 亚洲不卡av一区二区三区| 特黄视频免费看| 欧美三级一区二区| 国产成人三级在线播放| 精品视频偷偷看在线观看| 黄色的视频在线免费观看| 丝袜亚洲另类欧美重口| 性xxxxfjsxxxxx欧美| 97视频在线观看视频免费视频 | 精品国产网站在线观看| 少妇激情av一区二区| 少妇av一区二区三区| 午夜伦理在线视频| 热re99久久精品国产66热| 巨大黑人极品videos精品| 成人免费视频网站入口| 精品视频免费| 国产精品视频一二三四区| 久久久久99| 久久久国产精品一区| 日韩精品不卡| 激情五月深爱五月| 中文字幕有码在线观看| 四季av一区二区凹凸精品| 亚洲制服欧美中文字幕中文字幕| 国产精品国产精品国产专区蜜臀ah| 这里只有精品免费视频| 韩国在线视频一区| 欧美精选午夜久久久乱码6080| 亚洲永久在线观看| 日韩精品xxx| 毛片在线视频| 成人免费高清在线| 日本欧美一二三区| aaaaa一级片| 国产精品二线| 欧美午夜一区二区福利视频| 亚洲欧美日本韩国| 日韩日本欧美亚洲| 日本一区二区黄色| 国产一区二区在线不卡| 日韩在线精品强乱中文字幕| 91原创在线视频| 欧美老少配视频| 三级黄色片播放| 国产三线在线| 久久99精品国产.久久久久| 日韩免费高清av| 日韩人妻一区二区三区蜜桃视频| 成人免费区一区二区三区| 99亚洲伊人久久精品影院| 91免费看`日韩一区二区| 性色av一区二区三区免费| 妖精视频一区二区| av黄色在线观看| 狂野欧美性猛交xxxx巴西| 亚洲老头老太hd| 国产美女主播在线播放| 国产无遮挡免费视频| 欧美日韩另类图片| 亚洲精选一二三| 成人区精品一区二区| 国产精品日日夜夜| 日韩a级大片| 亚洲国产精品人人做人人爽| 99电影在线观看| 深夜福利影院在线观看| 亚洲最大网站| 国产欧美一二三区| 国语自产精品视频在线看一大j8| 一级片免费在线观看视频| 男人的天堂在线视频免费观看| 奇米影视在线99精品| 亚洲精品日韩在线| 日本中文字幕高清| √天堂8资源中文在线| 成人免费视频播放| 日本最新高清不卡中文字幕| 女人黄色一级片| japanese色系久久精品| 色婷婷亚洲一区二区三区| 杨幂一区欧美专区| 激情小视频在线观看| 福利电影一区二区三区| 国产日本欧美一区二区三区在线 | 亚洲欧美国产视频| 美女在线视频免费| 蜜桃视频在线观看91| 大色综合视频网站在线播放| 久久亚洲精品成人| 欧美美女被草| 伊人情人网综合| 亚洲伦理久久| 51精品久久久久久久蜜臀| 国产男女免费视频| 欧美一级二级三级区| 久久久久久一二三区| 国产日韩在线一区二区三区| 夜夜爽8888| 亚洲精品久久久久久动漫器材一区| 亚洲第一黄网| 97超级碰碰人国产在线观看| 国产午夜免费福利| 日产国产欧美视频一区精品| 国产精品久久久久久久久| 国产一区二区麻豆| 成人免费视频app| 欧美重口乱码一区二区| 啊v视频在线| 伊人夜夜躁av伊人久久| 国产精品裸体瑜伽视频| 国产精品4hu.www| 精品国产一区二区三区久久影院 | 国产丝袜在线视频| 26uuu国产日韩综合| 久久久综合香蕉尹人综合网| 日批视频在线播放| 国产精品色呦呦| 中文字幕不卡每日更新1区2区| 伊人www22综合色| 日本精品www| 最新热久久免费视频| 成人免费黄色av| 禁果av一区二区三区| 伦理中文字幕亚洲|