Xcode“警告:无法找到目标文件...没有可用的调试信息......”

时间:2009-11-12 15:21:26

标签: xcode gdb

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

  

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

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

这些是具有值的构建设置(Debug)。顺便说一句,就我所见,它们就像没有这个问题的插件一样。

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 = 

10 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

gdb正在尝试加载存储在目标文件中而不是插件中的调试信息。如果您需要调试插件,最简单的解决方案是保持对象文件。如果你不这样做,那么你可以从插件中删除[部分,不完整]调试信息,以摆脱'strip -S yourplugin'的警告。我自己遇到了一个相关的问题,并在this other question上做了更全面的回答。

答案 2 :(得分:1)

我遇到了同样的问题。 启动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(Apple版本gdb-1472)
gcc版本4.2.1(Apple Inc. build 5664)

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

如果你在新位置使用目标文件调试GDB,那么MyPlugin.m就不会记住那个旧位置。

答案 5 :(得分:0)

我对这个问题没有一个好的答案:我考虑过删除这个问题,但这是一个真正的问题,在互联网上只有一两个其他的提及它,也没有解决方案。所以,如果你正在努力解决这个问题:我感到很痛苦,但不幸的是,我发现处理它的唯一方法是启动一个新项目并导入所有类和其他资源。但是请随意贡献,如果你想出一些比重新开始更好的东西,我很乐意为你颁发绿色V和upvote以及所有这些。

答案 6 :(得分:0)

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

'info target'命令指出了我的问题。

答案 7 :(得分:0)

我遇到了同样的问题但是有了框架。

我通过在方案中将构建配置设置为发布来构建框架来修复它。

答案 8 :(得分:0)

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

添加-pedantic标志修复此问题。检查您正在编译的路径,如果您没有看到.dSYM文件,那就是您的罪魁祸首。这个obv需要在每个/可执行文件中,并且无论出于什么原因 - 修复了这个问题。在我偶然发现上述链接之前,我遇到了完全相同的问题。

编辑:问题回来了,我的解决方案无法正常工作,但后来我记得我也做了一些我没有提到的事情:似乎在命令行末尾切换文件的顺序似乎重新生成了dSYM文件。所以在我的情况下,我有一个头文件和.c文件。我只是改变了其中2个的顺序,问题解决了。 (不知道为什么会这样,但我想有什么东西可以欺骗计算机将编译视为新的场景)

答案 9 :(得分:0)

您需要将 GENERATE_DEBUGGING 更改为 NO。然后清理项目并重新构建它会被修复