《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > GDBstub的剖析與改進(jìn)

GDBstub的剖析與改進(jìn)

2008-05-27
作者:黃紅燕,史 烈

  摘 要: 討論了GDB遠(yuǎn)程調(diào)試" title="遠(yuǎn)程調(diào)試">遠(yuǎn)程調(diào)試技術(shù)在調(diào)試內(nèi)核、嵌入式系統(tǒng)" title="嵌入式系統(tǒng)">嵌入式系統(tǒng)中的實(shí)現(xiàn),簡(jiǎn)要闡述GDB宿主機(jī)和GDB遠(yuǎn)程串行協(xié)議,詳細(xì)分析GDB調(diào)試代理在內(nèi)核層、應(yīng)用層的各種實(shí)現(xiàn)方法,并提出了一種在不修改操作系統(tǒng)內(nèi)核前提下調(diào)試應(yīng)用程序" title="應(yīng)用程序">應(yīng)用程序的方法。這種方法可移植性強(qiáng),而且消除了修改系統(tǒng)內(nèi)核可能帶來(lái)的隱患,減少了因修改內(nèi)核而帶來(lái)的工作量,在調(diào)試微內(nèi)核操作系統(tǒng)服務(wù)的應(yīng)用中非常有效。
  關(guān)鍵詞: 遠(yuǎn)程調(diào)試 stub GDBserver KGDB 嵌入式系統(tǒng)調(diào)試


  調(diào)試是開(kāi)發(fā)過(guò)程中必不可少的環(huán)節(jié),然而內(nèi)核、嵌入式系統(tǒng)的調(diào)試不同于傳統(tǒng)的調(diào)試系統(tǒng)。通常嵌入式系統(tǒng)不具備使用本地調(diào)試器" title="調(diào)試器">調(diào)試器的能力,原因如下:
  (1)系統(tǒng)自身的資源有限,內(nèi)存小,輸入輸出設(shè)備不能用于調(diào)試。
  (2)傳統(tǒng)的調(diào)試系統(tǒng)需要文件系統(tǒng),而嵌入式系統(tǒng)通常無(wú)文件系統(tǒng),內(nèi)核調(diào)試時(shí)還不支持文件系統(tǒng)。
  (3)調(diào)試器的運(yùn)行本身需要操作系統(tǒng)的支持,因此無(wú)法實(shí)現(xiàn)操作系統(tǒng)內(nèi)核的調(diào)試。
  最有效的解決方法是采用遠(yuǎn)程調(diào)試技術(shù)。遠(yuǎn)程調(diào)試是指調(diào)試器運(yùn)行的環(huán)境(主機(jī))與被調(diào)試的系統(tǒng)(目標(biāo)機(jī))在物理上是分離的、通過(guò)串口或者網(wǎng)絡(luò)進(jìn)行連接的調(diào)試技術(shù)。
  GNU免費(fèi)提供的GDB擁有強(qiáng)大的遠(yuǎn)程調(diào)試功能,它能夠使開(kāi)發(fā)人員以遠(yuǎn)程調(diào)試的方式單步執(zhí)行目標(biāo)平臺(tái)上的程序代碼、設(shè)置斷點(diǎn)、查看內(nèi)存,并與目標(biāo)平臺(tái)交換信息。GDB遠(yuǎn)程調(diào)試的實(shí)時(shí)、動(dòng)態(tài)、方便、免費(fèi)等優(yōu)點(diǎn),使它逐漸成為嵌入式開(kāi)發(fā)首選的調(diào)試方案。
  遠(yuǎn)程調(diào)試系統(tǒng)由三部分組成:主機(jī)上的本地調(diào)試器、目標(biāo)機(jī)上的調(diào)試代理、遠(yuǎn)程調(diào)試協(xié)議,如圖1所示。對(duì)應(yīng)GDB遠(yuǎn)程調(diào)試系統(tǒng)的三部分為:GDB、GDBstub、GDB遠(yuǎn)程串行協(xié)議。下面就這三部分進(jìn)行分析。


1 RSP協(xié)議
  GDB RSP(Remote Serial Protocol)定義了GDB宿主機(jī)與被調(diào)試目標(biāo)機(jī)進(jìn)行通信時(shí)數(shù)據(jù)包的格式。信息的格式是:$數(shù)據(jù)#校驗(yàn)碼。多數(shù)信息使用ASCII碼,數(shù)據(jù)由一系列的ASCII碼組成,校驗(yàn)碼是由兩個(gè)16進(jìn)制數(shù)組成的單字節(jié)校驗(yàn)碼。接收方接收數(shù)據(jù)并校驗(yàn),若正確則回應(yīng)“+”,否則回應(yīng)“-”。通信的內(nèi)容包括讀寫數(shù)據(jù)、控制程序運(yùn)行、報(bào)告程序狀態(tài)等命令。RSP的基本命令從通信對(duì)話角度可以分為兩種:
  (1)請(qǐng)求
  ?:讀當(dāng)前系統(tǒng)狀態(tài)
  g:讀所有寄存器
  G〈register_data〉:寫所有寄存器
  m〈address〉,〈length〉:讀內(nèi)存
  M〈address〉,〈length〉:〈memory_data〉:寫內(nèi)存
  c:繼續(xù)執(zhí)行
  s:?jiǎn)尾綀?zhí)行
  k:終止進(jìn)程
  (2)答復(fù)
  “”:告訴GDB上次請(qǐng)求命令不支持。
  E:告訴GDB出錯(cuò)
  OK:上次請(qǐng)求正確
  W〈exit_status〉:系統(tǒng)在“exit_status”狀態(tài)下退出。
  X〈signal〉:系統(tǒng)在signal信號(hào)下終止。
  S〈signal〉:系統(tǒng)在signal信號(hào)下停止。
  O:告訴GDB控制臺(tái)輸出,這也是惟一向GDB發(fā)出的命令。
