Xcode警告:无法打开OSO文件

时间:2011-10-27 23:19:36

标签: objective-c xcode ffmpeg gdb dwarf

我将Xcode项目中的ffmpeg dylib升级到新版本,现在我在运行应用程序时在Xcode控制台窗口中收到所有这些警告。任何想法我为什么会得到这些?

提前致谢!

这是一个缩写版本,但你会明白这个想法。

warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/4xm.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/4xm.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/8bps.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/8bps.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/8svx.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/8svx.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/a64multienc.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/a64multienc.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aac_ac3_parser.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aac_ac3_parser.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aac_adtstoasc_bsf.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aac_adtstoasc_bsf.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aac_parser.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aac_parser.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacadtsdec.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacadtsdec.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aaccoder.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aaccoder.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacdec.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacdec.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacenc.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacenc.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacps.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacps.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacpsy.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacpsy.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacsbr.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aacsbr.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aactab.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aactab.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aandcttab.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aandcttab.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aasc.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/aasc.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3_parser.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3_parser.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3dec.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3dec.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3dec_data.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3dec_data.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3dsp.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3dsp.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc_combined.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc_combined.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc_fixed.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc_fixed.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc_float.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3enc_float.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3tab.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/ac3tab.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/acelp_filters.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/acelp_filters.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib
warning: .o file "/Users/username/Downloads/ffmpeg-0.8.5/libavcodec/acelp_pitch_delay.o" more recent than executable timestamp in "/Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib"
warning: Could not open OSO file /Users/username/Downloads/ffmpeg-0.8.5/libavcodec/acelp_pitch_delay.o to scan for pubtypes for objfile /Users/username/Library/Developer/Xcode/DerivedData/MyApp-cjpuovfvlxckuddiuysbbosqgbsj/Build/Products/Debug/MyProject.framework/Versions/A/Libraries/libavcodec.dylib

3 个答案:

答案 0 :(得分:2)

如何中和“无法打开OSO”并强制加载“o”:

  

免责声明:你不应该这样做:)

As explained previously,错误消息告诉您调试信息是dylib的不正确的信息。

但是,如果出于某些异国情调的原因,你认为你的“o”文件虽然可能带有错误的时间戳 - 但确实包含正确的信息,你需要将它们加载到gdb中,然后继续......

对于下面的示例代码,我假设一个名为abcdefg.o的o文件和一个名为lib_jklmnop.dylib的dylib

第一步。运行此命令:

nm -ap lib_jklmnop.dylib  | grep OSO | awk '{printf("%s %s\n", toupper($1), $0 )}'

输出应包含:

00000000560D902C 00000000560d902c - 03 0001   OSO /some/file/path/abcdefg.o

注意:你必须找到一个带有“abcdefg.o”的输出行。我们只修复一个文件的OSO警告:abcdefg.o,所以如果你不使用与该文件对应的时间戳,那么以下步骤毫无意义。

第二步。取第一列中的十六进制数字(本例中为560D902C),并通过python运行,如下所示:

echo import datetime\; t=datetime.datetime.fromtimestamp\( 0x560D902C \) \; print \( t.strftime\(\'%Y%m%d%H%M.%S\'\) \) | python3

(你可以在这一步使用perl或其他东西。为了演示目的,Python似乎是可访问的和可移植的。)上面将采用“0x560D902C”并生成格式化的时间戳:201510011257.32

第三步。使用从步骤2获取的格式化时间戳,运行touch命令以更改abcdefg.o上的时间戳:

touch -t 201510011257.32  abcdefg.o

现在“o”上的时间戳与dylib中的OSO条目匹配。 GDB将加载此“o”文件。

(后代:在Mac OS X 10.8.5上使用GNU gdb 6.3.50-20050815 Apple版本gdb-1824进行测试)

推荐阅读:

Apple DWARF debug scheme

Bugzilla@Mozilla - GDB complains of .o files having newer timestamp than executable

答案 1 :(得分:1)

当我看到这个时,我经常发现干净和重建会修复警告。

答案 2 :(得分:0)

我一直在容忍这个"无法打开OSO文件"在gdb中输出数周。随意的谷歌搜索总是让我回到这里。

@ kakyo的答案(尝试重建)有效,但我想知道更多。

基本(众所周知的?)背景信息:" o"文件和" dylib"文件是在构建期间生成的。 " o"文件包含调试信息。但是,当链接器链接" o"用于创建" dylib"的文件,调试信息放入生成的dylib中。

警告宣布" o"的时间戳。文件比" dylib"上的时间戳更新。实际上 - 这种区别至关重要 - 警告比较了" o"将文件添加到时间戳 dylib中。您可以使用以下命令在dylib中查看与OSO相关的时间戳:

bash_prompt$ nm -ap libavcodec.dylib  | grep OSO

00000000560d913f - 03 0001   OSO /Downloads/ffmpeg-0.8.5/libavcodec/4xm.o
00000000560d913f - 03 0001   OSO /Downloads/ffmpeg-0.8.5/libavcodec/8bps.o
00000000560d913e - 03 0001   OSO /Downloads/ffmpeg-0.8.5/libavcodec/8svx.o
00000000560d913e - 03 0001   OSO /Downloads/ffmpeg-0.8.5/libavcodec/a64multienc.o
00000000560d9140 - 03 0001   OSO /Downloads/ffmpeg-0.8.5/libavcodec/aac_parser.o
00000000560d9141 - 03 0001   OSO /Downloads/ffmpeg-0.8.5/libavcodec/aaccoder.o
  

请注意:第一列中的十六进制值为时间戳。

GDB(调试器)在dylib中记录的路径中找到o文件,然后GDB检查时间戳。

这个时间戳检查功能似乎最明显的用例如下:

  1. 您的产品(您的公司"旗舰应用程序",让我们说)在您的应用包中附带了一些第三方dylib(如ffmpeg dylib)。
  2. 您在GDB下启动应用程序,并且您的应用程序加载第三方dylib。
  3. 糟糕!您的应用包中包含third_party.dylib过时副本。实际上你昨天构建了一个新的third_party.dylib(它产生了一个新的dylib 新鲜的" o"文件)。这些新鲜的第三方商品都在" ~/third_party/other_folder",您忘了将最新的third_party.dylib复制到您的应用包中。
  4. 假设third_party.dylib总是在同一个(项目外部)目录中构建,那么这些时间戳检查是一种提醒您完全正确的方法!" Oops!"如上所述。您的third_party.dylib(您的应用包中的副本)的过时副本有" OSO"指向" ~/third_party/other_folder/someclass.o"的条目,但调试器提醒您注意" ~/third_party/other_folder/someclass.o"最近已重新编译,您似乎没有使用与最新编译相对应的dylib。

    有趣的琐事:该错误表示" 比可执行时间戳更近的" [重点是我的] - 但这并不总是正确的!如果时间戳比dylib OSO条目所期望的更新,则会出现错误。严格时间戳同等测试失败时出现错误。在此处查看相关的gdb源代码:

    https://github.com/unofficial-opensource-apple/gdb/blob/ae8094e0d84d94fc0ad9b5ecdcd79acd722879f8/src/gdb/dbxread.c http://www.opensource.apple.com/source/gdb/gdb-952/src/gdb/dbxread.c

    最后注意事项:实际解决"无法打开OSO"错误,请返回@kakyo's original correct advice