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

詳解C語言動態跟蹤工具ProbeVue如何調試Java應用程序

開發 后端
在AIX 6.1中引入的ProbeVue是一個動態跟蹤工具。本文詳解C語言動態跟蹤工具ProbeVue如何調試Java應用程序,解釋探測幾種Java函數的語言語法以及訪問函數參數的方法。還討論編寫Vue腳本的要點和限制。

在51CTO的Unix操作系統開發中我們介紹過AIX6 的安全新特性。 AIX 6.1 中引入的 ProbeVue 是一個動態跟蹤工具。它最初的設計目的是動態地跟蹤 C 應用程序和系統中的系統調用。隨著時間的推移,它現在支持調試Java應用程序,還支持獲取實時轉儲和基本系統調用。本文討論 ProbeVue 對 Java 的支持。

ProbeVue 具有以下特性:

◆跟蹤鉤子不需要作為源代碼的組成部分預先編譯。

◆ProbeVue 適用于 32/64 位內核和應用程序,不需要做任何修改。

◆在通過 ProbeVue 放置跟蹤鉤子之前,它們并不存在。

◆可以立即查看跟蹤活動捕捉的跟蹤數據,可以作為終端輸出顯示它們,或者保存到文件中供以后查看。

◆跟蹤鉤子可以應用于任何函數的入口或出口(當前對于系統調用只支持出口探測點)。

◆當探測類型為入口時,可以探測傳遞給函數的參數,這要求在 Vue 腳本的開頭或通過頭文件定義函數原型。

◆通過在出口點應用跟蹤鉤子并指定函數原型,可以探測函數的退出/返回值。

◆可以使用 ProbeVue 進行性能分析和問題調試。

使用 ProbeVue 的前提條件

◆AIX V6.10 和更高版本

◆文件集:不需要特殊的文件集,基本操作系統附帶所需的文件集。

◆在嘗試探測之前需要啟用 ProbeVue 特性,可以使用 SMIT 啟用它。

Vue 腳本語法

◆探測 Java 函數

  1. @@uftjava:PID:*:"fully qualified function name":entry  

◆探測 Java 庫例程:與 Java 函數相同。

命令語法

單獨啟動 Java 應用程序和 ProbeVue

◆Java 應用程序

  1. 對于 32 位:java -agentlib:probevuejava <additional parameters> myjavaapp  
  2. 對于 64 位:java -agentlib:probevuejava64 <additional parameters> myjavaapp  
  3.  

◆ProbeVue

  1. ProbeVue <additional arguments> myscript.e <script arguments> 
  2.  

作為 ProbeVue 的子進程啟動 Java 應用程序

◆對于 32 位:probevue -X <path of java> -A "-agentlib:probevuejava <additional parameters> my javaapp" myscript.e

◆對于 64 位:probevue -X <path of java> -A "-agentlib:probevuejava64 <additional parameters> my javaapp" myscript.e

基本探測示例

基本探測示例:myjava.java

  1. import java.lang.reflect.*;  
  2. import java.util.*;  
  3. import java.lang.*;  
  4.  
  5. class myclass1  
  6. {  
  7.         int i;  
  8.         float f;  
  9.         double d;  
  10.         boolean b;  
  11.         String s;  
  12.         public myclass1(int j)  
  13.         {  
  14.                 i=j;  
  15.         }  
  16.         public void set_i(int j)  
  17.                 {  
  18.                         i=j;  
  19.                 }  
  20.         public void set_f(float j)  
  21.                 {  
  22.                         f=j;  
  23.                 }  
  24.         public void set_d(double j)  
  25.                 {  
  26.                         d=j;  
  27.                 }  
  28.         public void set_b(boolean j)  
  29.                 {  
  30.                         b=j;  
  31.                 }  
  32.         public void set_s(String j)  
  33.                 {  
  34.                         s=j;  
  35.                 }  
  36.         public  void print_i()  
  37.                 {  
  38.                         System.out.println("Value of Integer i:"+i);  
  39.                         System.out.println("Value of Float f:"+f);  
  40.                         System.out.println("Value of Double d:"+d);  
  41.                         System.out.println("Value of Boolean b:"+b);  
  42.                         System.out.println("Value of String s:"+s);  
  43.                 }  
  44. }  
  45. public class myjava  
  46. {  
  47.         public static void main(String args[]) throws java.lang.InterruptedException  
  48.         {  
  49.                 Thread.sleep(60);  
  50.                 System.out.println("In main");  
  51.                 myclass1 MC1=new myclass1(20);  
  52.                 MC1.set_i(10);  
  53.                 MC1.set_f((float)10.03);  
  54.                 MC1.set_d(10.1123);  
  55.                 MC1.set_b(false);  
  56.                 MC1.set_s("ProbeVue");  
  57.                 MC1.print_i();  
  58.                 int [] int1;  
  59.                 int1 = new int[10];  
  60.                 for(int i=0;i<10;i++)  
  61.                 Array.set(int1,i,(int)i);  
  62.                 for(int i=0;i<10;i++)  
  63.                 {  
  64.                         System.out.println(Array.getInt(int1,i));  
  65.                  }  
  66.  
  67.  
  68.         }  
  69. }  
  70.  