2 GDB遠(yuǎn)程調(diào)試功能
  調(diào)試內(nèi)核時(shí)通常還沒(méi)有文件系統(tǒng),而且多數(shù)嵌入式系統(tǒng)由于自身資源的限制不具備文件系統(tǒng),因此將與文件系統(tǒng)有關(guān)的源文件、目標(biāo)文件及符號(hào)表都存放在主機(jī)上,由主機(jī)上的調(diào)試器處理。同樣,調(diào)試用的輸入輸出設(shè)備也是由主機(jī)提供。主機(jī)上的調(diào)試器接收用戶輸入的調(diào)試命令并進(jìn)行預(yù)處理,對(duì)于某些命令(如breakpoint)的處理在主機(jī)GDB上實(shí)現(xiàn),不需要與目標(biāo)機(jī)通信。當(dāng)然,更多的指令需要在目標(biāo)機(jī)調(diào)試代理上實(shí)現(xiàn)。主機(jī)根據(jù)RSP對(duì)預(yù)處理之后的命令進(jìn)行封裝,發(fā)送給目標(biāo)機(jī)上的調(diào)試代理,調(diào)試代理接收命令后作相應(yīng)的處理,并返回信息給主機(jī)上的調(diào)試器。
3 目標(biāo)機(jī)上stub的實(shí)現(xiàn)
  目標(biāo)機(jī)上stub的基本功能是與主機(jī)GDB通信,實(shí)現(xiàn)讀寫內(nèi)存、寄存器,stop、continue指令。主機(jī)GDB與目標(biāo)機(jī)上stub通信的通用模型如圖2。


  目標(biāo)機(jī)與主機(jī)通過(guò)硬件連接,被調(diào)試部分插入stub,GDB與被調(diào)試部分通過(guò)RSP通信。根據(jù)stub所處層的不同實(shí)現(xiàn)不同層的調(diào)試,包括內(nèi)核層、應(yīng)用層的調(diào)試。
3.1 內(nèi)核層調(diào)試模型
  內(nèi)核層調(diào)試模型如圖3,將stub插入到內(nèi)核可以實(shí)現(xiàn)內(nèi)核的調(diào)試。Linux內(nèi)核調(diào)試機(jī)制KGDB就是使用這種模式。KGDB可以分為初始化模塊和控制模塊。


3.1.1 初始化模塊
  修改異常處理" title="異常處理">異常處理函數(shù),使得異常發(fā)生時(shí)進(jìn)入函數(shù)handle_exception( ),GDB就能夠捕獲這些異常。初始化后使用breakpoint( )函數(shù)將系統(tǒng)控制權(quán)直接交給GDB。KGDB對(duì)異常處理函數(shù)的修改基本上可以分為二種,這兩種方式均需先定義宏CHK_REMOTE_DEBUG:
  #define CHK_REMOTE_DEBUG(trapnr,signr,error_code,regs,after) \
  { if(linux_debug_hook!=(gdb_debug_hook*) NULL && \
    !user_mode(regs)) \
    { (*linux_debug_hook)(trapnr,signr,error_code,regs);\
      after;\
    }\
  }
  (1)改變程序的流程,以int3的處理函數(shù)為例。
  #define DO_VM86_ERROR(trapnr,signr,str,name) \
  asmlinkage void do_##name(struct pt_regs*regs,long \
  error_code) \
  { \
  CHK_REMOTE_DEBUG(trapnr,signr,error_code,regs,goto skip_trap)\
  do_trap(trapnr,signr,str,1,regs,error_code,NULL);\
  skip_trap:\
  return;\
  }
  展開(kāi)DO_VM86_ERROR(3,SIGTRAP,″int3″,int3)
  asmlinkage void do_int3(struct pt_regs*regs,long
  error_code)
  { if(linux_debug_hook!=(gdb_debug_hook*)NULL&&!
  user_mode(regs))
  { (*linux_debug_hook)(3,SIGTRAP,errorcode,regs);
    goto skip_trap;
  }
  do_trap(3,SIGTRAP,″int3″,1,regs,error_code,NULL);
  skip_trap:
  return;
  }
  由以上代碼可見(jiàn),進(jìn)入內(nèi)核調(diào)試狀態(tài)后,異常處理函數(shù)就是handle_exception( ),程序流程跳過(guò)了非調(diào)試狀態(tài)時(shí)的處理函數(shù)do_trap( )。
  (2)不改變程序的流程,以異常divide_error 的處理函數(shù)為例。
  #define DO_VM86_ERROR_INFO(trapnr,signr,str,name,sicode,siaddr) \
  asmlinkage void do_##name(struct pt_regs*regs,long error_code) \
  { ……\
  do_trap(trapnr,signr,str,1,regs,error_code,&info); \
  }
  展開(kāi)DO_VM86_ERROR_INFO( 0,SIGFPE,″divide error″,
  divide_error,F(xiàn)PE_INTDIV,regs-〉eip)
  asmlinkage void do_divide_error(struct pt_regs*regs,long
  error_code)
  { if(linux_debug_hook!=(gdb_debug_hook*)NULL&&! user_mode(regs))
  { (*linux_debug_hook)(3,SIGTRAP,errorcode,regs);
  }
  do_trap(0,SIGTRAP,″divide erro″,1,regs,error_code,&info);
  }
  從以上代碼看不出調(diào)試狀態(tài)與非調(diào)試狀態(tài)的區(qū)別,可以看一下do_trap函數(shù)可能會(huì)調(diào)用的函數(shù)die( )。
  void die(const char*str,struct pt_regs*regs,long err)
  { ……
  CHK_REMOTE_DEBUG(1,SIGTRAP,err,regs,)
  ……
  do_exit(SIGSEGV);
  }
  由此可見(jiàn),調(diào)試狀態(tài)下的異常處理函數(shù)還是進(jìn)入了handle_exception函數(shù)。不過(guò)與上面一種異常不同之處在于:異常處理函數(shù)在調(diào)試與非調(diào)試狀態(tài)下的程序流程是相同的,handle_exception只獲取系統(tǒng)當(dāng)時(shí)的狀態(tài),繼續(xù)運(yùn)行的結(jié)果還是do_exit。
  雖然不是所有異常函數(shù)都是按上述兩種方法定義,但本質(zhì)上都一樣。絕大多數(shù)處理函數(shù)的修改屬于第二種,因?yàn)榈谝环N異常是為調(diào)試準(zhǔn)備的。因此在目標(biāo)機(jī)具有調(diào)試輸出設(shè)備的情況下,完全可以不修改第二種異常處理函數(shù)。因?yàn)長(zhǎng)inux內(nèi)核在非調(diào)試狀態(tài)下的異常處理函數(shù)已經(jīng)輸出必要的狀態(tài)信息、出錯(cuò)信息。
