【问题标题】:Xcode "warning: Could not find object file ... no debug information available for ..."Xcode“警告:找不到目标文件...没有可用于...的调试信息”
【发布时间】:2021-02-04 06:37:34
【问题描述】:

搞乱单元测试插件的各种设置给我留下了一个混乱的项目文件。我似乎已经修复了它,但有一个副作用:每次我运行插件时,控制台都会为每个类文件填充警告,如下所示:

警告:找不到目标文件“/Users/elisevanlooij/Documents/Project Plug-ins/MyPlugin 8/build/MyPlugin.build/Debug/MyPlugin.build/Objects-normal/i386/MyPlugin.o” - 否可用于“/Users/elisevanlooij/Documents/Project Plug-ins/MyPlugin 8/MyPlugin.m”的调试信息。

现在我可以理解为什么会出现错误了,因为路径 /Users/elisevanlooij/Documents/Project Plug-ins/MyPlugin 8 不再存在:“MyPlugin 8”是临时文件夹(MyPlugin 的 svn 版本 8 的结帐)那个早就去了垃圾桶,垃圾桶也被清空了。当前版本的 MyPlugin 甚至不应该知道它,但不知何故,由于某种原因 Xcode 和/或 gdb 不会放手。我什至丢弃了 Precompiled Headers Cach 路径中的相关缓存,但没有任何乐趣。谷歌搜索发现其他人有这个问题,但没有解决方案。谁能帮忙?

这些是具有值的构建设置(调试)。顺便说一下,据我所知,它们与没有此问题的插件相同。

ARCHS = $(ARCHS_STANDARD_32_BIT)

SDKROOT = macosx10.5

ONLY_ACTIVE_ARCH = YES

VALID_ARCHS = i386 ppc ppc64 ppc7400 ppc970 x86_64

SYMROOT = build

OBJROOT = $(SYMROOT)

CONFIGURATION_BUILD_DIR = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