執行基本探測的 Vue 腳本:basic_probing.e

  1. @@BEGIN  
  2. {  
  3. // Declare and Initialize the variable to track the number of calls made   
  4. // to Array.set function  
  5.         int Number_Of_Calls_Of_Array_set;  
  6.         Number_Of_Calls_Of_Array_set=0;  
  7. }  
  8. //Probe String to trace the calls to function myclass1.set_d  
  9. @@uftjava:$__CPID:*:"myclass1.set_d":entry  
  10. {  
  11. //Printing the message for user notification that this function has been called  
  12. //By adding ProbeVue tag to message we can easily filter out the ProbeVue messages only.  
  13.         printf("ProbeVue - Entered  myclass1.set_d function \n");  
  14. }  
  15. @@uftjava:$__CPID:*:"myclass1.set_f":entry  
  16. {  
  17.         printf("ProbeVue - Entered  myclass1.set_f function \n");  
  18. }  
  19. @@uftjava:$__CPID:*:"myclass1.set_i":entry  
  20. {  
  21.         printf("ProbeVue - Entered  myclass1.set_i function \n");  
  22. }  
  23. @@uftjava:$__CPID:*:"myclass1.set_s":entry  
  24. {  
  25.         printf("ProbeVue - Entered  myclass1.set_s function \n");  
  26. }  
  27. @@uftjava:$__CPID:*:"myclass1.set_b":entry  
  28. {  
  29.         printf("ProbeVue - Entered  myclass1.set_b function \n");  
  30. }  
  31. @@uftjava:$__CPID:*:"myjava.main":entry  
  32. {  
  33.         printf("ProbeVue - Entered myjava.main function \n");  
  34. // Printing the Process Id and Parent Process Id  
  35.         printf("       Process Id : %ld\n",__pid);  
  36.         printf("Parent Process Id : %ld\n",__ppid);  
  37. }  
  38. @@uftjava:$__CPID:*:"java.lang.reflect.Array.set":entry  
  39. {  
  40.         printf("ProbeVue - Entered java.lang.reflect.Array.set function \n");  
  41. // Increment the count whenever the function is called  
  42.         Number_Of_Calls_Of_Array_set++;  
  43. }  
  44. @@syscall:$__CPID:exit:entry  
  45. {  
  46. // Exit when the application exits  
  47.         exit();  
  48. }  
  49. @@END  
  50. {  
  51. //This is executed when ProbeVue session exits and prints the following message.  
  52.         printf("Number Of times function - \"java.lang.reflect.Array.set\" called is   
  53.    : %d\n",Number_Of_Calls_Of_Array_set);  
  54. }  
  55.  

輸出

  1. # probevue -X `which java` -A "-agentlib:probevuejava myjava" basic_probing.e  
  2. ProbeVue - Entered myjava.main function  
  3.        Process Id : 7209080  
  4. Parent Process Id : 5767168  
  5. In main  
  6. Value of Integer i:10  
  7. ProbeVue - Entered  myclass1.set_i function  
  8. ProbeVue - Entered  myclass1.set_f function  
  9. ProbeVue - Entered  myclass1.set_d function  
  10. ProbeVue - Entered  myclass1.set_b function  
  11. ProbeVue - Entered  myclass1.set_s function  
  12. Value of Float f:10.03  
  13. Value of Double d:10.1123  
  14. Value of Boolean b:false  
  15. Value of String s:ProbeVue  
  16. 0  
  17. 1  
  18. 2  
  19. 3  
  20. 4  
  21. 5  
  22. 6  
  23. 7  
  24. 8  
  25. 9  
  26. ProbeVue - Entered java.lang.reflect.Array.set function  
  27. ProbeVue - Entered java.lang.reflect.Array.set function  
  28. ProbeVue - Entered java.lang.reflect.Array.set function  
  29. ProbeVue - Entered java.lang.reflect.Array.set function  
  30. ProbeVue - Entered java.lang.reflect.Array.set function  
  31. ProbeVue - Entered java.lang.reflect.Array.set function  
  32. ProbeVue - Entered java.lang.reflect.Array.set function  
  33. ProbeVue - Entered java.lang.reflect.Array.set function  
  34. ProbeVue - Entered java.lang.reflect.Array.set function  
  35. ProbeVue - Entered java.lang.reflect.Array.set function  
  36. Number Of times function - "java.lang.reflect.Array.set" called is : 10  
  37.  

訪問參數

除了提供放置探測的功能之外,ProbeVue 還允許收集傳遞給函數的參數值。對于訪問參數,不需要為 ProbeVue 指定函數原型。

注意,Java 應用程序代碼與前一個示例相同,也是 myjava.java。

訪問參數的示例 Vue 腳本

  1. # cat accessing_argument.e  
  2. @@uftjava:$__CPID:*:"myclass1.set_d":entry  
  3. {  
  4. //Declaring Vue variable - d of type double  
  5.         double d;  
  6.         d=__arg2;  
  7.         printf("ProbeVue - Entered  myclass1.set_d function with   
  8.    argument :%llf\n",__arg2);  
  9.         printf("ProbeVue Variable d : %llf\n",d);  
  10. // Above is to demonstrate that argument values could be stored in Vue variables and then  
  11. // either operated and printed or printed directly  
  12. }  
  13. @@uftjava:$__CPID:*:"myclass1.set_f":entry  
  14. {  
  15.         printf("ProbeVue - Entered  myclass1.set_f function with argument :%f\n",__arg2);  
  16. }  
  17. @@uftjava:$__CPID:*:"myclass1.set_i":entry  
  18. {  
  19.         printf("ProbeVue - Entered  myclass1.set_i function with argument :%d\n",__arg2);  
  20. }  
  21. @@uftjava:$__CPID:*:"myclass1.set_s":entry  
  22. {  
  23. //Declaring String type Vue variable - s with its size  
  24.         String s[100];  
  25. //String type variable of Java can be directly copied to String type variable of Vue  
  26.         s=__arg2;  
  27.         printf("ProbeVue - Entered  myclass1.set_s function with argument :%s\n",__arg2);  
  28.         printf("ProbeVue Variable s : %s\n",s);  
  29. }  
  30. @@uftjava:$__CPID:*:"myclass1.set_b":entry  
  31. {  
  32.         printf("ProbeVue - Entered  myclass1.set_b function with argument :%d\n",__arg2);  
  33. }  
  34. @@uftjava:$__CPID:*:"myjava.main":entry  
  35. {  
  36.         printf("ProbeVue - Entered Probed Main\n");  
  37. }  
  38. @@uftjava:$__CPID:*:"java.lang.reflect.Array.set":entry  
  39. {  
  40.         printf("ProbeVue - Entered java.lang.reflect.Array.set function with   
  41.    2nd argument as : %d\n",__arg2);  
  42. }  
  43. @@syscall:$__CPID:exit:entry  
  44. {  
  45.         exit();  
  46. }  
  47.  

輸出

  1. #probevue -X `which java` -A "-agentlib:probevuejava myjava" accessing_argument.e  
  2. ProbeVue - Entered Probed Main  
  3. In main  
  4. Value of Integer i:10  
  5. ProbeVue - Entered  myclass1.set_i function with argument :10  
  6. ProbeVue - Entered  myclass1.set_f function with argument :10.030000  
  7. ProbeVue - Entered  myclass1.set_d function with argument :10.112300  
  8. ProbeVue Variable d : 10.112300  
  9. ProbeVue - Entered  myclass1.set_b function with argument :0  
  10. ProbeVue - Entered  myclass1.set_s function with argument :ProbeVue  
  11. ProbeVue Variable s : ProbeVue  
  12. Value of Float f:10.03  
  13. Value of Double d:10.1123  
  14. Value of Boolean b:false  
  15. Value of String s:ProbeVue  
  16. 0  
  17. 1  
  18. 2  
  19. 3  
  20. 4  
  21. 5  
  22. 6  
  23. 7  
  24. 8  
  25. 9  
  26. ProbeVue - Entered java.lang.reflect.Array.set function with 2nd argument as : 0  
  27. ProbeVue - Entered java.lang.reflect.Array.set function with 2nd argument as : 1  
  28. ProbeVue - Entered java.lang.reflect.Array.set function with 2nd argument as : 2  
  29. ProbeVue - Entered java.lang.reflect.Array.set function with 2nd argument as : 3  
  30. ProbeVue - Entered java.lang.reflect.Array.set function with 2nd argument as : 4  
  31. ProbeVue - Entered java.lang.reflect.Array.set function with 2nd argument as : 5  
  32. ProbeVue - Entered java.lang.reflect.Array.set function with 2nd argument as : 6  
  33. ProbeVue - Entered java.lang.reflect.Array.set function with 2nd argument as : 7  
  34. ProbeVue - Entered java.lang.reflect.Array.set function with 2nd argument as : 8  
  35. ProbeVue - Entered java.lang.reflect.Array.set function with 2nd argument as : 9  
  36.  

注意以下幾點:

◆對于靜態函數,可以使用 __arg1 訪問函數的第一個實際參數。

◆對于非靜態函數,可以使用 __arg2 訪問函數的第一個實際參數,因為作為 __arg1 隱式地傳遞 this 指針。

其他要點

◆ProbeVue 腳本可以使用完全限定名(例如 java.lang.Math.PI)讀取 Java 類中的靜態變量和常量。

◆沒有替代 @@uftjava 的語法。

◆不需要指定函數原型,也不需要頭文件。

◆不需要通過使用 copy_userdata 訪問基本數據類型。

◆Java 的布爾數據類型映射到 ProbeVue 的整數數據類型,1 值代表 true,0 值代表 false。

◆Java 的字符串數據類型映射到 ProbeVue 的字符串數據類型。

◆__pname 提供進程名稱 "java" 而不是應用程序名,比如 myjavaapp。

◆所有其他函數的使用方法相同。

◆可以用 -agentlib:probevuejava 標志啟動 Java 應用程序,但是以后再啟動 ProbeVue 會話。

◆可以探測靜態和非靜態函數。

◆如果在 ProbeVue 命令行上用 -X 選項啟動 JVM,那么只能探測 Java 類中的 main 函數。這迫使 JVM 等到 ProbeVue 啟動之后才啟動 Java 應用程序。

可能實現的場景

◆統計調用某一函數的次數。

◆跟蹤調用各個函數的次序。

◆檢查參數值是否正確。

限制

◆只支持 JVM V1.5 和更高版本。

◆目前不支持訪問數組、實例變量和對象引用。

◆不支持探測重載和多態的函數。

◆目前不支持 get_function Vue 函數。

◆不能探測 Java 函數的出口點,因此不能獲取函數的返回值。

【編輯推薦】

  1. 盤點四大頂級Java編程工具
  2. 簡述Java語言的對象克隆特性
  3. 用Java語言進行Unicode代理編程
  4. 分裂與妥協 IBM的Java平臺策略簡析
責任編輯:佚名 來源: developerworks
相關推薦

2012-02-15 13:26:56

IndexedDB

2016-03-12 21:46:56

Inspeckage應用程序動態分析

2010-04-01 15:10:06

Visual Stud

2022-12-25 18:03:13

Debug原理軟件

2011-05-05 18:08:43

云計算Windows AzuPaaS

2011-04-01 11:01:02

應用程序BlackBerryJava

2010-01-28 09:44:08

C++應用程序

2011-07-06 10:22:31

XCode IOS object-C

2013-04-22 09:21:43

2023-09-22 09:41:28

LinuxC語言

2014-05-22 10:03:29

2013-02-22 09:28:45

MEAP軟件移動應用開發HTML5

2011-05-18 10:42:48

2012-11-28 11:14:39

IBMdW

2010-01-25 16:41:08

C++應用程序

2010-01-14 11:14:47

C++應用程序

2011-11-17 15:17:37

AdobeAIR調試性能

2011-07-26 14:44:53

調試 Xcode

2011-07-07 16:08:41

2009-07-23 13:26:21

點贊
收藏

51CTO技術棧公眾號

91久久国产婷婷一区二区| 欧美日韩国产片| 久久久www免费人成黑人精品| 一级黄色大片视频| 精品国产一区二区三区av片| 在线精品视频一区二区三四| 亚洲第一页在线视频| 免费a视频在线观看| 蜜桃伊人久久| 操91在线视频| 国产男女猛烈无遮挡a片漫画| 国产精品xxx| 亚洲综合久久久| 日韩欧美激情一区二区| 99热这里只有精品3| 99精品视频免费| 久久好看免费视频| 搡老熟女老女人一区二区| 成人高清一区| 亚洲一区二区三区视频在线播放 | 久久人人97超碰精品888| 色哟哟精品观看| 一区二区三区在线免费看| 色婷婷综合视频在线观看| 成年丰满熟妇午夜免费视频| 成人免费在线电影| 风间由美性色一区二区三区 | 日韩一区二区三区国产| 欧美在线一级片| 国内精品视频| 欧美日韩在线电影| 国产xxxxx在线观看| 91麻豆一二三四在线| 国产日韩精品一区| 国偷自产av一区二区三区小尤奈| 99国产精品久久久久99打野战| 久久蜜桃精品| 68精品国产免费久久久久久婷婷 | 99精品视频在线观看播放| 精品一区二区电影| 99免费观看视频| 国色天香久久精品国产一区| 欧美日韩小视频| 欧美 国产 小说 另类| 18aaaa精品欧美大片h| 亚洲免费观看高清在线观看| 亚洲人成网站在线观看播放| 毛片免费在线| 久久久不卡网国产精品二区| 久久精品ww人人做人人爽| 国产小视频一区| 国产成人精品免费| 成人午夜电影在线播放| 国产三级第一页| 国产一区999| 91夜夜揉人人捏人人添红杏| 一级做a爱片久久毛片| 麻豆精品视频在线观看视频| 国产精品久久久久久久av电影 | 99成人免费视频| 韩国v欧美v日本v亚洲| 欧美日韩一级在线观看| 欧美激情1区2区| 欧美激情综合色| 国产一级视频在线播放| 日韩午夜在线| 国产99久久久欧美黑人| 国产一区二区视频网站| 日韩**一区毛片| 国产精品视频一区二区高潮| 中文字幕人妻一区二区在线视频| 蜜臀av在线播放一区二区三区| 国产精品国语对白| 一区二区三区精| 国产精品一二三四区| 操一操视频一区| 男人天堂综合网| 久久久综合视频| 先锋在线资源一区二区三区| 国产人成网在线播放va免费| 亚洲一区二区精品久久av| 国产二级片在线观看| 在线天堂资源| 欧美日本精品一区二区三区| 色偷偷中文字幕| 林ゆな中文字幕一区二区| 亚洲欧美在线x视频| 国产伦理片在线观看| 日韩中文欧美| 亚州精品天堂中文字幕| 波多野结衣一区二区三区在线| 精品亚洲porn| 国产一区二区久久久| 韩国中文免费在线视频| 亚洲欧美日韩国产综合在线 | 午夜精产品一区二区在线观看的| 97偷自拍亚洲综合二区| 欧美激情视频在线免费观看 欧美视频免费一 | 欧美剧在线观看| 4438国产精品一区二区| 国产自产v一区二区三区c| 国产在线播放一区二区| 91caoporm在线视频| 一级精品视频在线观看宜春院| 黄色av网址在线播放| 四虎影视成人精品国库在线观看 | 国产一二三区在线视频| 亚洲欧美日韩国产成人精品影院| 国产成人精品视频免费看| 日韩成人在线电影| 亚洲精品福利在线| 五月天色婷婷丁香| 鲁大师成人一区二区三区| 91老司机在线| 精品亚洲成a人片在线观看| 玉足女爽爽91| 亚洲第一狼人区| 青青一区二区| 欧美成人精品在线视频| 日韩欧美一级大片| 99精品国产一区二区三区不卡| 中文字幕一区二区三区有限公司 | 欧美性猛交xxxx黑人| 久久精品无码一区二区三区毛片| 一本色道久久综合亚洲精品酒店 | 精品一区二区三区久久| 欧美一区视久久| 国产偷倩在线播放| 欧美一区二区三区系列电影| 手机毛片在线观看| 99riav国产精品| 成人免费视频视频在| 日本中文在线观看| 欧美在线观看视频一区二区| 99久久人妻无码中文字幕系列| 欧美99在线视频观看| 国产精品一区二区电影| 黄色av网站在线| 色哟哟精品一区| 中文乱码人妻一区二区三区视频| 欧美日韩中文| 1卡2卡3卡精品视频| 91涩漫在线观看| 在线一区二区三区四区五区 | 97精品人妻一区二区三区在线 | 亚洲欧美日韩在线综合| 欧洲av一区二区| 亚洲免费视频观看| 国产成人无码av| 91玉足脚交白嫩脚丫在线播放| 日本熟妇人妻xxxx| 成人av激情人伦小说| 欧美二区乱c黑人| 亚洲精品字幕在线观看| 亚洲在线中文字幕| www.四虎精品| 99精品热视频只有精品10| 国产一区免费观看| 激情aⅴ欧美一区二区欲海潮 | 黄色免费在线播放| 欧洲一区二区三区免费视频| 日本猛少妇色xxxxx免费网站| 日韩高清不卡一区| 先锋在线资源一区二区三区| 日韩三级一区| 欧美精品在线网站| 国模人体一区二区| 亚洲成av人片| 亚洲永久精品ww.7491进入| 天堂在线一区二区| 亚洲视频精品一区| 欧美日本三级| 韩剧1988免费观看全集| 精品视频一二区| 欧美精品亚洲二区| 青青操视频在线播放| 不卡高清视频专区| 日韩一级片播放| 亚洲成人一区| 国产精品 日韩| 在线观看v片| 中文字幕一区二区三区电影| 国产精品久久欧美久久一区| 一区二区三区欧美久久| 亚洲一区二区三区综合| 蜜臀99久久精品久久久久久软件| 黄瓜视频免费观看在线观看www| 日韩在线成人| 日韩av片免费在线观看| 日本高清中文字幕在线| 精品久久人人做人人爽| 日本中文字幕在线观看视频| 亚洲欧美偷拍卡通变态| 久久久久久久久免费看无码| 美女www一区二区| 丁香婷婷综合激情| 国产不卡一二三区| 1区1区3区4区产品乱码芒果精品| 偷拍自拍在线看| xvideos国产精品| 日韩偷拍自拍| 欧美一二三区在线观看| 狠狠人妻久久久久久综合| 亚洲视频1区2区| 国产精久久一区二区三区| 国产91高潮流白浆在线麻豆 | 日韩高清欧美高清| 91国内精品视频| 日韩欧美成人精品| 久久久久久久久久综合| 欧美精彩视频一区二区三区| 亚洲高清无码久久| 国产精品一区一区三区| 亚洲高清在线免费观看| 亚洲精品护士| 男同互操gay射视频在线看| 国产精品一区2区3区| 国产伦精品一区二区三区四区免费 | 无码国产伦一区二区三区视频| 在线电影欧美成精品| 男人天堂视频网| 狠狠躁夜夜躁人人躁婷婷91| 国产性一乱一性一伧一色| 中文字幕在线不卡一区二区三区| 黑人巨大精品欧美| 国产成人免费视频| 污污动漫在线观看| 亚洲精品美女91| 91视频成人免费| 成人高清av| 国产美女扒开尿口久久久| 偷拍中文亚洲欧美动漫| 久久久久久网站| 免费大片黄在线观看视频网站| 亚洲人午夜精品免费| 少妇人妻精品一区二区三区| 在线播放亚洲一区| 最新中文字幕一区| 午夜精品一区在线观看| 四虎永久免费在线| 中文无字幕一区二区三区 | 国产午夜精品在线观看| 精品人妻伦一二三区久| www..com久久爱| 国产黄色一区二区三区| 久久综合综合久久综合| 国产a级一级片| 国产精品综合色区在线观看| 国产无限制自拍| 亚洲欧美一区在线| 999久久欧美人妻一区二区| 天天插综合网| 一级做a爰片久久| 亚洲宅男一区| 日本电影一区二区三区| 伊人久久大香线蕉| 欧美12av| 日韩av自拍| 亚洲国产另类久久久精品极度| 国产成人一区二区三区影院| 免费成人深夜夜行视频| 欧美成a人免费观看久久| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 亚洲日日夜夜| 国产专区欧美专区| 国产电影一区| 91av一区二区三区| 亚洲精品国产九九九| 久久国产精品久久| 日韩丝袜视频| 欧美日韩国产综合视频在线| 极品束缚调教一区二区网站| 免费在线观看91| 国内精品伊人久久久| 日韩免费三级| 一区二区中文| 久久在线中文字幕| 在线一区免费观看| 国产一伦一伦一伦| 在线激情小视频| 国产精品久久久久三级| 18岁成人毛片| 亚洲一区二区四区蜜桃| 国产午夜小视频| 在线免费观看一区| 国产精品无码天天爽视频| 在线播放中文字幕一区| 在线免费一区二区| 91精品在线观看入口| 国产高清在线免费| 亚洲电影成人av99爱色| 成人在线免费公开观看视频| 中文字幕视频在线免费欧美日韩综合在线看| 成人动漫在线播放| 国模吧一区二区| 电影亚洲精品噜噜在线观看| 国产免费久久av| 美女视频亚洲色图| 日本欧洲国产一区二区| 国产精品久久久久久麻豆一区软件| 国产欧美精品aaaaaa片| 久久久噜噜噜久久狠狠50岁| 天天视频天天爽| 99精品欧美一区二区三区小说| 91成人精品一区二区| 亚洲免费av在线| 亚洲av无码乱码国产精品fc2| 7777精品伊人久久久大香线蕉完整版 | 久久精品国产精品亚洲综合| 18禁一区二区三区| 2欧美一区二区三区在线观看视频| 国产黄色片在线| 欧美日韩国产在线看| 一级特黄录像免费看| 亚洲激情小视频| 182tv在线播放| 日韩美女主播视频| 日韩欧美中文字幕一区二区三区| 神马影院一区二区| 午夜精品久久99蜜桃的功能介绍| 国产视频一视频二| 国产成人在线视频播放| 少妇无套高潮一二三区| 精品国产老师黑色丝袜高跟鞋| 在线观看毛片视频| 日韩h在线观看| 黑人精品视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧洲vs亚洲vs国产| 国产www免费| 精油按摩中文字幕久久| 免费中文字幕av| 亚洲成人手机在线| 国产精品人妻一区二区三区| 日韩电影第一页| 国产色播av在线| 91精品入口蜜桃| 欧美激情第10页| 91精品999| 国产欧美在线观看一区| www.色国产| 日韩av网站电影| 91破解版在线观看| 精品国产_亚洲人成在线| 欧美精品日韩| 激情图片中文字幕| 亚洲视频 欧洲视频| 一级黄色大片网站| 亚洲夜晚福利在线观看| 免费看男女www网站入口在线| 97久久人人超碰caoprom欧美| 欧美日韩1区| 在线观看一区二区三区视频| 中文字幕一区二区三区四区不卡 | 亚洲国产精品尤物yw在线观看| 国产精品伦理一区| 日日骚久久av| 成人黄色在线| 成人在线免费观看网址| 国产在线不卡一区| 人人爽人人爽人人片| 欧美日韩亚洲国产综合| 91精彩视频在线播放| 成人女保姆的销魂服务| 色综合久久网| 777一区二区| 亚洲在线观看免费| www.蜜臀av| 久久久久久久久久久人体| 日韩三区视频| 熟女人妇 成熟妇女系列视频| 91社区在线播放| 久久精品一二区| 亚洲丝袜在线视频| 国产精品欧美一区二区三区不卡| 中文字幕久久综合| 黄页网站大全一区二区| 国产精品成人网站| 日韩av中文字幕在线免费观看| 九色porny丨首页入口在线| 女人一区二区三区| 日本中文字幕一区二区视频 | 亚洲精品mv在线观看| 亚洲激情图片qvod| 少妇高潮久久久| 2024亚洲男人天堂| 自拍视频一区| 色播五月激情五月| 亚洲精品免费在线播放| 日本一二三区在线视频| 国产精品国产自产拍高清av水多| 色婷婷亚洲mv天堂mv在影片| 亚洲天堂伊人网| 亚洲一二三四在线观看| 久热av在线| 成人黄色免费片| 欧美日韩国产一区精品一区| 欧美做受高潮6| 7777精品伊人久久久大香线蕉超级流畅| 日本中文字幕中出在线|