3.1.2 控制模塊
  控制模塊與主機(jī)GDB通信的具體流程如圖4。KGDB只調(diào)試內(nèi)核態(tài)程序。handle_exception函數(shù)首先判斷CPU是否處于VM86模式或用戶態(tài),若是則返回;然后接收GDB發(fā)來(lái)的信息,根據(jù)接收的信息作出相應(yīng)的操作和回復(fù)。流程圖內(nèi)的虛線框是所有GDBstub中handle_exception函數(shù)的通用流程。


3.2 應(yīng)用程序調(diào)試模型
  在嵌入式Linux開(kāi)發(fā)領(lǐng)域中調(diào)試應(yīng)用程序常用調(diào)試代理工具GDBserver。其工作原理不是在被調(diào)試應(yīng)用程序內(nèi)編譯stub,而是把被調(diào)試程序作為GDBserver的子進(jìn)程,這樣GDBserver可以利用內(nèi)核提供的代碼跟蹤機(jī)制(ptrace)監(jiān)控被調(diào)試進(jìn)程的運(yùn)行,從而完成調(diào)試任務(wù)。此工作原理與GDB本地調(diào)試相似。其調(diào)試模型如圖5。GDBserver的工作流程是:GDBserver創(chuàng)建子進(jìn)程-〉綁定跟蹤ptrace(ptrace_traceme,,)-〉從主機(jī)傳來(lái)的各種調(diào)試命令通過(guò)GDBserver轉(zhuǎn)化為各種操作需求的ptrace。如果用GDBserver進(jìn)行遠(yuǎn)程調(diào)試,需要內(nèi)核操作系統(tǒng)的支持,包括子進(jìn)程、代碼跟蹤機(jī)制,這樣其他嵌入式系統(tǒng)內(nèi)核工作量會(huì)較大。而且ptrace也有其局限性,例如只能跟蹤子進(jìn)程,在調(diào)試進(jìn)程與被調(diào)試進(jìn)程之間傳送一個(gè)長(zhǎng)字的數(shù)據(jù)。使用通用的調(diào)試模式工作量會(huì)更小。如圖6,在應(yīng)用程序中編譯stub,并在應(yīng)用程序入口處插入斷點(diǎn),程序開(kāi)始將控制權(quán)交給GDB,之后的流程與內(nèi)核層調(diào)試類似。


