1、編譯可調試的FFmepg
(1)、使用命令:
./configure --enable-debug --disable-optimizations --disable-asm --disable-stripping
注意一定要加--disable-stripping, 如果不加此選項,ffmpeg在編譯時,會使用strip去掉符號信息。
(2)、然後make
make
2、gdb調試
(1)、假設有main.c文件
#include <stdio.h>
int funct(int n)
{
int sum=0,i;
for(i=0; i<n; i++)
{
sum+=i;
}
return sum;
}
void main()
{
int i;
double result = 0;
for(i=1; i<=10; i++)
{
result += i;
}
printf("result[1-50] = %d /n", funct(50) );
}
編譯生成執行文件:(Linux下)
gcc -g main.c -o main
(2)、使用gdb調試
gdb main #啓動GDB
set args 參數 #指定運行時的參數
start #開始執行程序,停在main函數第一行語句前面等待命令
常用的調試命令有:
r #運行程序
n #單步執行
c #繼續運行
info break #查看斷點信息
break func #在函數func()的入口處設置斷點
break filename:linenum #在源文件filename的linenum行處停住
delete 斷點號n #刪除第n個斷點
gdb調試查看內存
x/<n/f/u> <addr> 注: n、f、u是可選的參數,<addr>表示一個內存地址
f 表示顯示的格式,參數 f 的可選值:
x 按十六進制格式顯示變量。
d 按十進制格式顯示變量。
u 按十六進制格式顯示無符號整型。
o 按八進制格式顯示變量。
t 按二進制格式顯示變量。
a 按十六進制格式顯示變量。
c 按字符格式顯示變量。
f 按浮點數格式顯示變量。
n 是一個正整數,表示顯示內存的長度,也就是說從當前地址向後顯示幾個地址的內容
u 表示將多少個字節作爲一個值取出來,如果不指定的話,GDB默認是4個bytes,如果不指定的話,默認是4個bytes。
當我們指定了字節長度後,GDB會從指內存定的內存地址開始,讀寫指定字節,並把其當作一個值取出來。
參數 u 可以用下面的字符來代替:
b 表示單字節
h 表示雙字節
w 表示四字節
g 表示八字節
參考網址:http://www.cnblogs.com/shakin/p/3963345.html
參考網址:http://blog.csdn.net/wansbest/article/details/8284514 ffmpeg調試配置
參考網址:http://blog.csdn.net/haoel/article/details/2879/ gdb調試
參考網址:https://wenku.baidu.com/view/5bdb4c83bceb19e8b8f6ba16.html gdb調試
參考網址:http://www.cnblogs.com/hankers/archive/2012/12/07/2806836.html gdb調試