原文出處:
一、gstreamer的五個列印除錯資訊的函式:
gst_log ()
==>>5
gst_debug ()
==>>4
gst_info ()
==>>3
gst_warning ()
==>>2
gst_error ()
==>>1
現摘錄《
gstreamer plugin writer's guide
》中23.2節中debugging 的第一句話:
elements should
never
use their standard output for debugging (using functions such as printf ()
or g_print ()).
永遠不要使用printf () 或 g_print ()
也就是說,既然提供了五個除錯函式,那我們最好就用gstreamer的了。
二、除錯等級(level)
總共有六個等級[
0,5]
0: 什麼都不列印
1: 列印gst_error ()的資訊
2: 列印gst_error () gst_warning () 的資訊
3: 列印gst_error () gst_warning () gst_info () 的資訊
4: 列印gst_error () gst_warning () gst_info () gst_debug () 的資訊
5: 列印gst_error () gst_warning () gst_info () gst_debug () gst_log () 的資訊
三、關於 --gst-debug-level=
level
的用法
level的取值為[0,5]
如果使用這個引數來列印除錯資訊,則所有檔案(包括庫檔案)裡的除錯資訊都將輸出來
四、關於--gst-debug=
string
的用法只輸出由string指定範圍內的除錯資訊
string 為除錯分類名加:號和除錯等級
比如: gst_cat:5,gst_element_*:3,oggdemux:5
在編寫gstreamer程式時,建立自己的除錯分類的過程如下:
step1
在檔案的開頭新增兩行**:
gst_debug_category_static (myelement_debug);
#define gst_cat_default myelement_debug
step2
在初始化的地方新增:
gst_debug_category_init (myelement_debug, "myelement", 0, "my own element");
step3
在命令列引數中使用: --gst-debug=myelement:x (x的取值為[0,5])
五、gst-launch工具與除錯引數
在使用gst-launch 可以通過新增除錯引數來列印除錯資訊
參見:中的options 部分
六、在code::blocks中設定命令列除錯引數
project
==>set progrmas' arguments..
==>
program arguments
填寫類似: --gst-debug-level=x 或 --gst-debug=myelement:x(x的取值為[0,5])
七、object除錯函式的用法也類似
gst_log_object ()
gst_debug_object ()
gst_info_object ()
gst_warning_object ()
gst_error_object
() 八、在多個檔案中共同使用同乙個除錯類別的方法:
建立乙個標頭檔案,其內容如下:
#ifndef dg_h_included
#define dg_h_included
#include
gst_debug_category_static (my_category);
#define gst_cat_default my_category
//注意: 宣告乙個巨集,在不同的檔案裡,如果有函式裡使用該除錯類別的話,直接使用該巨集
#define
use_own_same_debug
gst_debug_category_init (my_category, "mycategory",5, "for own debug level");
#endif // dg_h_included
函式,引數陣列params與陣列引數,結構函式
1 函式 static 返回值型別 函式名 形參1,形參2,無返回值,則static void 函式名 static void out 無返回值,無形參函式 static int add int num1,int num2 有返回值,有形參函式 public static void main str...
go gdb除錯引數
編譯時,如果編譯的結果需要gdb除錯則使用引數 gcflags n l 這樣可以忽略go 內部做的一些優化,聚合變數和函式等優化.go build gcflags n l 但是一定要注意是不是小寫的i,也不是大寫的i,是小寫的l,不然會出現奇怪的錯誤。如果編譯的結果需要發布.則使用 ldflags ...
gstreamer外掛程式工作原理與流程分析
gstreamer plugins的工作同所有的基於外掛程式的程式的工作原理類似,本質上都是通過讀取動態庫實現的,只需要每個動態庫都實現某乙個特定的介面就可以了,比如xx init等,gstreamer統一使用plugin init。裡面會有個像登錄檔一樣的資料結構會儲存所有的外掛程式的資訊。1 在...