CONFIGURATION_TEMP_DIR = $(PROJECT_TEMP_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

SHARED_PRECOMPS_DIR = $(CACHE_ROOT)/SharedPrecompiledHeaders

BUILD_VARIANTS = normal

DEBUG_INFORMATION_FORMAT = dwarf

ENABLE_OPENMP_SUPPORT = NO

GENERATE_PROFILING_CODE = NO

PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = YES

SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = NO

ALTERNATE_GROUP = $(INSTALL_GROUP)

ALTERNATE_OWNER = $(INSTALL_OWNER)

ALTERNATE_MODE = $(INSTALL_MODE_FLAG)

DEPLOYMENT_LOCATION = NO

DEPLOYMENT_POSTPROCESSING = NO

INSTALL_GROUP = $(GROUP)

INSTALL_OWNER = $(USER)

INSTALL_MODE_FLAG = u+w,go-w,a+rX

DSTROOT = /tmp/$(PROJECT_NAME).dst

INSTALL_PATH = $(HOME)/Library/Application Support/Twee Bomen plug-ins

SKIP_INSTALL = NO

COPY_PHASE_STRIP = NO

STRIP_STYLE = non-global

SEPARATE_STRIP = NO

STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic

DEAD_CODE_STRIPPING = NO

LINKER_DISPLAYS_MANGLED_NAMES = NO

PRESERVE_DEAD_CODE_INITS_AND_TERMS = NO

LINK_WITH_STANDARD_LIBRARIES = YES

MACH_O_TYPE = mh_bundle

LD_OPENMP_FLAGS = -fopenmp

LD_MAP_FILE_PATH = $(TARGET_TEMP_DIR)/$(PRODUCT_NAME)-LinkMap-$(CURRENT_VARIANT)-$(CURRENT_ARCH).txt

GENERATE_MASTER_OBJECT_FILE = NO

PREBINDING = NO

KEEP_PRIVATE_EXTERNS = NO

SEPARATE_SYMBOL_EDIT = NO

LD_GENERATE_MAP_FILE = NO

APPLY_RULES_IN_COPY_FILES = NO

INFOPLIST_EXPAND_BUILD_SETTINGS = YES

GENERATE_PKGINFO_FILE = NO

FRAMEWORK_VERSION = A

INFOPLIST_FILE = Info.plist

INFOPLIST_OUTPUT_FORMAT = same-as-input

INFOPLIST_PREPROCESS = NO

COPYING_PRESERVES_HFS_DATA = NO

PRIVATE_HEADERS_FOLDER_PATH = $(CONTENTS_FOLDER_PATH)/PrivateHeaders

PRODUCT_NAME = MyPlugin

PLIST_FILE_OUTPUT_FORMAT = same-as-input

PUBLIC_HEADERS_FOLDER_PATH = $(CONTENTS_FOLDER_PATH)/Headers

STRINGS_FILE_OUTPUT_ENCODING = UTF-16

WRAPPER_EXTENSION = tbplugin

ALWAYS_SEARCH_USER_PATHS = NO

EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = *.nib *.lproj *.framework *.gch (*) CVS .svn *.xcodeproj *.xcode *.pbproj *.pbxproj

VERSION_INFO_FILE = $(PRODUCT_NAME)_vers.c

VERSION_INFO_BUILDER = $(USER)

GCC_FAST_OBJC_DISPATCH = YES

GCC_AUTO_VECTORIZATION = NO

GCC_OBJC_CALL_CXX_CDTORS = NO

GCC_ENABLE_SSE3_EXTENSIONS = NO

GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = NO

GCC_STRICT_ALIASING = NO

GCC_FEEDBACK_DIRECTED_OPTIMIZATION = Off

GCC_ENABLE_FIX_AND_CONTINUE = YES

GCC_GENERATE_DEBUGGING_SYMBOLS = YES

GCC_DYNAMIC_NO_PIC = NO

GCC_GENERATE_TEST_COVERAGE_FILES = NO

GCC_INLINES_ARE_PRIVATE_EXTERN = YES

GCC_MODEL_TUNING = G5

GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO

GCC_ENABLE_KERNEL_DEVELOPMENT = NO

GCC_DEBUGGING_SYMBOLS = default

GCC_REUSE_STRINGS = YES

GCC_NO_COMMON_BLOCKS = NO

GCC_ENABLE_OBJC_GC = supported

GCC_OPTIMIZATION_LEVEL = 0

GCC_FAST_MATH = NO

GCC_ENABLE_SYMBOL_SEPARATION = YES

GCC_THREADSAFE_STATICS = YES

GCC_SYMBOLS_PRIVATE_EXTERN = NO

GCC_UNROLL_LOOPS = NO

GCC_MODEL_PPC64 = NO

GCC_CHAR_IS_UNSIGNED_CHAR = NO

GCC_ENABLE_ASM_KEYWORD = YES

GCC_PFE_FILE_C_DIALECTS = c objective-c c++ objective-c++

GCC_C_LANGUAGE_STANDARD = c99

GCC_CHECK_RETURN_VALUE_OF_OPERATOR_NEW = NO

GCC_CW_ASM_SYNTAX = YES

GCC_INPUT_FILETYPE = automatic

GCC_ALTIVEC_EXTENSIONS = NO

GCC_ENABLE_CPP_EXCEPTIONS = YES

GCC_ENABLE_CPP_RTTI = YES

GCC_LINK_WITH_DYNAMIC_LIBRARIES = YES

GCC_ENABLE_OBJC_EXCEPTIONS = YES

GCC_ENABLE_TRIGRAPHS = NO

GCC_ENABLE_FLOATING_POINT_LIBRARY_CALLS = NO

GCC_USE_INDIRECT_FUNCTION_CALLS = NO

GCC_USE_REGISTER_FUNCTION_CALLS = NO

GCC_INCREASE_PRECOMPILED_HEADER_SHARING = NO

OTHER_CPLUSPLUSFLAGS = $(OTHER_CFLAGS)

GCC_PRECOMPILE_PREFIX_HEADER = YES

GCC_PREFIX_HEADER = MyPlugin_Prefix.pch

GCC_ENABLE_BUILTIN_FUNCTIONS = YES

GCC_ENABLE_PASCAL_STRINGS = YES

GCC_FORCE_CPU_SUBTYPE_ALL = NO

GCC_SHORT_ENUMS = NO

GCC_USE_GCC3_PFE_SUPPORT = $(USE_GCC3_PFE_SUPPORT)

GCC_ONE_BYTE_BOOL = NO

GCC_USE_STANDARD_INCLUDE_SEARCHING = YES

GCC_PREPROCESSOR_DEFINITIONS = 

GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = 

【问题讨论】:

  • 注意其他处于同样困境的人:我从来没有解决过这个问题。我终于创建了一个新项目,并将类和其他文件从混乱的项目中导入。随着 Subversion 的阻碍,下午的大部分时间都被占用了。

标签: xcode gdb


【解决方案1】:

我在调试共享库时也遇到了这个问题。原来正在加载一个错误的、过时的库。尝试在 GDB 提示符下键入“信息目标”,并查看路径以检查对象和库文件是否正确以及您刚刚构建的文件。

【讨论】:

  • 两个月后的新答案,太好了。现在我必须想办法验证 Pellet 先生的建议,因为我确实重新开始了,而且我升级到了 Snow Leopard。呃,这需要我一段时间,除非有人碰巧遇到这个问题并且可以复制这个解决方案?
  • info target 对我有用,但没有列出的项目与丢失的目标文件的路径匹配。
【解决方案2】:

gdb 正在尝试加载存储在目标文件中而不是插件中的调试信息。如果您需要调试插件,最简单的解决方案是保留目标文件。如果您不这样做,那么您可以从插件中删除 [部分,不完整] 调试信息,以消除使用“strip -S yourplugin”的警告。我自己也遇到了一个相关的问题,在this other question上回答得比较完整。

【讨论】:

  • 感谢您的回答和交叉引用。情况并不相同(您似乎假设文件和插件是两个独立的实体,而实际上我正在尝试编译和运行插件),但是遇到此问题的任何人都可能想要试验“Strip Linked Product”和其他与strip相关的构建设置。
【解决方案3】:

我遇到了同样的问题。 启动 gdb 时,我可以看到很多

"warning: Could not find object file...". 

然后在做“回溯”的时候,我只能看到函数名,看不到行号。

问题是我的二进制文件是通用的。在我的制作文件中,我正在做:

gcc -ggdb -arch ppc64 -arch x86_64 ...

摆脱警告并查看行号的解决方案是仅使用单一架构

在您的帖子中,我可以看到您有很多架构。

VALID_ARCHS = i386 ppc ppc64 ppc7400 ppc970 x86_64

现在已经很久了,但是如果可以的话,你可以只尝试一个,看看你是否有同样的问题。

不幸的是这个解决方案并不完美,因为在一个完美的世界里我仍然想继续使用胖(通用)二进制并能够使用 gdb!

GNU gdb 6.3.50-20050815(苹果版 gdb-1472)
gcc 版本 4.2.1(Apple Inc. build 5664)

【讨论】:

    【解决方案4】:

    不确定这是不是你的情况,但是当我遇到这个问题时,是因为我忘记将实现文件添加到测试目标。

    【讨论】:

    • 已经没有测试目标了,但是我试过了,可惜没用。感谢您不厌其烦地回答。
    • 顺便说一句,我前几天也遇到了这个问题。显然,如果 SenTest 无法找到至少一种以 test 开头的方法,如 (void)testDiscombobulationOfSwallows
    【解决方案5】:

    您仍在运行从旧(已删除)位置构建的二进制文件,并且您必须重新构建该二进制文件。

    .o 文件的路径在静态链接时“烘焙”到MyPlugin.m

    如果您正在调试使用新位置中的目标文件构建的MyPlugin.mGDB 不会通过任何魔法记住旧位置。

    【讨论】:

    • 对,但是怎么做呢?我只是一个简单的 Xcode 用户,恐怕 Clean 和 Build & Run 是我构建二进制文件的全部技能。
    • 感谢您不厌其烦地回答,但我认为您的回答不正确:如果任何路径信息真的被写入 .m 文件,我在创建新项目时会出错导入 .h 和 .m 文件。相反,他们跑得很好。
    【解决方案6】:

    我对这个问题没有很好的答案:我考虑过删除这个问题,但这是一个真正的问题,互联网上只有一两个其他提及,也没有解决方案。因此,如果您为此苦苦挣扎:我感到您的痛苦,但不幸的是,我发现处理它的唯一方法是启动一个新项目并导入所有类和其他资源。但请随时贡献,如果您想出比重新开始更好的方法,我会很乐意授予您绿色 V 并投票等等。

    【讨论】:

    • 我真希望你没有检查这个非答案。我遇到的类似问题不是我的项目,而是我的项目中包含的标题。
    • 我理解您的失望,但自从我发布这个问题以来的几年里,我了解到没有一个明确的答案。我可以删除这个问题,但是这个页面被访问了很多,它确实起到了作为可能的解决方案和方法的聚集地的目的。也许这里的某些东西会激发你的灵感,也许你会很乐意分享你的解决方案。
    【解决方案7】:

    在更改我正在开发的 Photoshop 插件的构建位置后,我遇到了同样的问题。我将旧的构建文件夹移到了垃圾箱,但事实证明 Photoshop 为该文件夹保留了一个别名,该别名会根据垃圾箱中的新位置进行调整,因此它仍会从垃圾箱中加载旧插件,而不是新插件.

    “信息目标”命令指出了问题所在。

    【讨论】:

    • 某些东西包含对丢弃文件的引用,在你的情况下是 Photoshop,在我的情况下是 Xcode 或 gdb——或者我当时是这么想的。会不会有共同的罪魁祸首?是否会涉及 Finder,或者是否有其他一些过程可以跟踪插件和/或捆绑包?我只是在这里大声思考。无论如何,感谢您对这个帖子的贡献,在这个帖子中,除了精神上或类似的东西,似乎没有人获得任何积分。
    • 这就是应用程序(过去)在 Mac 上存储对文件的引用的方式——如果您移动所引用的文件或文件夹,则引用会在后台更新;即使它被移到了Thrash。关于获得积分,看起来问题已经解决了。 :-)
    【解决方案8】:

    我只是遇到了同样的问题,但使用了一个框架。

    我通过在方案中将 Build Configuration 设置为 Release 来构建框架来修复它。

    【讨论】:

    • 酷,在这个访问量很大(1 kViews!)但注定无法回答的线程中的另一个答案。您使用的是 Xcode 3 还是 Xcode 4?我在 Xcode 4 中遇到了无穷无尽的链接器问题,但是这个特定的错误还没有出现。或许您会通过包含用于调试和发布的部署构建设置来扩展您的答案?
    • 我使用了 Xcode 4。奇怪的是,在撰写此评论时,我尝试复制问题无济于事。 :/ 也许这只是一个随机问题,需要重新运行/构建插件/框架?
    • 确实以看似随机的间隔弹出——这就是它如此令人恼火的原因。这就是这个线程的目的,为那些被这个令人抓狂的问题折磨的人提供安慰。也许在此过程中获得一些智慧。感谢分享!
    【解决方案9】:

    How do I debug C++0x programs in MacPorts gcc 4.5?

    添加 -pedantic 标志可以解决此问题。检查你正在编译的路径,如果你没有看到 .dSYM 文件,那就是你的罪魁祸首。该 obv 必须存在/可执行,并且无论出于何种原因 -pedantic 都可以解决此问题。在我偶然发现上面的链接之前,我遇到了完全相同的问题。

    编辑:问题又回来了,我的解决方案不起作用,但后来我想起了我也做过的一些我没有提到的事情:似乎在命令行末尾切换文件的顺序似乎重新生成了dSYM 文件。所以就我而言,我有一个头文件和一个 .c 文件。我只是切换了其中 2 个的顺序,问题就解决了。 (不知道为什么会这样,但我猜有什么可以欺骗计算机将编译视为新场景)

    【讨论】:

      【解决方案10】:

      您需要将GENERATE_DEBUGGING 更改为否。然后清理项目并再次构建它将被修复

      【讨论】:

        猜你喜欢
        • 2015-01-06
        • 1970-01-01
        • 1970-01-01
        • 2013-08-03
        • 2013-11-26
        • 1970-01-01
        • 2019-06-18
        • 1970-01-01
        • 2015-03-10
        相关资源
        最近更新 更多