首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode调试器:代码窗口与堆栈窗口不匹配

Xcode调试器:代码窗口与堆栈窗口不匹配
EN

Stack Overflow用户
提问于 2009-02-24 16:19:20
回答 3查看 1.4K关注 0票数 2

我正在尝试将一个基于SDLWxWidgets的相当大的Windows项目移植到Mac。

这是我第一次在Mac上运行我的应用程序,但是调试器似乎不能正常工作。当进入我的应用程序时,堆栈视图似乎是有意义的,但是当我单击调试器堆栈视图中显示的函数名称之一时,下面的代码视图显示了一段完全不同的代码。

例如,我在堆栈视图中单击"main“,但是下面的代码窗口跳转到来自Mac的stdexcept第100行。

我尝试使用调试器和"hello world“项目,一切都正常,所以这个问题必须与我的项目相关。我已经在项目选项中检查了以下设置:

生成调试符号:1级 调试符号:所有符号 优化级别:无 构建变体:调试

我还确保在调试器首选项中关闭“加载符号懒惰”。

是什么原因导致调试器故障?

编辑:我已经按照sqook.的建议将所有.cpp和.h文件转换为Unix行结束,从而排除了文件的结束。

第二编辑:由于问题只发生在这个特定的项目中,所以我在这里发布了我从默认设置中更改的所有设置(除了头搜索路径)。也许其中之一就是罪魁祸首?

代码语言:javascript
复制
    ARCHS = $(NATIVE_ARCH)
    SDKROOT = macosx10.5
    VALID_ARCHS = i386 x86_64
    BUILD_VARIANTS = normal
    MACOSX_DEPLOYMENT_TARGET = 10.4
    COPY_PHASE_STRIP = NO
    DEAD_CODE_STRIPPING = NO
    OTHER_LDFLAGS = $(OTHER_LDFLAGS_LIBBOOST) $(OTHER_LDFLAGS_QUOTED_FOR_PROJECT_1) $(OTHER_LDFLAGS_QUOTED_FOR_PROJECT_2) $(OTHER_LDFLAGS_WXWIDGETS)
    PREBINDING = NO
    PRODUCT_NAME = Gemsweeper
    FRAMEWORK_SEARCH_PATHS = $(HOME)/Library/Frameworks /Library/Frameworks $(FRAMEWORK_SEARCH_PATHS)
    HEADER_SEARCH_PATHS = $(HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_7) $(HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_6) /usr/local/include $(HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_1) $(HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_2) $(HOME)/Library/Frameworks/SDL.framework/Headers /Library/Frameworks/SDL.framework/Headers $(HEADER_SEARCH_PATHS) /opt/local/var/macports/software/boost/1.37.0_0+darwin_9/opt/local/include $(HOME)/Library/Frameworks/SDL.framework/Headers /Library/Frameworks/SDL.framework/Headers $(HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_3) $(HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_4) $(HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_5)
    LIBRARY_SEARCH_PATHS = /usr/local/lib /opt/local/lib
    GCC_DEBUGGING_SYMBOLS = full
    GCC_OPTIMIZATION_LEVEL = 0
    OTHER_CFLAGS = $(WX_CXX_FLAGS)
    OTHER_CPLUSPLUSFLAGS = -I/usr/local/lib/wx/include/mac-ansi-debug-2.8 -I/usr/local/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXDEBUG__ -D__WXMAC__
    GCC_PREPROCESSOR_DEFINITIONS = NO_BASS_SOUND _DEBUG XCODE __WXMAC__
    GCC_WARN_ABOUT_RETURN_TYPE = YES
    GCC_TREAT_NONCONFORMANT_CODE_ERRORS_AS_WARNINGS = YES
    GCC_WARN_UNUSED_VARIABLE = YES
    HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_1 = '/Users/adriangrigore/Documents/Gemsweeper Mac'
    HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_2 = "/Users/adriangrigore/Documents/Gemsweeper Mac/Finity Engine VS 2003/WxNonogram"
    HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_3 = "/Users/adriangrigore/Documents/Gemsweeper Mac/Finity Engine VS 2003/Finity Engine VS 2003/myunits/resmanager"
    HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_4 = "/Users/adriangrigore/Documents/Gemsweeper Mac/Finity Engine VS 2003/Finity Engine VS 2003/myunits"
    HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_5 = "/Users/adriangrigore/Documents/Gemsweeper Mac/Finity Engine VS 2003/Finity Engine VS 2003"
    HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_6 = "/Users/adriangrigore/Documents/Gemsweeper Mac/Finity Engine VS 2003/Finity Engine VS 2003/myunits/compiler-dependent"
    HEADER_SEARCH_PATHS_QUOTED_FOR_PROJECT_7 = '/Users/adriangrigore/Documents/Gemsweeper Mac/3rd party/AntiGrain/include'
    OTHER_LDFLAGS_LIBBOOST = /opt/local/lib/libboost_program_options-mt.a /opt/local/lib/libboost_filesystem-mt.a /opt/local/lib/libboost_serialization-mt.a /opt/local/lib/libboost_system-mt.a /opt/local/lib/libboost_thread-mt.a
    OTHER_LDFLAGS_QUOTED_FOR_PROJECT_1 = '/Users/adriangrigore/Documents/Gemsweeper Mac/3rd party/FreeImage/Dist/libfreeimage.a'
    OTHER_LDFLAGS_QUOTED_FOR_PROJECT_2 = '/Users/adriangrigore/Documents/Gemsweeper Mac/3rd party/cpuinfo-1.0/libcpuinfo.a'
    OTHER_LDFLAGS_WXWIDGETS = -L/usr/local/lib   -framework IOKit -framework Carbon -framework Cocoa -framework System -framework QuickTime -framework OpenGL -framework AGL  -lwx_macd_richtext-2.8 -lwx_macd_aui-2.8 -lwx_macd_xrc-2.8 -lwx_macd_qa-2.8 -lwx_macd_html-2.8 -lwx_macd_adv-2.8 -lwx_macd_core-2.8 -lwx_base_carbond_xml-2.8 -lwx_base_carbond_net-2.8 -lwx_base_carbond-2.8