4 不修改內(nèi)核前提下調(diào)試應(yīng)用程序
  GDB設(shè)置斷點(diǎn)的方式是使用內(nèi)存的讀寫,即將原指令用一個(gè)trap指令代替,使程序執(zhí)行到該指令時(shí)產(chǎn)生單步調(diào)試中斷,然后進(jìn)入異常處理函數(shù),針對(duì)調(diào)試器的各種操作處理函數(shù)作出相應(yīng)的操作。不同的系統(tǒng)提供不同的調(diào)試異常指令,如int3、trap2等。為了使用硬件平臺(tái)提供的斷點(diǎn)指令實(shí)現(xiàn)GDBstub調(diào)試功能,需要改寫這些指令異常處理函數(shù)。因此一般的調(diào)試系統(tǒng)器或調(diào)試代理都要涉及單步調(diào)試指令的處理函數(shù),需要系統(tǒng)內(nèi)核的支持。上面提到的KGDB修改了異常處理函數(shù),GDBserver需要系統(tǒng)內(nèi)核提供ptrace函數(shù)。這種方法存在一些不足:修改內(nèi)核工作量大,移植性差。針對(duì)這些情況可以采用另一種斷點(diǎn)實(shí)現(xiàn)方案:在stub中定義一個(gè)設(shè)置斷點(diǎn)函數(shù)。
  斷點(diǎn)函數(shù)模擬調(diào)試異常指令,保護(hù)現(xiàn)場(chǎng)、調(diào)用異常處理函數(shù)、恢復(fù)現(xiàn)場(chǎng)并將控制權(quán)交給被調(diào)試程序。斷點(diǎn)函數(shù)的基本流程如下。
  #define BREAKPOINT _asm_ _volatile_(″bl ent_exception\n″)
  void debug_trap( )
  { _asm_ _volatile_(″e(cuò)nt_exception: \n″
    保存現(xiàn)場(chǎng)
  ″bl handle_exception \n″
  ″out_exception: \n″
  恢復(fù)現(xiàn)場(chǎng)
  );
  }
  handle_exception( )流程類似圖4中的虛線框部分,實(shí)現(xiàn)的關(guān)鍵是斷點(diǎn)指令的替換。斷點(diǎn)設(shè)置時(shí),從GDB傳來(lái)硬件平臺(tái)提供的斷點(diǎn)異常指令的二進(jìn)制碼,必須將此二進(jìn)制碼替換成stub中新定義的BREAKPOINT二進(jìn)制碼,才能進(jìn)入調(diào)試異常處理函數(shù)。因此在handle_exception( )中,如果收到的請(qǐng)求是“M”,則需要處理數(shù)據(jù),流程如圖7。
  這種方法理論上在內(nèi)核調(diào)試和應(yīng)用程序調(diào)試中都可以使用,但在應(yīng)用程序的調(diào)試中優(yōu)點(diǎn)更明顯。在寫stub時(shí)不涉及內(nèi)核,在調(diào)試應(yīng)用程序時(shí)不需切換到內(nèi)核模式下,直接在用戶模式中即可完成。此方法也存在不足之處。為了實(shí)現(xiàn)現(xiàn)場(chǎng)保護(hù),要求用戶了解系統(tǒng)內(nèi)的寄存器。隨著stub本身復(fù)雜度的增加,其正確性需要更多的檢驗(yàn)。
  加stub的遠(yuǎn)程調(diào)試方法方便而有效,而且可以降低項(xiàng)目成本,在實(shí)際工作中得到廣泛的應(yīng)用。在不修改內(nèi)核前提下調(diào)試應(yīng)用程序的方法已成功應(yīng)用于筆者開(kāi)發(fā)的微內(nèi)核結(jié)構(gòu)的操作系統(tǒng),為系統(tǒng)的開(kāi)發(fā)應(yīng)用提供了良好的調(diào)試手段。當(dāng)然加stub的遠(yuǎn)程調(diào)試方法也存在一些不足。由于stub的應(yīng)用是在串口通信的基礎(chǔ)上,因此串口處理函數(shù)以及stub自身處理函數(shù)的正確性是確保stub安全調(diào)試的前提。
