【发布时间】:2014-08-18 13:45:11
【问题描述】:
我有一个广泛使用 libxml2 的 C++ 静态库。我使用 Google Test 对其进行测试,这意味着我构建了一个命令行可执行文件,其中调用了单元测试。命令行应用程序完美运行,所有输出都符合预期。
我通过复制源文件将库转移到 Xcode 中的 iOS 项目。我构建它并从扩展名为 .mm 的文件中调用 C++ 源文件。我已将 Xcode 的 C++ 语言方言设置为 c++11,将 C++ 标准库设置为 LLVM。
为了构建命令行,我传递了这些开关:-Wno-attributes -g -Wall -std=c++11 -stdlib=libc++ -Wunused -D_GLIBCXX_USE_NANOSLEEP -m64
我的问题是,一旦我调用 iOS 应用程序,它就会静默崩溃。一些穴居人在整个代码中使用 NSLog 语句进行调试表明某些变量可能为空。问题是完全相同的输入会使应用程序在 Xcode 上崩溃,而不是在控制台上。
调试此问题的最佳方法是什么?
【问题讨论】:
-
最新版本。
-
正如我所说,它是 iOS 7。基础 SDK 为 7.1。
-
注意未初始化的变量。添加 NULL 检查。插入大量断点。
-
但为什么会有不同的行为?