大家请帮忙看看这个是Xcode的bug么?还是自己的错误。在调试FFmpeg的时候发现的。


在调试FFmpeg的时候发现一个古怪问题,我使用xcode进行编译和调试。编译成X86的版本。在跟踪调试的时候发现一个怪问题。

代码在ffmpeg_opt.c的static int open_input_file(OptionsContext *o, const char *filename)函数内。


 #ifdef DEBUG
    av_log(NULL,AV_LOG_INFO,"func:%s(%d) filename:%s \n", __func__,__LINE__,filename);
#endif

    if (!strcmp(filename, "-"))  //当程序运行过这行代码后,调试窗口现实filename的值为NULL.非常奇怪。
        filename = "pipe:";

#ifdef DEBUG
    av_log(NULL,AV_LOG_INFO,"func:%s(%d) filename:%s \n", __func__,__LINE__,filename); //这个是我添加的代码,这里可以打印出filename的正确值。
#endif

当程序运行完strcmp(filename,"-")之后,filename的debug窗口显示是NULL值。

大家可以在克隆 https://github.com/daozhao/FFmpeg.git 这个项目,然后checkout release/2.2withComment这个分支。 这个已经分支包含了xcode project的文件,然后运行调试FFmpegMakefile targets,重现我的bug。

另外我也录制了屏幕,大家可以直接观看我的情况。 http://v.youku.com/v_show/id_XNjk4NTkxNzUy.html

我的系统版本10.9.2,xcode的版本是5.1.1

bug xcode ffmpeg debug c

纯洁D笑面 10 years, 9 months ago

最后发现,是编译的时候添加了优化选项 -O3。
由于使用External Build System,Makefile是ffmpeg自动生成的。它添加了编译优化选项-O3。所以出现上边的情况。

詩情畫意╮ answered 10 years, 9 months ago

Your Answer