代码之家  ›  专栏  ›  技术社区  ›  Elise van Looij

xcode“警告:找不到对象文件…没有可用的调试信息…”

  •  5
  • Elise van Looij  · 技术社区  · 15 年前

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

    警告:找不到对象文件“/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不会放手。我甚至丢弃了预编译头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 = 
    
    9 回复  |  直到 10 年前
        1
  •  1
  •   J.-P. Pellet    14 年前

    我在调试共享库时也遇到了这个问题。结果发现加载了一个错误的、过时的库。尝试在gdb提示下键入“info target”,并查看路径以检查对象和库文件是否正确以及是否是您刚构建的文件。

        2
  •  1
  •   Community Paul Sweatte    7 年前

    gdb试图加载调试信息,调试信息存储在对象文件中,而不是插件中。如果需要调试插件,最简单的解决方案是保留对象文件。如果没有,则可以从插件中删除[部分,不完整]调试信息,以消除带有“strip-s yourplugin”的警告。我自己也遇到了一个相关的问题,回答得更彻底了。 this other question .

        3
  •  1
  •   dalf    10 年前

    我也有同样的问题。 当启动GDB时,我可以看到很多

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

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

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

    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版(苹果公司5664版)

        4
  •  0
  •   phunehehe    15 年前

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

        5
  •  0
  •   Employed Russian    15 年前

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

    通向的道路 .o 文件被“烘焙”到 MyPlugin.m 在静态链接时。

    没有什么魔法 GDB 如果你在调试的话会记得那个旧位置 MyPlugin 在新位置使用对象文件生成。

        6
  •  0
  •   Elise van Looij    15 年前

    我对这个问题没有一个很好的答案:我已经考虑过删除这个问题,但它是一个真正的问题,而且在互联网上只有一两次提到它,也没有解决方案。所以,如果你正为此苦苦挣扎:我感到你的痛苦,但不幸的是,我找到的唯一方法是启动一个新项目,导入所有类和其他资源。但是,请随时做出贡献,如果你能想出比重新开始更好的办法,我会很高兴地授予你绿色V和赞成票等等。

        7
  •  0
  •   Frederik Slijkerman    14 年前

    在更改了我正在开发的Photoshop插件的构建位置之后,我也遇到了同样的问题。我把旧的build文件夹移到了垃圾箱,但结果发现photoshop在文件夹中保留了一个别名,该别名会根据垃圾箱中的新位置进行调整,因此它仍然会从垃圾箱中加载旧的插件,而不是新的插件。

    “信息目标”命令指出了这个问题。

        8
  •  0
  •   inket    13 年前

    我也遇到了同样的问题,但是有一个框架。

    我用 生成配置 设置为 释放 在该方案中。

        9
  •  0
  •   Community Paul Sweatte    7 年前

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

    添加-迂腐的标志修复了这个问题。检查正在编译的路径,如果看不到.dsym文件,这就是您的罪魁祸首。这个obv需要存在于per/executable中,无论出于什么原因——学究式的解决了这个问题。我也有同样的问题,直到我偶然发现上面的链接。

    编辑:问题又出现了,我的解决方案也不起作用,但我记得我也做了一些我没有提到的事情:似乎在命令行末尾切换文件的顺序似乎可以重新生成dsym文件。所以在我的例子中,我有一个头文件和to.c文件。我刚换了2个顺序,问题就解决了。(不知道为什么会这样,但我猜有什么能欺骗计算机将编译视为一个新的场景)