在研究代码的过程中,调试运行是一种非常有效的方法。我们常用的Visual Studio建立的工程可以很方便地对程序进行调试运行。但是对于FFMpeg这样的工程,想要进行单步调试就没这么容易了。如果一定要调试运行 FFMpeg,最好按照我们之前博文的描述编译完成之后,放在Eclipse中进行调试运行。

在开始之前,需要按照前几篇博文的描述安装Ubuntu并编译FFMpeg的源代码。

具体链接见

在Ubuntu下编译FFmpeg  http://www.linuxidc.com/Linux/2014-11/109840.htm

Windows 7下硬盘安装Ubuntu 14.10图文教程 http://www.linuxidc.com/Linux/2014-10/108430.htm

U盘安装Ubuntu 14.10 http://www.linuxidc.com/Linux/2014-10/108402.htm

Ubuntu 14.10 正式发布下载 http://www.linuxidc.com/Linux/2014-10/108363.htm

Ubuntu 14.04 LTS 如何升级到 Ubuntu 14.10  http://www.linuxidc.com/Linux/2014-10/108381.htm

1、安装Eclipse

FFmpeg由C语言编写,因此我们的Eclipse需要安装cdt。在网上找过大量资料如何安装编译环境,但是表述都有些问题,安装之后依然无法建立C/C++工程。坑爹的是,最后发现其实这一步简单无比,一条语句就可以搞定:

sudo apt-get install eclipse eclipse-cdt g++

如果g++已经安装过的话在上述命令中可以省略。

参考:http://stackoverflow.com/questions/14721514/how-to-install-eclipse-with-c-in-ubuntu-12-10

2、在Eclipse中新建工程

我们已经完成了安装Eclipse cdt之后,选择File->New->Makefile Project With Existing Codes。

在随后弹出的对话框中,Browse到我们之前编译好的FFMpeg的目录中,此时Project Name会自动为我们填写好。然后在Toolchain for indexer settings中选择Linux GCC。单击确定,此时工程就建好了。

  • 注意1:如果FFMpeg之前是在其他目录中编译的,那么事先必须在Eclipse的workspace中单独再建一个目录并将之前的目录中的所有内容拷贝其中。如果直接browse到workspace之外,将无法建立工程。
  • 注意2:源代码的目录不要包含中文,否则Eclipse无法识别,将会出现找不到源码无法调试的情况。最保险的办法就是,将FFMpeg的源代码拷贝到Eclipse的workspace中进行编译,并在其中进行调试操作,可保证万无一失。

3、设置调试参数

我们在源代码目录——Binary目录下找到ffplay_g文件,右键单击,选择Debug Configuration:

在弹出的对话框中双击C/C++ Application,选择调试参数,如播放的文件:

然后apply在debug,就可以开始调试了。

在默认设置下,断点会停在main函数的第一行,但是现在显示的界面是酱紫的:

我们想要的源代码呢?其实做一个简单的操作就可以:单击右上角Debug前面的按钮并选择C/C++,就能看到C代码了。

调试过程中所用到的四个控制按键:

  • F5:单步调试,遇到函数时进入函数内部,相当于VS的F11;
  • F6:单步调试,遇到函数时跳过,相当于VS的F10;
  • F7:单步调试,从当前方法中跳出,相当于VS中的Shift+F11;
  • F8:调试运行程序,直到第一个断点,相当于VS中的F5.

Linux下编译FFmpeg之下载源文件并编译 http://www.linuxidc.com/Linux/2012-02/54565.htm

Linux 编译升级 FFmpeg 步骤 http://www.linuxidc.com/Linux/2013-08/88190.htm

CentOS 5.6 上安装 FFMPEG http://www.linuxidc.com/Linux/2011-09/42793.htm

在Ubuntu下安装FFmpeg http://www.linuxidc.com/Linux/2012-12/75408.htm

FFmpeg 的详细介绍请点这里
FFmpeg 的下载地址请点这里

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

本文永久更新链接地址http://www.linuxidc.com/Linux/2014-11/109841.htm

