嵌入式C語言程序調試宏使用技巧!

嵌入式電子 2023-09-15 07:29

01.調試相關的宏

在Linux使用gcc編譯程序的時候,對于調試的語句還具有一些特殊的語法。gcc編譯的過程中,會生成一些宏,可以使用這些宏分別打印當前源文件的信息,主要內容是當前的文件、當前運行的函數和當前的程序行。

具體宏如下:

__FILE__??當前程序源文件?(char*)
__FUNCTION__??當前運行的函數?(char*)
__LINE__??當前的函數行?(int)

這些宏不是程序代碼定義的,而是有編譯器產生的。這些信息都是在編譯器處理文件的時候動態產生的。

測試示例:

#include?

int?main(void)
{
????printf("file:?%s\n",?__FILE__);
????printf("function:?%s\n",?__FUNCTION__);
????printf("line:?%d\n",?__LINE__);

????return?0;
}

02.# 字符串化操作符

在gcc的編譯系統中,可以使用#將當前的內容轉換成字符串。

程序示例:

#include?

#define?DPRINT(expr)?printf("
%s?=?%d\n",?#expr,?expr);

int?main(void)
{
????int?x?=?3;
????int?y?=?5;

????DPRINT(x?/?y);
????DPRINT(x?+?y);
????DPRINT(x?*?y);
????
????return?0;
}

執行結果:

deng@itcast:~/tmp$?gcc?test.c?
deng@itcast:~/tmp$?./a.out??
x?/?y?=?0
x?+?y?=?8
x?*?y?=?15

#expr表示根據宏中的參數(即表達式的內容),生成一個字符串。該過程同樣是有編譯器產生的,編譯器在編譯源文件的時候,如果遇到了類似的宏,會自動根據程序中表達式的內容,生成一個字符串的宏。

這種方式的優點是可以用統一的方法打印表達式的內容,在程序的調試過程中可以方便直觀的看到轉換字符串之后的表達式。具體的表達式的內容是什么,有編譯器自動寫入程序中,這樣使用相同的宏打印所有表達式的字符串。

//打印字符
#define?debugc(expr)?printf("?%s?=?%c\n",?#expr,?expr)
//打印浮點數
#define?debugf(expr)?printf("?%s?=?%f\n",?#expr,?expr)
//按照16進制打印整數
#define?debugx(expr)?printf("?%s?=?0X%x\n",?#expr,?expr);

由于#expr本質上市一個表示字符串的宏,因此在程序中也可以不適用%s打印它的內容,而是可以將其直接與其它的字符串連接。因此,上述宏可以等價以下形式:

//打印字符
#define?debugc(expr)?printf("?#expr?=?%c\n",?expr)
//打印浮點數
#define?debugf(expr)?printf("?#expr?=?%f\n",?expr)
//按照16進制打印整數
#define?debugx(expr)?printf("?#expr?=?0X%x\n",?expr);

總結:

#是C語言預處理階段的字符串化操作符,可將宏中的內容轉換成字符串。

03.## 連接操作符

在gcc的編譯系統中,##是C語言中的連接操作符,可以在編譯的預處理階段實現字符串連接的操作。

程序示例:

#include?

#define?test(x)?test##x

void?test1(int?a)
{
????printf("test1?a?=?%d\n",?a);
}

void?test2(char?*s)
{
????printf("test2?s?=?%s\n",?s);
}

int?main(void)
{
????test(1)(100);

????test(2)("hello?world");
????
????return?0;
}

上述程序中,test(x)宏被定義為test##x, 他表示test字符串和x字符串的連接。

在程序的調試語句中,##常用的方式如下

#define?DEBUG(fmt,?args...)?printf(fmt,?##args)

替換的方式是將參數的兩個部分以##連接。##表示連接變量代表前面的參數列表。使用這種形式可以將宏的參數傳遞給一個參數。args…是宏的參數,表示可變的參數列表,使用##args將其傳給printf函數.

總結:

##是C語言預處理階段的連接操作符,可實現宏參數的連接。

04.調試宏第一種形式

一種定義的方式:

#define?DEBUG(fmt,?args...)?????????????\
????{???????????????????????????????????\
????printf("file:%s?function:?%s?line:?%d?",?__FILE__,?__FUNCTION__,?__LINE__);\
????printf(fmt,?##args);????????????????\
????}

程序示例:

#include?

#define?DEBUG(fmt,?args...)?????????????\
????{???????????????????????????????????\
????printf("file:%s?function:?%s?line:?%d?",?__FILE__,?__FUNCTION__,?__LINE__);\
????printf(fmt,?##args);????????????????\
????}



int?main(void)
{
????int?a?=?100;
????int?b?=?200;

????char?*s?=?"hello?world";
????DEBUG("a?=?%d?b?=?%d\n",?a,?b);
????DEBUG("a?=?%x?b?=?%x\n",?a,?b);
????DEBUG("s?=?%s\n",?s);
????
????return?0;
}

總結:

上面的DEBUG定義的方式是兩條語句的組合,不可能在產生返回值,因此不能使用它的返回值。

05.調試宏的第二種定義方式

調試宏的第二種定義方式

#define?DEBUG(fmt,?args...)?????????????\
????printf("file:%s?function:?%s?line:?%d?"fmt,?\
????__FILE__,?__FUNCTION__,?__LINE__,?##args)

程序示例

#include?

#define?DEBUG(fmt,?args...)?????????????\
????printf("file:%s?function:?%s?line:?%d?"fmt,?\
????__FILE__,?__FUNCTION__,?__LINE__,?##args)



int?main(void)
{
????int?a?=?100;
????int?b?=?200;

????char?*s?=?"hello?world";
????DEBUG("a?=?%d?b?=?%d\n",?a,?b);
????DEBUG("a?=?%x?b?=?%x\n",?a,?b);
????DEBUG("s?=?%s\n",?s);
????
????return?0;
}

總結:

fmt必須是一個字符串,不能使用指針,只有這樣才可以實現字符串的功能。

06.對調試語句進行分級審查

即使定義了調試的宏,在工程足夠大的情況下,也會導致在打開宏開關的時候在終端出現大量的信息。而無法區分哪些是有用的。這個時候就要加入分級檢查機制,可以定義不同的調試級別,這樣就可以對不同重要程序和不同的模塊進行區分,需要調試哪一個模塊就可以打開那一個模塊的調試級別。

一般可以利用配置文件的方式顯示,其實Linux內核也是這么做的,它把調試的等級分成了7個不同重要程度的級別,只有設定某個級別可以顯示,對應的調試信息才會打印到終端上。

可以寫出一下配置文件

[debug]
debug_level=XXX_MODULE

解析配置文件使用標準的字符串操作庫函數就可以獲取XXX_MODULE這個數值。

int?show_debug(int?level)
{
????if?(level?==?XXX_MODULE)
????{
????????#define?DEBUG(fmt,?args...)?????????????\
????????printf("file:%s?function:?%s?line:?%d?"fmt,?\
????????__FILE__,?__FUNCTION__,?__LINE__,?##args)???????

????}
????else?if?(...)
????{
????????....
????}
}

07.條件編譯調試語句

在實際的開發中,一般會維護兩種源程序,一種是帶有調試語句的調試版本程序,另外一種是不帶有調試語句的發布版本程序。然后根據不同的條件編譯選項,編譯出不同的調試版本和發布版本的程序。

在實現過程中,可以使用一個調試宏來控制調試語句的開關。

#ifdef?USE_DEBUG
????????#define?DEBUG(fmt,?args...)?????????????\
????????printf("file:%s?function:?%s?line:?%d?"fmt,?\
????????__FILE__,?__FUNCTION__,?__LINE__,?##args)??

#else
??#define?DEBUG(fmt,?args...)

#endif

如果USE_DEBUG被定義,那么有調試信息,否則DEBUG就為空。

如果需要調試信息,就只需要在程序中更改一行就可以了。

#define?USE_DEBUG
#undef?USE_DEBUG

定義條件編譯的方式使用一個帶有值的宏

#if?USE_DEBUG
????????#define?DEBUG(fmt,?args...)?????????????\
????????printf("file:%s?function:?%s?line:?%d?"fmt,?\
????????__FILE__,?__FUNCTION__,?__LINE__,?##args)??

#else
??#define?DEBUG(fmt,?args...)

#endif

可以使用如下方式進行條件編譯

#ifndef?USE_DEBUG
#define?USE_DEBUG?0
#endif

08.使用do…while的宏定義

使用宏定義可以將一些較為短小的功能封裝,方便使用。宏的形式和函數類似,但是可以節省函數跳轉的開銷。如何將一個語句封裝成一個宏,在程序中常常使用do…while(0)的形式。

#define?HELLO(str)?do?{?\
printf("hello:?%s\n",?str);?\
}while(0)

程序示例:

int?cond?=?1;
if?(cond)
????HELLO("true");
else
????HELLO("false");

09.代碼剖析

對于比較大的程序,可以借助一些工具來首先把需要優化的點清理出來。接下來我們來看看在程序執行過程中獲取數據并進行分析的工具:代碼剖析程序。

測試程序:

#include?


#define?T?100000

void?call_one()
{
????int?count?=?T?*?1000;
????while(count--);
}

void?call_two()
{
????int?count?=?T?*?50;
????while(count--);
}

void?call_three()
{
????int?count?=?T?*?20;
????while(count--);
}


int?main(void)
{
????int?time?=?10;

????while(time--)
????{
????????call_one();
????????call_two();
????????call_three();
????}
????
????return?0;
}

編譯的時候加入-pg選項:

deng@itcast:~/tmp$?gcc?-pg??test.c?-o?test

執行完成后,在當前文件中生成了一個gmon.out文件。

deng@itcast:~/tmp$?./test??
deng@itcast:~/tmp$?ls
gmon.out??test??test.c
deng@itcast:~/tmp$?

使用gprof剖析主程序:

deng@itcast:~/tmp$?gprof?test
Flat?profile:

Each?sample?counts?as?0.01?seconds.
??%???cumulative???self??????????????self?????total???????????
?time???seconds???seconds????calls??ms/call??ms/call??name????
?95.64??????1.61?????1.61???????10???160.68???160.68??call_one
??3.63??????1.67?????0.06???????10?????6.10?????6.10??call_two
??2.42??????1.71?????0.04???????10?????4.07?????4.07??call_three

其中主要的信息有兩個,一個是每個函數執行的時間占程序總時間的百分比,另外一個就是函數被調用的次數。通過這些信息,可以優化核心程序的實現方式來提高效率。

當然這個剖析程序由于它自身特性有一些限制,比較適用于運行時間比較長的程序,因為統計的時間是基于間隔計數這種機制,所以還需要考慮函數執行的相對時間,如果程序執行時間過短,那得到的信息是沒有任何參考意義的。

將上訴程序時間縮短:

#include?


#define?T?100

void?call_one()
{
????int?count?=?T?*?1000;
????while(count--);
}

void?call_two()
{
????int?count?=?T?*?50;
????while(count--);
}

void?call_three()
{
????int?count?=?T?*?20;
????while(count--);
}


int?main(void)
{
????int?time?=?10;

????while(time--)
????{
????????call_one();
????????call_two();
????????call_three();
????}
????
????return?0;
}

剖析結果如下:

deng@itcast:~/tmp$?gcc?-pg?test.c?-o?test
deng@itcast:~/tmp$?./test??
deng@itcast:~/tmp$?gprof?test
Flat?profile:

Each?sample?counts?as?0.01?seconds.
?no?time?accumulated

??%???cumulative???self??????????????self?????total???????????
?time???seconds???seconds????calls??Ts/call??Ts/call??name????
??0.00??????0.00?????0.00???????10?????0.00?????0.00??call_one
??0.00??????0.00?????0.00???????10?????0.00?????0.00??call_three
??0.00??????0.00?????0.00???????10?????0.00?????0.00??call_two

因此該剖析程序對于越復雜、執行時間越長的函數也適用。

那么是不是每個函數執行的絕對時間越長,剖析顯示的時間就真的越長呢?可以再看如下的例子

#include?


#define?T?100

void?call_one()
{
????int?count?=?T?*?1000;
????while(count--);
}

void?call_two()
{
????int?count?=?T?*?100000;
????while(count--);
}

void?call_three()
{
????int?count?=?T?*?20;
????while(count--);
}


int?main(void)
{
????int?time?=?10;

????while(time--)
????{
????????call_one();
????????call_two();
????????call_three();
????}
????
????return?0;
}

剖析結果如下:

deng@itcast:~/tmp$?gcc?-pg?test.c?-o?test
deng@itcast:~/tmp$?./test??
deng@itcast:~/tmp$?gprof?test
Flat?profile:

Each?sample?counts?as?0.01?seconds.
??%???cumulative???self??????????????self?????total???????????
?time???seconds???seconds????calls??ms/call??ms/call??name????
101.69??????0.15?????0.15???????10????15.25????15.25??call_two
??0.00??????0.15?????0.00???????10?????0.00?????0.00??call_one
??0.00??????0.15?????0.00???????10?????0.00?????0.00??call_three

總結:

在使用gprof工具的時候,對于一個函數進行gprof方式的剖析,實質上的時間是指除去庫函數調用和系統調用之外,純碎應用部分開發的實際代碼運行的時間,也就是說time一項描述的時間值不包括庫函數printf、系統調用system等運行的時間。這些實用庫函數的程序雖然運行的時候將比最初的程序實用更多的時間,但是對于剖析函數來說并沒有影響。

10.附錄

嵌入式Linux上的C語言編程實踐

原文鏈接:https://blog.csdn.net/dengjin20104042056/article/details/107692688


定期以通俗易懂的方式分享嵌入式知識,關注公眾號,加星標,每天進步一點點。


聲明:

本號原創、轉載的文章、圖片等版權歸原作者所有,如有侵權,請聯系刪除。

?

關注、點贊、在看、轉發,支持優質內容!?

評論
  • 做藍牙音箱的工程師大概都碰過這個局面。產品要連手機放歌,要本地播開機提示音和按鍵音,還要接 App 做配網和狀態上報。三件事拆開,早先的常規做法是音頻藍牙一顆料、數傳藍牙一顆料、本地播放再掛一顆小 MCU 加一片 Flash。板子越畫越大,BOM 越算越貴,待機電流和固件工作量也跟著漲。WT2605C 出來以后,這套需求可以集成到一顆芯片,就是 WT2605C-32N,該芯片采用QFN32 封裝,4×4 毫米,把音頻藍牙、BLE 數傳和 MP3 本地播放三樣全包了。對藍牙音箱來說,最實在的好處就
    唯創知音語音芯片 2026-08-06 15:14 255瀏覽
  • 在EMC測試過程中,傳導發射(Conducted Emission,CE)超標是工程師最常遇到的問題之一。更令人頭疼的是,同樣的超標曲線背后,可能對應著完全不同的干擾機理:有的是差模噪聲沿電源回路傳播,有的是共模電流通過寄生路徑耦合,還有些問題甚至并非來自電源本身,而是負載、電纜布局或接地結構引起的連鎖反應。 · 150kHz~1MHz 超標:多為差模噪聲為主,干擾沿火線-零線回路傳輸。 · 1MHz~30MHz 超標:通常共模噪聲占主導,干擾通過火線/零線對地回路傳播。 如果條件允許,用電流探
    譽磁電磁兼容EMC 2026-07-31 18:45 495瀏覽
  • 摘要在防爆電氣設計中,只參照芯數選型而忽略額定載流量,長期滿負荷運行會出現插頭發熱、接觸面氧化、IP67 密封受熱老化等問題。結合常用 3 針 3 孔、4 芯、5PIN、8PIN 圓形防爆連接器,制作分級電流參數對照表,區分冷壓免焊接、焊接兩種接線結構的安全載流數值,設置合理電流冗余系數,搭配使用環境修正參數,規范防爆接近開關連接器、防爆法蘭插座的選型計算方式。關鍵詞圓形防爆連接器,載流參數表,防爆法蘭插座,防爆端子接頭,IP67 防爆防水接插件1 產品概述圓形防爆連接器觸點載流能力由插針直徑、
    kyfbest科迎法電氣 2026-08-03 09:18 128630瀏覽
  • 文:杜杰編輯:侯煜當地時間7月28日,美國特朗普政府落地最新科技封鎖政策,美國聯邦通信委員會(FCC)正式更新《受管制清單》,新增兩大類設備——境外生產的先進機器人設備、境外生產的聯網電力逆變器。FCC在官方情況說明書中明確,該類境外制造產品,“會對美國國家安全或美國民眾的人身安全構成無法承受的風險”。本次新規設置明確豁免機制:經美國國防部(DoW)、電力逆變器品類經美國國土安全部(DHS)審核并授予“有條件批準”,認定對應設備品類不存在重大安全風險,即可獲得準入豁免。同時政策嚴格執行新老劃斷原
    華爾街科技眼 2026-08-03 21:28 321瀏覽
  • ?摘要:低價大流量卡正全面退市,政策收緊已成定局。面對傳統號卡的不確定性,隨身WiFi憑借穩定連接、多設備共享、獨立設備和靈活套餐等優勢,成為務實可靠的備選方案。1、流量卡黃金時代要結束了通信行業正迎來一場前所未有的“地震式”調整——曾讓無數用戶追捧的低價大流量卡,正在全速退出各大平臺。這早已不是一次普通的競合,而是一場趨勢性的行業洗牌。回望過去,19元200G的神卡,那時真是“睡著都能笑醒”,便宜到不敢相信,爽到忍不住炫耀。那些日子,好像隨便刷、隨便看,流量自由觸手可及。可如今,回頭再看,那種
    愛上電路設計 2026-08-03 10:21 128859瀏覽
  • 產品使用18V供電,配套4串鋰離子電池,需要設計一個充電器。因為輸入18V,電池最高 16.8V,壓差僅 1.2V。因為壓差太小。使用開關型的充電控制芯片不穩定。嘗試自行設計一個。整體采用分立三極管 + TL431架構,分4個功能單元:使能控制回路、限流環路、TL431 精密恒壓反饋環路、PNP 功率管主功率輸出回路;實現完整鋰電池充電邏輯。使能控制回路按鍵按下:5V 電壓經 R12 (2kΩ) 送入 NPN 管 Q3 基極,Q3 飽和導通,對地拉低 R1、R2 組成的分壓控制節點電位;該節點直
    southcreek 2026-08-07 13:45 302瀏覽
  • 在前六期中,我們已經分別討論了 CRA 的適用范圍、整體影響、漏洞通報義務、風險評估與技術文檔證據鏈、第三方組件與 SBOM 供應鏈治理,以及產品上市后的支持期、安全更新、用戶說明和終止支持管理。到這里,企業已經能夠回答幾個核心問題:產品是否落入 CRA 適用范圍,產品由哪些組件構成,企業如何證明自己在設計、開發和上市前采取了必要的安全措施,以及產品上市后如何持續維護和安全下線。但對于真正準備落地 CRA 合規的企業來說,還有一個更現實的問題:CRA 的法規條文相對原則化,企業應當如何把“網絡安
    虹科云科技 2026-08-03 16:51 137594瀏覽
  • 導語在現代高速數字電路設計中,信號的完整性已不僅是理想波形推演,而是一場與物理非理想特性正面博弈的工程實踐。濾波器芯片作為凈化傳輸鏈路的關鍵屏障,其核心挑戰在于:能否有效識別并濾除那些隱匿在電平跳變過程中的亞納秒級瞬態脈沖干擾,這類干擾持續極短,卻足以在高速鏈路中引發誤觸發。然而,傳統函數發生器受限于采樣率與邊沿速率,根本無法忠實復現如此狹窄且陡峭的異常波形。針對此困境,德思特TS-AWG7000系列任意波形發生器以17 GS/s采樣率與50 ps原生邊沿速度,為瞬態脈沖提供精細刻畫,配合SPG
    德思特測試測量 2026-08-05 14:06 5瀏覽
  •                                                                        
    廣州鐵金剛 2026-08-06 17:44 88684瀏覽
  • 在物聯網從“萬物互聯”邁向“萬物智聯”的進程中,LTE Cat.1憑借其在速率、成本與網絡覆蓋之間的完美平衡,正成為中低速物聯網市場的絕對主力。隨著2G/3G網絡的逐步退網以及新國標對終端設備智能化、定位功能的強制要求,Cat.1模組迎來了爆發式的增長窗口。在這一關鍵節點,基于華為海思Hi2131芯片設計的LTE Cat.1模組,憑借其在能效、射頻、架構及物理規格上的底層創新,成功打破了“高性能必高功耗”的傳統魔咒,為行業提供了極具競爭力的連接最優解。核心技術優勢:重塑Cat.1能效與連接標桿海
    用戶1778981989717 2026-08-05 21:04 158瀏覽
  •        很多人只見過封裝在SMD外殼里的小尺寸晶振,卻不知道一顆2016、1612甚至1210封裝的微型石英晶振,從一塊巴掌大的石英原礦,到最終能穩定起振的成品,要經過十幾道精密工序。它內部的石英晶片厚度最薄不到20微米,比普通A4紙的1/5還薄,整個生產過程里哪怕0.1微米的誤差,都會直接廢掉整批產品,這也是小尺寸晶振過去長期依賴進口,國內廠商花了十幾年才啃下量產硬骨頭的核心原因。1. 原石定向切割:0.01度的角度誤差都不能有小尺寸晶振的第一步,
    TKD泰晶科技 2026-08-07 08:43 348瀏覽
我要評論
0
點擊右上角,分享到朋友圈 我知道啦
請使用瀏覽器分享功能 我知道啦
主站蜘蛛池模板: 刀郎2002年的第一场雪| 法版《行政助理》在线| 海豚人图片| 悬疑剧《重影》| 销售的销售秘密3HD中字| 公之浮中手2| 摔跤在线| 电影老板的女儿满天星| 夜的第七章短剧| 梁山伯与祝英台电视剧免费全集| 三年在线现看免费大金三年中文| 佳能ixus115| 年轻的瘦子 5| 大话三国全集| 爱回家之二人世界| 韩剧《母亲》免费观看| 郑福浩烈士| 爱的迷局| 致命速递2| 《xl司令》在线观看完整版动漫 | 高雅监狱| 电视剧折腰免费看| 水蜜桃5美国伦理| 3肉脯团国语完整版| 特邀送货员4| 记者:目前梅西无意与巴黎续约| 年经年经母年经7| 人民的正义 电视剧| 非洲版娃娃脸2| 《和部长一起去出差旅》遇到暴雨 | 美国电影禁忌4| 妻子的肉体偿还| 电影 廊桥遗梦| 男女一起愁愁愁免费全集电视剧免费 | 法国足球宝贝2完整版在线看| 《夫妻快乐宝典》完整| 凯莉布鲁克满天星三部曲是哪| 土豆粉培训| 姐姐的男友2字id| 闪婚媳妇得宠坏全集免费播放| 夏目友人帐电影高清免费观看| 无忧公主| 都市小神医短剧全集| 一起又看流星雨14| 《新的景色》| 《大梦归离》| 高清杀手记忆 第一季| 狸猫换太子传奇全集| 有罪之身 电视剧| 紫钗奇缘高清国语版| 草莓之夜电影版在线观看| 辘轳女人和井全26集| 《还债十日》| 破晓之爱国语版| 人狼特种部队免费完整版在线观看| 电视剧邻居也疯狂| 花丝网花制作| 惊魂今晚夜| 姐姐韩国电影在线观看全集| 芭比美人鱼历险记国语版| 花与蛇电影| 东辽县| 高清《爱上朋友的母亲》电影| 美容院的待遇8免费电影| 老严有女不愁嫁片尾曲 | 日本韩国免费看的电影电视剧| 大侦探福尔摩斯2迅雷下载| 《妈妈爱上儿子同学》结局全集| 君扬兄茶杯头| 漂亮的小姨韩剧免费观看完整版电视剧中文| 三打白骨精剧情攻略| 电影强奸| 33d蜜桃成熟时| 高清当哒当:邪视| 高清棒球大联盟未删减| 孩子快抓紧妈妈的手| 亲爱的妈妈3在线韩国免费观看| 全职猎人63| 廉政行动2011电视剧| 野蛮的托姆| 牙医姐妹在线看完整版高清电影| 美女大战精子1| 强伦轩办公室女教师HD| 团鬼六:绳责| 《部长出差的日子》2| 邻居姐姐| 爱在日落之前吻戏| 美人图快播| 谈股论金股市聊聊吧| 大田县| 你太过分了韩剧| 369你懂的视频| 韩国电影姐姐免费完整版| 《炸天小姐》免费| 欢笑老弄堂| 需要爸爸播种电影免费观看| 暗花国语| 小菊的春天电视剧全集完整版| 不说谎恋人免费观看全集| 夏有乔木 雅望天堂1| 蓝燕 蝴蝶之吻| 这省凭什么春节游客量第一| 电影《女子护卫队》在线观看| 侯门嫡女:宅斗冠军是我短剧全集 | 法国护士长在线免费观看| 女神降临第三集| 尸奶俱乐部在线| 绽放 孙佳仁| 行尸走肉第一季04| 无限春光27 豆瓣| 情迷电影| 开国少将邹衍逝世| 她很漂亮韩剧高清在线观看| 静乐县| 半是蜜糖半是伤免费观看全集完整版 | 舒淇主演《玉女心》电影免费观看| 四位大学位按摩记的背景和历史背景 | 安娜色情HD未删版| 德国空乘4正片| 开平市| 妻子6免费的电视剧完整版| 三个女按摩师记| 世上最不得安人3完整版在线观看| 插曲的痛60集全免费播放剧情介绍 | 坎贝奇《无憾》完整版电影在线观看| 警车动画片全集免费观看| 需要爸爸的种免费观看| 《即兴卧底》| 慈禧电影| 执法女先锋满天星版3| 雪豹坚强岁月电视剧| 中国刑警电视剧全集免费观看高清 | 蒋依杉个人资料| 甜美日系风| 还珠格格三| 明星大侦探第三季| 地下城与西游记全集| 年轻的小婊一级A片国产| 《我的漂亮老师2| 弹珠汽水猴子| 十七岁免费观看完整版| 罗曼史 快播| 私人女子| 爱情公寓3在线观看| 理发店里的特殊待遇4在线观看| 监狱女兵免费版| 电影《水电工人的艳遇| 点点星光免费观看完整版| 徐良小凌演唱会| 影片《夫妻的快乐旅游》在线观看 | 牟氏庄园电视剧全集免费观看| 爱丫爱丫免费观看高清版短剧| 饥饿游戏2:星火燎原| 秀婷程仪公欲息肉婷在线观看| 《还珠格格》第三部| 新版月光宝盒看大片免费吗| 《美丽妻子替丈夫还债》电视剧全集| 多大点事| 《爱你几何》免费观看全集| 新娘十八岁韩剧| ボクの弥生さん| 借种 在线观看| 公之浮手完整版免费看| 扫黑风暴28集免费看| 妻子8免费完整版高清在线观看全集 | 回复术士的重来人生 樱花动漫漫画| 利箭行动| 全金属外壳电影| 斯巴达第4季免费观看完整版| 流星蝴蝶剑联网| 以爱为契电视剧免费观看| 萧红电影高清免费观看| 电视剧薄冰在线观看全集免费高清| 和部长一起去出差旅日本电影简介| 河南一家6口被杀 警方通报| 好莱坞秘密花园免费观看完整版| 黑帮大佬和我的365天 第二| 花蜜花液一女N男| 佛坪县| 恶魔少爷别吻我第二季| 美女脱个精光扒开| 亲切的金子电影完整版| 山海情免费全集在线观看 | 星空在线观看免费| 七大罪第一季| 电影魔镜号中文字幕| 亲情暖我心电视剧全集| 成年以后千万别整牙| 离婚协议电视剧全集| 小巷人家40| 吴健版《农民伯伯2》电影免费观看 | 少帅电视剧全集下载| 回复术士的重启人生4集在线观看 抓娃娃免费观看完整版高清电影 天空之城钢琴曲教学 | 如果不是本命就好了全集观看| 周星驰鹿鼎记1| 冰雪尖刀连在线观看| 宋孝敏在《露营地》里扮演谁| 人间中毒百度影音| 福州 劫持人质| 欧式少女16集全视频| 密室大逃脱第五季大神版免费| 电视剧绝杀在线观看| 禁区正片免费高清观看| 穿越火线下载 迅雷| 在游泳池边做爱 韩国| 伦敦奥运会男篮决赛录像 | 金瓶艳谈| 检测地沟油的方法| 孩子今天妈妈给你| 美容美发店里的特殊待遇中文字幕| 爱在日落之前国语版| 成熟玫瑰| 1-40酒店集免费观看| 情色姐妹| 《特别面试》免费观看| 思念爱电影免费完整| 美国版《灭火宝贝1》免费观看在线中| 布莱泽奥特曼普通话2023| 隐秘的真相短剧免费观看| 牵牛的夏天手机铃声| 说谎的爱人在线观看| 神医传奇电视剧免费观看| 足疗技师输出学校| 郑家榆电视剧| 三年大片三年大全免费观看国语| 水落石出3| 到了三十岁还是处似乎会变成魔法师| 花咒电影| 樊振东看霉霉演唱会| 粉红大白菜在线观看| 兰州老肥熟全程露脸| 奔跑吧第12期画中人| 弟弟的女友 电影| 繁花电视剧免费版| 魔女的考验日语| 奔跑吧第五季在线观看免费完整版| 龚玥菲新剧全集在线观看高清| 《最高の爱人沼》剧情解析| 海霞免费| 《丰胸按摩理疗》在线观看| 3d蒲团肉完整版电影| 插曲的痛60全集免费观看高清版古装 | 一门三司令在线观看| 王的女人谁敢动| 高压监狱2法板145分钟| 《真相》在线观看免费| 特殊美容院的待遇韩国| 樱兰高校的男公关部| 齉龘齉齾爩麤龗灪龖厵纞虋| 人民警察电视剧| 阿旺新传3| 钢管捆绑暴菊强奸电影茌钱免费观看| 不完美的受害者电视剧| 普通话版1-5集在线观看 | 经常请吃饭的姐姐| 浪浪人生未删减| 新金瓶梅什么时候播出| 美容院特殊待遇4| 爱情睡醒了28| 屠宰娃娃完整高清在线观看| 美容是特殊待遇5| 发际红第四部| 艺校女学生滋味1~10| 高清《挡不住的疯情》| 罪夜之奔| 理想之城免费观看完整版电视剧| 股海明灯| 高压监狱2高压法版| 飞刀问情电视剧免费观看| 历史的天空| 于无声处 电视剧| 汇仁胜宝| overflow第一季免费观看全集动漫 | 索多玛120 日韩电影免费| 金瓶梅1-5集观看完整版| 恋恋维纳斯泰剧| 塔日酒店未删减版在线观看| 快乐老友记第一季免费观看高清| 听说你喜欢我在线观看| 城口县| 了不起的女孩电视剧| 美姊妹牙医| 绽放的许开心免费观看| 伦理《法国空乘5》HD| 十二金刚| 《特殊游泳教练》在线观看| 动画情侣剧烈做运动的表情包| 沧元图第二季2集完整版 | 娃娃脸 4| 完美真相优酷| 娃娃脸5| 男与女完整版电视剧| 韩版同学的妈妈| 西出玉门电视剧免费观看完整版| 爸爸的播种| 千百惠走过咖啡屋现场版| 星辰影院免费观看完整版电影狂飙| 大叔小馆第1季完整版| 风中奇缘全集| 女员工的付出中字1230| 《暮光之城4:破晓(下)》| 色戒未删减版电影 完整版| 废后逆袭:登顶太后全集免费| 金太狼的幸福生活2| 人世间电视剧全集免费观看41集| 庆帝到底想把皇位给谁| 做aj的电视剧大全国外欧美| 85老版隋唐演义电视剧| 痰多最怕一味药| 倒霉爱神在线观看| 反黑路人甲粤语| 藏海传电视剧免费观看完整版高清| 电影《恶行》在线观看| 兴安县| 高压监狱完整版| 酒店刺激战场免费观看| 女子练瑜伽式骑车惊呆路人| 高压监狱《3》伦理| 密室大逃脱第六季在线免费观看 | 罗丽星克莱尔电影全集| 霍尔的移动城堡国语| 人间中毒在线观看未删版完整版| 笑傲江湖29| 我是刑警全部演员表| 公之浮手中字在线观看完电影 | 男生女生一起相差差差差免费观看电视剧| 大都市小爱情 电视剧| 天空之城国语版高清| 女战狼6国语高清免费看| 黑暗荣耀未删减版| 特殊保险公司推销员8中文| 真假千金:真神大佬短剧全集| ‘私人女子监狱| 家有一老全集| 我的1997电视剧| 哪个APP可以看奥运会回放| 就是这样 电影| 水月洞天全集| 刘宝瑞单口相声测字| 八戒8免费观看完整版电影| 电视连续剧与狼共舞| 韩剧《无法抗拒的你》全集| 新闻女王免费观看全集完整版| 变形金刚08动画| 东北往事黑道风云20百度影音 | 情深深雨蒙蒙全集免费观看| 笑傲江湖中东方不败是男是女| 浮之手3| 疯狂汉堡| 电视剧欢颜| 门不当户不对电视剧| 回复术士118集真人版免费| 白看电视| 中毒韩国电影| 前任四再见前任在线观看免费| 男生女生相愁愁愁电视剧在线观 | 心情好的日子22| 神偷奶爸国语| H版《激战丛林》中文完整版| 暗夜传说4| 情爱天空| 听风者 在线观看| 驯服维修工资人员5剧情简介| 《还珠格格》2| 入室强奸在线免费观看| 花月电视剧免费观看| 特别酒店2_午夜电影全集_完整版免费在线观看 | 顾客付82.9店家到手36.31| 高考结束儿子表白妈妈| 大公教育| 战狼6免费高清完整版下载| 哈利波特6免费观看在线完整版| angelababy最新电影| 莲花楼电视剧免费观看| 谎言与间谍啄木鸟2剧情简介| 三级日本高清完整版热播| 诱人的秘书BD在线观看| 《伦理按摩2》电影| 禁忌2电影在线观看| 你的婚礼| 森奈奈子 在线| 天网行踪电视剧全集免费观看| 辣妹子电视剧免费播放| 善良的岳母娘| 金鸡sss| 三年成全在线观看免费高清电视剧 | 美国禁忌3睫毛膏| 波斯王子| 卧底48天全集在线看| 观音传奇| 公的浮之手| 错嫁豪门全集免费| 大女人小男人全集32| 最后的王爷电视剧免费观看| 欧美z0zo人与劲物在线观看| 凯登克罗斯的电影免费观看| 电视剧借枪全集免费播放完整版| 莫妮卡爱我几何完整版在线| 和尚爱上女子日剧的电视剧| tube8| 樊哈儿传奇全集| 都是天使惹的祸免费观看| 火山两人没有打马赛| 范丞丞演的电视剧| 陈明月微博| 法国版满天星女版免费看 | 伊波拉病毒国语版电影| 群星追忆张国荣2012演唱会| 农村三人行| 插曲的痛30集全集在线观看免费下载 | 免费观看甜蜜惩罚| 女友的妈妈4完整视频有翻译英文| 圣特罗佩的姑娘们在线播放| 《痴心劫》理伦片在线观看| 余姚市| 《特殊瑜伽精油课》| 东京暗鸦第二季| 爱我有几何完整版哪里看| 《外出》2015版| 朴诗妍《爱的释放》| 亲爱的妈妈是5在线观看完整| 关山暮雪| 欲望校园车永莉完整电影在线看视频| 小s吴奇隆| 《亲爱的》在线观看电视剧免费| 韩国奇妙的发型屋免费观看原版 | 丹巴县| 错恨电视剧全集播放| 黎明前的暗战电视剧| 美景之屋6:我的完美人生免费观看完整版 | 乍见欢短剧免费看| 爱我就别想太多在线观看电视剧| 《猫女的诅咒》2| 汪明荃年轻| 女子医院满天星法版免费观看| 特约外卖员| 最美丽的第七天| 缘之空全集免费观看完整版| 我的小姑子的味道| 李诞吐槽甄子丹| 终极谍匪| 王华买父| 陈伟霆演的鸭的电影名字| 菠萝菠萝蜜在线免费观看| 娘家的故事上部| 小凤(下)| 王国北方的阿信| 黄色仓库免费观看| 我的好兄弟8免费观看高清| 星克莱尔《迷宫》在线观看| 沙坑里的女孩在线观看完整版| 深圳富士康搬迁| 盛唐风流国语版在线播放免费观看| 原始人电影免费完整版观看 | 西施伦理完整版| 大兵的寝室电影| 电影农村中老年妇女乳房按摩 | 男生女生相愁愁愁电视剧在线观 | 1980法国空乘在线播放| 最好的我们电视剧免费观看| 斯巴达女勇士hr版| 河南曲剧卷席筒| 我叫刘跃进| 满清十大刑酷电影| 高压监狱完整版在线观看完整免费高清原声满天星2023 | 灌阳县| 绮梦之旅全集观看| 男人痣相| 电视剧保姆与保安| 小镇警事| 秘密追踪剧情介绍| 星星的故乡演员表| 女生宿舍电影下载| 扫黑风暴2021免费播放| 韩国房产销售的秘密在线观看 | 唐人街探案3免费西瓜观看完整版| 高压监狱2在线完整免费高清原声满天星2019| 土地公土地婆剧情介绍| 老撕鸡全集解说| 桑德拉·拉索《啄木鸟》| 电视剧心星的泪光| 空即是色2015| 好事成双电视剧免费观看全集| 小小水蜜6全集电视剧| 无人区高清在线观看完整版| 四大美人之西施高清完整版| 暗恋成真:男神爱上我短剧全集| 白峰电影在线观点| 猛士极品FREEDOM| 肇事追踪演员表| 通往你的地图| 凌云壮志女版(法国)满天星在线| 名侦探柯南剧场版12| 老版笑傲江湖| 特邀外卖员| 寿星新人类,肥尸哥主演| 折腰电视剧剧情| 燃冬电影高清在线观看免费| 艾莉拉特满天星七个男子汉| 大宋有奇案电视剧免费观看完整版| 《命中婚劫》| 春去春又回片尾曲| 女鬼剑剑宗| 《法国空姐2024法版》法国空姐| 向风而行电视剧免费观影| 八仙全传之八仙过海高清| 情劫在线观看| 小敏家电视剧免费版全集在线观看| 牙医电影完整版2000年| 高清《家政服务》免费观看| 王爷追妻忙:王妃要和离全集免费| 朋友的妈妈2观有限中字| 韩国上司部长来家做客| 平成假面骑士| 原来的神马电影在线观看免费| 满天星《乌托邦》2024| 情陷夜中环第一部| 我们的宇宙泰剧免费观看| 极恶老大第二季全集在线观看 | 恩娇韩剧电影完整版免费观看| 甜美姐| 高清命悬一枪未删减| 于无声处全集| 法版女海盗3海魔之岛| 年轻的母亲4韩剧免费中文版| 欧式少女第16集全集电视剧剧情介绍| 致美丽的你插曲| 流浪地球在线高清| 《爱我几何》免费完整版在线观看 | 美容院:待遇服务16| 凶手的样子电视剧免费观看| 年轻的母亲2有线4| 涩涩屋观看| 孟瑶 三级| 石渠县| 战勇第二季| 活佛济公3迅雷下载| 深夜航班 第二季未删减| 爱我几何在线观看完整版免费版| 十首最好老歌| 消失的厨神| 宫心计全集| 《情欲满载》在线观看 | 水晶挂片| 韩国为了皇帝| 在线看性| 乡村小媳妇全集免费| 轧戏在线观看| 爱我几何免费| 淮阳婚庆| 喜爱夜蒲之林中小屋| 永不磨灭的番| 广场舞花好月圆夜| 无憾坎贝奇| 新来的瑜伽教练在线观看| 花房姑娘三免费观看高清电视剧 | 朝国年经的继4免费观看时间一| 僵尸道长第一部| 《少年派》| 李桢航资料| 盱眙县| 美国蜜桃| 魔境仙踪中文版| 强殖装甲动画| 妈妈在等你免费完整版电视剧| 播放_爱我几何免费完整观看_在线观看_馒头影院| 生命缘桐桐| 法国空姐满天星法版全集| 陌路血地| 如果能再爱一次| 睫毛膏4美国版| 哭声 下载| 有只僵尸暗恋你下载| 三级女版唐僧在线看| 彭佳慧残酷的温柔| 空姐2在线观看完整免费高清原声满天星奔跑吧ep | 别墅轮换2的剧情简介| 规范交谊舞| 牧神记第39集在线观看视频| 黄昏时分牵起手| 古宝奇缘电影| 高清爱你的基蒂 第三季未删减| 神汉流氓| 用烤箱烤鸡翅| 痴汉电车下载| 千古绝尘| 太空堡垒国语| 《高压监狱2》免费观看| 奇热剧集| 武林幸运星| 追光的日子电视剧免费观看| 霍元甲电视剧老版| 冢本监督昭和系列越南女子别动队在线观看完整版 | 雍正王朝| 驯龙记国语版| 倔强的驱魔师1-4集免费观看| 北京夜店电影| 甲午大海战| 木下澶澶子最新电影| 斗罗大陆电视剧免费版| 灰姑娘的玻璃手机插曲| 欧少女16集在线观看少女与狗大战六 | 魔术快斗国语版全集| 风流变形记| 爱我几何电影完整版高清免费观看 | 斗罗大陆66集| 罗曼蒂克地下室骑马多少分钟| 江南1970| 《渴望的火花》在线观看| 女生宿舍电影下载| 复制情人| 51吃瓜.world戴璐蘑菇| 酒店1-5集| 豺狼计划下载| 胭脂霸王电视剧| 罗莎《拳击手2》在线观看| 蜀汉传奇| 飙速宅男第四季| 江河之水电视剧| 最高的爱人诏日剧免费观看| 紫钗奇缘电视剧全集| 青春环游记第四季综艺| 二次曝光未测减120分| 风中奇缘全集| 数学皇冠上的明珠| 美容院特殊待遇1| 誓言永恒在线观看| 电影《谵妄》| 法国经典电影女狱警》理论片高清在线观看 - 全集韩国剧 -南瓜...导演:William | 真维斯属于什么档次| 如果可以这样爱46集电视剧| 朋友的妈妈2中字线观高清| 北越暴行电影2| 莽荒纪动漫| 釜山行2在线高清免费观看| 魔力宝贝监狱完整版| 金瓶梅3在线高清| 拜访者q| 《婚前的忠贞》电影免费观看| 陈宝莲满天星绝版免费观看| 傻哥蹦迪| 十九岁观看免费高清完整版| 少年歌行电视剧在线观看免费播放| 悬崖之上免费| 隋唐英雄117| 满天星在线高清电影免费看| 温柔的谎言片尾曲| 封神英雄榜1部| 好妈妈14中汉字| 溪暮悦影短剧免费播放大全 | 我在情人截取了一段小视频| 千古玦尘电视剧全集| 古天乐神雕侠侣| 今天的明日香| 娱乐百分百20120122| 《交换3》| 琴弦上的父女全集免费| 分手大师| 王多鱼打扑克| 康斯坦丁| 新妈妈中文| 姐姐的朋友在线视频| 《卖保险的女销售》免费看| 黑暗计划2012美国电影| 游山西村的诗意| 渴望 电视剧| 黑暗荣耀 第二季 电视剧| 斗破苍穹缘起在线观看| 仙逆124集完整版| 需要爸爸播种播放| 女武神的终末动漫在线观看| 庆余年第一季在线观看| 仓井空在线| 别对我说谎 电视剧| 少年包青天第一部免费| 薛之谦小幸运| 韩国美容店的待遇5HD电影| 《妻子8免费高清HD》 | 工地上的女人免费观看电视剧| 电影甜性涩爱| 电锯惊魂7高清版| 年轻的岳母在线播放| 漂亮妈妈9中字开头歌曲| 欢乐喜剧人第一季综艺| 《痴心劫》理伦片在线观看| 光阴里的故事大结局| 《1993》米利亚姆莱昂| 弹珠汽水猴子全集观看| 憨豆特工1| 美丽的水蜜蜂第一季免费观看| 黑执事第二季在线观看| 一家老小向前冲高清 | 御龙修仙传2魔兽疆界| 冬暖花会开| 五鼠闹东京 电视剧| 韩国4瘦子| 人间春色电视剧40集免费观看| 就爱小姐姐| 驯服的小峓子hd中字| 黄沙渡电视剧免费播放在线观看| 境界的轮回| 善待自己学会快乐| 死神来了8在线观看完| 西夏狼王| 镜双城电视剧免费观看全集完整版 | 终极三国21| 韩剧《为爱疯狂》| 金瓶梅bmp3视频| 子夜电视剧| 阳曲县| 高压监狱《3》伦理| 美景之屋1在线未删减| 蜡笔小新免费观看| 留坝县| 台湾修理工工艳遇| 亲爱的电视剧免费播放| 监禁gv| 人狗大战1~8集全集观看免费西瓜| 来自喵喵星的你| 刘德华演唱会全集| 善意的竞争电视剧在线播放| 日本波多野吉衣| 不要见怪电影| 怨灵人偶3d在线观看| 三年大片观看免费国语第一集 | 《味道》电影| 女超人-麦乐迪版| 《进击的巨人》第四季| 情深深雨蒙蒙35| 浪漫的逃亡| 凌云壮志满天星法国版| 德凯奥特曼第7集| 模范出租车电视剧第一季| 懒猫和他的狮子倒影在线观看| 四位大学位按摩记PDF免费下载| 黄奇帆为什么没事| 斗罗大陆162| 哆啦A梦:大雄的金银岛电影| 情陷夜中环2| 日本伦理电影替夫还债| 捷克街头100集完整在线播放| 七虹香电击大作战| 特殊治疗6| 爱丫爱丫影院最新电视剧免费观看| 网球 瓜| 高清《恶之华》电视剧| 女超人法国版在线观看| 夏洛特烦恼电影| 肉蒲团高清| 红财神电影| 《荣誉准则》法版| 如舞薄冰未删减| 七夜怪谈电影| 女神宿舍的宿官君樱花动漫| 落魄贵族琉璃川在线观看免费动漫 | 韩剧国语版789| 韩国r在线| 玉蒲团之官人我要3| 上错花轿嫁对郎优酷| 只此江湖梦电视剧免费观看| 瓜达卢佩玫瑰在线| 地铁笨蛋4视频| 新闻女王免费观看全集完整版| 姐妹牙医观看| 又色又爽又黄无遮挡的免费的软件 | 《痴心劫》理伦片在线观看| 锦衣男装:女捕犯人全集免费| 空姐3在线观看完整免费高清原声满天星奔跑吧ep | 亮剑3gp下载| 《屋顶工》拉拉| 韩国电影美容院5| 年经继拇| 女大学生的按摩房| 法国空姐2| 万古神话免费观看全集完整版 | 《亲爱的,别!》| 长津湖枪版| 白峰美羽女教师无删减播放| 天价宠妻短剧全集| 梦魇绝镇第一季免费观看完整版| 古墓丽影3电影| 女律师的堕落电影在线观看| 无影良贼| 斗破苍穹182集在线观看免费| 太极张三丰 电影| 黑白配视频播放免费观看| 新金瓶梅 电视剧| 我的相亲对象是消防员第二季| 再战江湖国语| 倔强驱魔师| 电影种马猎场在线观看| 安徽公共频道在线直播| 电影《替夫还债3》 | 公公浮的手| 迷人的保姆高清线观看| 八百壮士在线观看| 美国《行政助理》2014| 越战电影《性的暴行》 | 庆余年2首支预告| 莉娜安德森电影全集| 全职高手第二季| 韩国电影妈妈的女儿| 荣耀法则满天星在线观看 | 爱你所爱电影| 判逆者电视剧免费| 走打鬼子去全集在线观看| 石榴红了电视剧全集在线观看| 免费观看《部长出差的日子》 | over flowe| 外国美女热舞| 悬崖之上免费| 东北小佛爷| 白镖联盟全集免费播放| 游戏达人动漫在线观看| 本山实力太恐怖| 双人调情按摩术韩国在线观看 | 斩服少女完整版在线观看| 人间中毒无删减在线| xl司令第八集全集在线观看 | 突围在哪个台播放| 刀锋战士百度影音| 桑德拉拉索满天星全集免费播放| 四川绵阳村民种中药材致富 | 赵本山小品就差钱| 寻秦记粤语| 天海翼搜查官在线观看| 苹果影片| 逆世界百度影音| 调包婴儿| 战狼6下载完整版| 金陵秘事| 人鬼神 电影| 猎豹突击电视剧| 义姐不是不良妈妈免费看| 高清《风筝》大结局| 兄弟英雄在线观看| 心怀叵测的单身女| 奇怪的美容院| 名门闺秀全集免费| 小时代3:刺金时代 电影| 电视剧樱桃正红| 满清十大酷刑未减测在线观看| JUL945老公不在的平日、被自外工作回家的絶伦公公天天侵犯到疯狂高潮。三舩美 | 善良的儿媳按摩店按摩电影| 出差醉酒被最讨厌的人欺负电影| 人间正道是沧桑50集全免费观看| 蝴蝶与鲸鱼| 《修理工的绝遇》| yellow高清视频在线免费观看| 刘老根3| 高清轮回的花瓣未删减|