參考文獻(xiàn)
1 李紅衛(wèi),李翠萍.kgdb調(diào)試Linux內(nèi)核的剖析與改進(jìn).微型機(jī)與應(yīng)用,2004;23(10)
2 郭勝超.GDB遠(yuǎn)程調(diào)試及其在嵌入式Linux系統(tǒng)中的應(yīng)用.計(jì)算機(jī)工程與應(yīng)用,2004;26(10)
3 彭進(jìn)展.GRDBS:一種針對(duì)嵌入式系統(tǒng)的通用遠(yuǎn)程調(diào)試系統(tǒng).計(jì)算機(jī)工程,2003;29(2)
4 Gatliff,Bill.Embedding with GNU:the gdb Remote Serial Protocol.Embedded Systems Programming,1999;(9):109
5 Gilmore J,Shebs S.GDB Internals:A Guild to the Internals of the GNU Debugger.Free Software Foundation Inc,1999

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 日韩欧美一区视频 | 377p粉嫩大胆色噜噜噜 | 九热精品| 一区二区三区无码高清视频 | 国产成人久久综合第一区 | 久久综合第一页 | 亚洲人成色77777在线观看 | 中文字幕啪啪 | 精品无码av一区二区三区 | 亚洲最大色综合成人av | 青青草青娱乐 | 国产清纯白嫩初高中在线观看性色 | 国内偷自拍性夫妇 | 久久久久人妻一区二区三区 | 国产精品久久久久久久泡妞 | 美女a视频 | 奇米影视久久 | 亚洲最大在线视频 | 国产精品久久国产精品99 gif | 农村黄毛aaaaa免费毛片 | 日日操网 | 18禁黄网站男男禁片免费观看 | 天堂资源最新在线 | 一级在线免费视频 | 精品日韩在线观看 | 韩国三级hd两男一女 | 伊人天天操| 久久天天躁夜夜躁狠狠85麻豆 | 国产精品99久久久久宅男软件功能 | 中国熟妇浓毛hdsex | 久久久久国产精品免费免费搜索 | 国产亚洲精品久久久久久无几年桃 | 日韩麻豆| 五月天社区 | 欧美乱妇15p | 熟妇激情内射com | 亚洲综合色成在线播放 | 日韩一二三区在线观看 | 91成人在线免费视频 | 精品乱人码一区二区二区 | 99久久久无码国产精品免费 | 国产精品久久久久无码av | 天天爱av | 日本护士╳╳╳hd少妇 | 国产一区二区三区色淫影院 | 欧美午夜精品久久久久免费视 | 久久精品国产中国久久 | 亚洲乱码日产精品bd在线观看 | 久久zyz资源站无码中文动漫 | 亚洲精品欧美综合二区 | 欧美在线www | 男人一边吃奶一边做爰网站 | 亚洲 日韩 激情 无码 中出 | 亚洲综合在线第一页 | 日韩视频免费在线 | xvideos成人免费看视频 | 精品久久久无码中文字幕边打电话 | 开心色站 | 少妇私密推油呻吟在线播放 | 久久精品视频中文字幕 | 91中文字幕在线视频 | 香蕉人人超人人超碰超国产 | 夜夜操国产 | 亚洲毛片视频 | 久久久久欠精品国产毛片国产毛生 | 老司机狠狠爱 | 波多野结衣一区二区 | 亚洲精品12p | 91精品国产一区二区三区动漫 | 黄色一级片在线免费观看 | 两性色午夜免费视频 | 未满十八18禁止免费无码网站 | 又粗又硬的毛片aaaaa片 | 亚洲乱妇熟女爽到高潮的片 | 在线人成免费视频69国产 | 蜜桃久久久久久久 | 性欧美videos另类hd | 先锋资源久久 | √8天堂资源地址中文在线 丰满少妇人妻久久久久久 a片在线免费观看 | 欧美日韩国产色 | 欧美精品久久96人妻无码 | 91网站最新地址 | 亚洲精品一区在线 | 国产精品久久久久久久裸模 | 妺妺窝人体色www看人体 | 伊人网综合网 | 国产日韩欧美视频免费看 | 亚洲一区日韩在线 | 亚洲国产精品av | a级免费网站 | 男人解开女人乳罩吃奶 | 人与野鲁毛片在线视频 | xx中文字幕乱偷avxx | 人与禽性视频77777 | 自拍在线视频 | av老司机在线观看 | 91无限观看 | 亚洲精品一区二区三区婷婷月 | 免费午夜av | 丰满的继牳3中文字幕系列 丰满的少妇xxxxx人伦理 | 9l视频自拍蝌蚪自拍丨视频 | av网站在线免费 | 日韩中文字幕免费观看 | 人妻精品久久久久中文字幕69 | 美女自卫慰免费视频www免费 | 成人日b视频 | 国产一区二区在 | 91丨porny丨海角社区 | 777爽死你无码免费看一二区 | 日韩免费网站 | 在线免费av网站 | 有码在线播放 | 国产伦精品免编号公布 | 调教丰满的已婚少妇在线观看 | 国产精品天干天干在线 | 波多一区| 永久免费在线看片 | 男人的网址 | 香蕉视频影院 | 天天久久 | 国内精品久久久久久久影视蜜臀 | 久久精品99国产国产精 | 青青草视频免费观看 | 色妞网 | 日本黄色大片免费看 | 毛片毛片女人毛片毛片 | 在线观看av的网址 | 亚洲欧美字幕 | 中文字幕在线视频一区二区三区 | 欧美精品中文字幕亚洲专区 | 成人免费av网址 | 天天躁日日躁狠狠躁超碰97 | 阿v天堂在线观看 | 偷拍盗摄高潮叫床对白清晰 | 亚洲综合一二三 | 午夜激情影院在线观看 | 美女100%挤奶水视频吃胸 | 久久久精品99 | 免费午夜爽爽爽www视频十八禁 | 亲子伦一区二区三区观看方式 | jzzijzzij亚洲农村妇女 | 伊人干综合 | 欧美成人精品一区二区三区在线看 | 国产精品一区二区三区四区在线观看 | 久久亚洲精品无码aⅴ大香 人人妻人人玩人人澡人人爽 | 热久久精| 激情久久av一区av二区av三区 | 无码午夜福利视频一区 | 99性视频 | 天天色影网 | 91麻豆精品91aⅴ久久久久久 | 国产精无久久久久久久免费 | 欧美视频在线播放 | 国产va亚洲va在线va | 7777色鬼xxxⅹ欧美色妇 | 久久精品国产亚洲7777 | 欧美裸体xxxx极品少妇软件 | 永无久网址在线码观看 | 日本久久综合网 | 成人国产精品免费视频 | 亚洲综合精品香蕉久久网 | 精品无人区一区二区三区 | 国产精品国产三级国产aⅴ 国产精品国产三级国产aⅴ9色 | 中国一级黄色大片 | 成年人在线免费观看 | 天天舔天天插 | 亚洲狠狠婷婷综合久久 | 僵尸叔叔在线观看国语高清免费观看 | 国产成人免费爽爽爽视频 | 国产十区| 国产精品人成视频免费播放 | 男人的天堂免费av | 男人边吃奶边做好爽免费视频 | 国产三级黄色毛片 | 五月天婷婷免费视频 | 无码一区二区三区在线 | 黄色av观看 | 美女丝袜av | 国产1级片 | 日本高清免费aaaaa大片视频 | 国产高清一区二区三区四区 | 亚洲xx在线 | 国内精品x99av | 各种高潮超清特写tv | 成人手机在线视频 | 加比勒色综合久久 | 噼里啪啦动漫在线观看 | 国产v综合v亚洲欧美久久 | 成人免费8888在线视频 | 97人人看| 亚洲精品在线观看网站 | 久久精品亚洲精品国产欧美kt∨ | 欧美一区二区三区在线视频 | 日本伦理中文字幕 | 久久精品不卡一区二区 | 鲁一鲁天天| 亚洲欲 | 国产丝袜视频在线观看 | 日本中文字幕一区二区有码在线 | 欧美久久99 | 每日在线更新av | 亚洲视频一区在线 | 国产欧美一区二区三区在线看 | 欧美成人看片黄a免费看 | 日韩精品中字 | 免费国产又色又爽又黄的网站 | 日本人裸体做爰视频 | 亚洲欧美另类图片 | 97人人模人人爽人人喊38tv | 成人久久18免费 | 国产精品欧美一区二区三区不卡 | 日韩女优在线观看 | 激情综合区 | xfplay2023成人资源站 | 久久9久久| 欧美三级午夜理伦三级 | 第四色男人天堂 | 麻豆视频国产精品 | 久久久噜噜噜久久中文福利 | 制服丨自拍丨欧美丨动漫丨 | 日批免费在线观看 | 一边摸一边抽搐一进一出视频 | 午夜无码人妻av大片色欲 | 精品少妇一区二区三区免费观 | 伊人天堂在线 | 国产亚洲成人精品 | 手机看片国产日韩 | 亚洲日韩av无码 | 欧美日韩网 | 我要看三级毛片 | 国产成人无码www免费视频播放 | www.五月婷 | 精品一区二区三区三区 | 日本欧美一级 | les欧美xxxxvideo| 夫妻免费无码v看片 | 亚洲а∨天堂久久精品2021 | 高h肉放荡爽全文寂寞少妇 高h肉各种姿势g短篇np视频 | 久久免费视频网站 | 亚洲精品粉嫩美女一区 | www久久久久久久久 www久久久久久久久久 | 大胸美女被吃奶爽死视频 | 成人中文字幕在线观看 | 欧美日韩中文字幕视频 | 日本熟妇毛耸耸xxxxxx | 国产免费自拍视频 | 日本午夜寂寞影院 | 国产精品高潮呻吟视频 | 久久蜜桃资源一区二区老牛 | 日本大乳高潮xxxxx | 国产91黄色 | 中字幕视频在线永久在线观看免费 | 国产成人精品亚洲 | 午夜一区二区国产好的精华液 | 免费看黄色片视频 | 另类专区成人 | 99久热在线精品视频观看 | 欧美黄网站 | 99久热在线精品 | 国产亚洲色婷婷久久99精品 | 一区二区三区视频 | 深夜福利免费视频 | 久久99精品久久久久久hb无码 | 色婷婷综合久久久久中文 | 韩国一级淫一片免费放 | 私人成片免费观看 | 久久99精品九九九久久婷婷 | 忘忧草社区在线www 内射老阿姨1区2区3区4区 | 毛片网在线 | 色老大影院| 男人j进入女人j内部免费网站 | 无限看片在线版免费视频大全 | 天天干导航 | 亚洲精品久久久久中文字幕欢迎你 | wwwav中文字幕 | 欧美激情性做爰免费视频 | 久久精品一区二区国产 | 免费看成人毛片 | 天天色天天射天天操 | 大尺度做爰床戏呻吟沙漠 | 熟妇女人妻丰满少妇中文字幕 | 精品欧美一区二区精品久久 | 久国产精品韩国三级视频 | 操皮视频 | 久操视频在线播放 | 樱花av在线 | 成人免费在线播放视频 | sm在线看 | 国产精品久久久久永久免费 | 国产学生美女无遮拦高潮视频 | 亚洲精品无amm毛片 亚洲精品无码成人aaa片 | 超碰国产天天做天天爽 | 中国极品少妇videossexhd 久久久久成人精品 | 久久久中文网 | 99久久无色码中文字幕婷婷 | 疯狂做受xxxx高潮视频免费 | 日韩性在线 | 日韩三级在线观看 | 中文在线字幕免费观看电 | 亚洲成在人线av | 国产成人无码av一区二区在线观看 | 国产伦精品一区二区三区在线 | 亚洲a√ | 人体内射精一区二区三区 | 婷婷亚洲综合五月天小说 | 美女天天操 | 99色视频| 亚洲美女在线观看 | 日韩亚洲欧美中文字幕 | 日韩欧美国产三级 | 香蕉久久网 | 国内偷拍久久 | 国语啪啪 | 婷婷成人亚洲综合国产xv88 | 精品综合久久久久 | 中文字幕高潮 | 久久人人爽人人爽人人片av软件 | 亚洲爆乳大丰满无码专区 | 色综合久久久无码中文字幕 | 色诱久久av | 久久久久久久综合色一本 | 91色片| 日本黄页网站免费观看 | 国产三区二区 | 全部免费毛片在线播放一个 | 日韩欧美一区在线 | 特级黄色毛片视频片子 | 伊人亚洲综合 | 国产情侣偷国语对白 | 国产一区二区三区四区五区入口 | 久久精品国产一区二区三区不卡 | 久久精品无码专区免费东京热 | 91色乱码一区二区三区 | 久久男人av久久久久久男 | 粉嫩av淫片一区二区三区 | 欧美精品黑人猛交高潮 | 香港av在线 | 中文字幕自拍偷拍 | 国产伦精品一区二区三区免 | 一级免费黄色毛片 | 偷窥自拍五月天 | 国内精品一区二区三区 | 成人h视频 | 免费视频在线观看1 | 精品久久久无码中文字幕天天 | 国产真人毛片 | 少妇做爰免费视频网站图片 | 肉色欧美久久久久久久免费看 | 中文字幕一区二区三区日韩精品 | 亚洲毛片在线 | 欧美整片sss | 99久久精品费精品国产风间由美 | 日韩av高清在线看片 | 亚洲欧洲精品一区 | 免费观看全黄做爰大片国产 | 无码日韩人妻精品久久蜜桃 | 久久久久久91亚洲精品中文字幕 | 日产精品久久久一区二区 | 欧美人与性动交g欧美精器 狠狠躁18三区二区一区ai明星 | 欧美另类高清zo欧美 | 天堂久久天堂av色综合 | 成人三一级一片aaa 成人涩涩 | 一本之道高清码狼人 | 国产三级三级看三级 | 日韩色道 | 男人午夜剧场 | 国产福利免费观看 | 天堂草在线观看 | 超清av在线 | 国产成人一区二区三区 | 激情婷婷综合 | 放荡的少妇2欧美版 | 国产爆乳无码一区二区麻豆 | 国产女人18毛片水真多1kt∧ | 日本aaaaa女人裸体h片 | 动漫av在线 | 国产91热爆ts人妖系列 | 国产天堂视频在线观看 | 国产成人精品一区二区在线小狼 | 国产三级观看 | 色小说在线观看 | 女人18毛片一区二区三区 | 亚洲永久视频 | 女人与拘性猛交视频 | 好av在线 | 国产特级黄色录像 | 亚洲色图88 | 日本污污网站 | 天堂久久久久久久 | 免费无遮挡无码视频在线观看 | xvideos成人免费视频 | 国产高清黄色 | 一本色综合亚洲精品蜜桃冫 | 亚洲精品国产第一综合99久久 | 色网址在线观看 | 天天干狠狠插 | 欧美一级免费在线观看 | 欧美日韩国产免费一区二区三区 | 中文字幕一区二区三区精华液 | 精品国产乱码久久久软件使用方法 | 精品无人区一区二区 | 足疗店女技师按摩毛片 | 国产福利免费观看 | 91国内自产精华天堂 | 性生大片免费观看一片黄动漫 | 国产精品久久久久影院色老大 | www91com国产91| 国产女性无套免费看网站 | 美腿丝袜亚洲综合 | aaa日韩| 日韩在线第二页 | 乌克兰丰满少妇毛片 | 麻豆精品乱码一二三区别蜜臀在线 | 国产成人精品一区二 | 69产性猛交xxxx乱大交 | 久久久久国产精品人妻aⅴ毛片 | 97国产真实伦对白精彩视频8 | 欧美国产一区二区三区激情 | 怡红院毛片 | 国产suv精品一区二区33 | 亚洲第一中文字幕 | 久草女人 | 欧美激情在线 | 国产美女亚洲精品久久久毛片小说 | 91小宝寻花一区二区三区 | 欧美丰满一区二区免费视频 | 亚洲高清aⅴ日本欧美视频 国产suv精品一区二区69 | 久久久网址| 成人午夜视频精品一区 | 亚洲日本香蕉视频 | 大尺度做爰啪啪床戏 | 噼里啪啦免费观看 | 2018自拍偷拍 | 狠狠躁日日躁夜夜躁2022麻豆 | 国产美女免费看 | 国产情侣主伺候绿帽男m | 成人av在线网 | 日韩国产高清一区二区 | 黄色在线观看免费视频 | 久久国产精品精品国产色婷婷 | 欧美激情性生活 | 精品国精品无码自拍自在线 | 国产精品久久天堂噜噜噜 | 精品国精品无码自拍自在线 | 国产网站入口 | 亚洲精品久久久久久下一站 | 国产做无码视频在线观看 | 成人极品视频 | 亚洲国产精品久久人人爱潘金莲 | 六姐妹在线观看 | 久久亚洲精品无码av | 欧美一区二区三区喷汁尤物 | 成人91av | 懂色av一区二区三区四区 | 一本一道a∨波多野极衣 | 日韩黄色三级视频 | 欧美激情乱人伦 | 日韩精品乱码久久久久久 | 亚洲最大免费视频 | 中文日产乱幕九区无线码 | 青青草综合在线 | 免费午夜拔丝袜www在线看 | 国产精品一区在线免费观看 | 五月婷婷一区 | 亚洲色图欧美自拍 | 色欲av无码一区二区人妻 | 亚洲综合一| 亚洲爱婷婷色婷婷五月 | 麻豆av一区二区天美传媒 | a级黄色片网站 | 麻豆91精品91久久久的内涵 | 野战视频aaaaa免费观看 | 亚洲产国偷v产偷v自拍色戒 | 日韩一卡2卡3卡4卡新区亚洲 | 美女视频黄免费看 | 成人精品在线观看 | 欧美成人精品a∨在线观看 香蕉av福利精品导航 | 国产在线国偷精品产拍免费观看 | 欧美一区二区三区四区视频 | 丰满岳妇乱一区二区三区 | av免费在线观看免费 | 91麻豆精品一二三区在线 | 久久狼人亚洲精品一区 | 综合五月 | 欧美激情在线一区二区 | 韩国bj大尺度vip福利网站 | 亚洲视频99 | 欧美精品1区2区 | 越南少妇做受xxx片 越南性xxxx精品hd | 香蕉影院在线 | 午夜久久久久久久久久 | 国产精品乱码高清在线观看 | 日韩一级黄色大片 | 色五月丁香五月综合五月 | 国产精品理论片在线观看 | 天堂а√中文最新版地址在线 | 99精品在线看 | 日本一区二区三区在线播放 | 在线免费观看成年人视频 | av在线官网| 日韩欧美成人精品 | 92国产精品午夜福利免费 | www久色| 各种少妇正面着bbw撒尿视频 | 精品国产18久久久久久依依影院 | 亚洲老女人视频 | 三级在线视频观看 | 动漫精品啪啪h一区二区网站 | 久久精品h | 精品人伦一区二区三区蜜桃免费 | 国产精品美女久久久久久久 | 精品欧美久久久 | a级毛片视频免费观看 | 天堂va欧美va亚洲va老司机 | 久久九九兔免费精品6 | 91香蕉在线看 | 农村人伦偷精品视频a人人澡 | 成人aaa视频 | 日韩av资源| 69sex久久精品国产麻豆 | 一本色道久久综合亚洲精品婷婷 | 好爽好大久久久级淫片毛片小说 | 亚洲高清在线视频 | 久久婷婷五月综合色丁香 | 欧美精品黄色片 | 久久爱99 | 精品免费国产一区二区三区四区 | 毛片一级在线观看 | 亚洲视频不卡 | 成年人色网站 | 国产永久免费观看视频 | 久久久久久久99精品免费观看 | 又黄又爽又色无遮挡免费软件国外 | 台湾佬美性中文网 | 黄色一级毛片 | 永久影院| 国产精品偷伦视频免费还看的 | 女人被狂躁的高潮免费视频 | 四虎影视成人永久免费观看视频 | 国产精品一二三四五区 | 亚洲产国偷v产偷v自拍色戒 | 好吊妞视频988gao免费软件 | 国精无码欧精品亚洲一区 | 一区二区三区日韩视频 | 日本在线色 | 粉嫩久久99精品久久久久久夜 | 小说区 图片区色 综合区 | 成人一级毛片视频 | 亚洲一区二区三区精品视频 | 久久久999精品视频 久久久99久久久国产自输拍 | 精品国产av无码一区二区三区 | 日本一区二区高清视频 | 成人在线综合 | 欧美精品一区二区免费 | 久久精品超碰 | 特污兔网站免费观看 | 91制片厂麻花 | 亚洲视频在线免费 | 亚洲啪啪aⅴ一区二区三区9色 | 国产调教打屁股xxxx网站 | 九九国产在线观看 | 亚洲 欧美 变态 另类 制服 | 国产69精品久久久久男男系列 | 一个人在线免费观看www | 三个熟睡少妇的按摩中文字幕 | 国产精品最新乱视频二区 | 欧美午夜一区 | 欧美日韩精品免费 | 特级少妇| a色视频| 四虎最新网址在线观看 | 深夜福利啪啪片 | 99精品国产丝袜在线拍国语 | 伦hdwww日本bbw另类 | 色综合成人| 成人美女黄网站色大色费全看在线观看 | 日韩在线一卡二卡 | 欧美激情国产日韩精品一区18 | 国产成人精品在线 | 久久久91精品国产一区二区精品 | 中文字幕乱码人妻综合二区三区 | 伊人久久久久久久久久 | 日本免费一区二区三区视频观看 | 一区欧美| 黄色免费观看网站 | 韩国无码色视频在线观看 | 精品国产一区二区三区蜜殿 | 久久久在线免费观看 | 日韩黄色av网站 | 少妇激情一区二区三区视频小说 | 国产制服av | 老女人任你躁久久久久久老妇 | 国产精品亚洲а∨天堂2021 | 在线看黄网址 | 国产精品久久久久久久久久久久 | 国产成人无码精品一区在线观看 | 美国一级特a黄 | 97久久久久| 国产高颜值大学生情侣酒店 | 能看的av网站 | 亚洲乱码国产乱码 | 久久久av男人的天堂 | 亚洲国产成人综合 | 一级黄色片久久 | 精品国语对白 | 中文字幕在线播放av | 中文字字幕 | 久久天堂影院 | 亚洲人成色4444在线观看 | 久久人人爽人人爽人人片av不 | 亚洲国产一区二区在线 | 一区二区三区精品免费视频 | 在线观看视频中文字幕 | 国产精品日韩欧美大师 | 亚洲国产成人久久一区www妖精 |