使用Eclipse对FFmpeg进行调试的更多相关文章

  1. 在ubunut下使用pycharm和eclipse进行python远程调试

    我比较喜欢Pycharm,因为这个是JetBrains公司出的python IDE工具,该公司下的java IDE工具--IDEA,无论从界面还是操作上都甩eclipse几条街,但项目组里有些人使用e ...

  2. 使用eclipse与jLink V8调试exynos 4412 u-boot

    /** ****************************************************************************** * @author    Maox ...

  3. Eclipse高级操作 远程调试

    Eclipse高级操作 远程调试 JPDA是SUN JDK自带的远程调试机制.它提供了一套标准的调试接口,可以从虚拟机一级允许外界用特定协议探测虚拟机内部的运作细节.只要你装了JDK1.2以上的SUN ...

  4. 【图文教程】Eclipse for PHP+XAMPP调试配置

    一.下载安装XAMPP 下载地址:https://www.apachefriends.org/download.html, 一路“Next”,安装完毕. 二.下载Eclipse for PHP 下载地 ...

  5. Maven + Eclipse + Tomcat - 开启项目调试之旅(转)

    本文的读者需要拥有一些Maven基础知识和实践,如果没有,请直接绕过或者先看一些关于Maven教程,比如Juven翻译的<Maven权威指南>,google一下便知. 开门见山,首先抛出一 ...

  6. eclipse/intellij idea 远程调试hadoop 2.6.0

    很多hadoop初学者估计都我一样,由于没有足够的机器资源,只能在虚拟机里弄一个linux安装hadoop的伪分布,然后在host机上win7里使用eclipse或Intellj idea来写代码测试 ...

  7. eclipse 常用快捷键及调试方法

    原文链接:http://my.oschina.net/u/1054538/blog/741561 常用快捷键 Eclipse最全快捷键,熟悉快捷键可以帮助开发事半功倍,节省更多的时间来用于做有意义的事 ...

  8. eclipse常用快捷键及调试方法(虽然现在看不懂,但是感觉以后肯定会用到,先转了)

    常用快捷键 Eclipse最全快捷键,熟悉快捷键可以帮助开发事半功倍,节省更多的时间来用于做有意义的事情. Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+D: 删除当前行 Ctrl ...

  9. Eclipse Tomcat配置/管理/调试指南

    从myeclipse转到Eclipse最不方便的之一莫过于Web项目部署了,老是在想怎么不能把myeclipse的那个移植过来,或者有没有高人能按照Myeclipse开发一个,非常遗憾. 原版的Ecl ...

随机推荐

  1. leetcode:Reverse Words in a String【Python版】

    class Solution: # @param s, a string # @return a string def reverseWords(self, s): ss = s.split(&quo ...

  2. streamsets 集成 rabbitmq 以及benthos stream 处理框架

    benthos 是一个stream 处理框架,streamsets 也是,但是两者可以通过不同的工具进行集成起来 一般我们可以使用http 服务,消息中间件(kafka.rabbitmq ...) 使 ...

  3. OAuth 2.0:Bearer Token、MAC Token区别

    Access Token 类型介绍 介绍两种类型的Access Token:Bearer类型和MAC类型 区别项 Bearer Token MAC Token 1 (优点) 调用简单,不需要对请求进行 ...

  4. JVM 之:Java 内存区域与内存溢出

    内存区域 Java 虚拟机在执行 Java 程序的过程中会把他所管理的内存划分为若干个不同的数据区域.Java 虚拟机规范将 JVM 所管理的内存分为以下几个运行时数据区:程序计数器.Java 虚拟机 ...

  5. meta viewport 理解

    移动设备上的浏览器如果不指明 viewport 这个meta,当你从移动设备上浏览网页的时候,它假设(你浏览的是桌面版并且你想看到所有的内容),不只是一个左上角.因此,它会把viewport的宽度设置 ...

  6. bzoj 4556 [Tjoi2016&Heoi2016]字符串——后缀数组+主席树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4556 本来只要查 ht[ ] 数组上的前驱和后继就行,但有长度的限制.可以二分答案解决!然后 ...

  7. C++ namespace命名空间

    1.什么是命名空间 简而言之:划片取名 加入有两个公司,公司A里面有一个员工小明,公司B里面有一个员工小明,两个公司在同一栋楼.这时,你去找小明,你再楼下大喊:“小明!你给我下来!”,这时两个小明都会 ...

  8. Java-Runoob-高级教程-实例-数组:07. Java 实例 – 数组合并

    ylbtech-Java-Runoob-高级教程-实例-数组:07. Java 实例 – 数组合并 1.返回顶部 1. Java 实例 - 数组合并  Java 实例 以下实例演示了如何通过 List ...

  9. Linux故障-bash-4.1$

    #模拟故障:-bash-4.1$ [root@nodchen ~]# su - cisco[cisco@nodchen ~]$ \rm -f .*rm: cannot remove `.': Is a ...

  10. 1062 Talent and Virtue (25 分)

    1062 Talent and Virtue (25 分) About 900 years ago, a Chinese philosopher Sima Guang wrote a history ...