希望最后一次编辑:我刚刚发现问题实际上并不与Xcode Debugger有关,而是与底层GDB有关。在通过命令行调试我的程序时,我看到了完全相同的问题。因此,我将这个问题转到https://stackoverflow.com/questions/594782/gdb-stack-trace-displays-wrong-file-name-and-line-number

EN

回答 3

Stack Overflow用户

发布于 2009-02-24 16:22:16

Xcode是有问题的。非常,非常小。即使是3.x,我昨晚也遇到了同样的问题,因为它会显示出比它应该的更多的循环。插入一些printf()显示是调试器IDE出错了。

然而,您可以尝试一个干净的构建。并确保您使用的是调试版本。所有模块都已加载。

票数 1
EN

Stack Overflow用户

发布于 2009-02-24 16:24:15

我也注意到了这一点,并向苹果报告了一个bug。他们否认了这种行为,但认为这可能是文件中错误的行尾造成的。无论如何,尝试将行尾转换为unix/mac格式,进行完全清理,然后运行它。

编辑:我应该指定在Xcode中有一个首选项,您可以在这里保存行结束类型。您可以将所有文件重新保存,并以您选择的行结尾。但是,这也有点不一致(grr),因此我建议使用翻转,并执行以下操作:

代码语言:javascript
复制
find /wherever -name "*.cpp" -print -exec flip -u {} \;

同样,我不能保证这会解决问题,因为我接受了苹果的建议,最终还是看到调试器在我的断点下停了几十行。

票数 1
EN

Stack Overflow用户

发布于 2009-03-03 09:58:46

请看我的回答这里。SDL将main重新定义为SDL_main

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/582412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档