在使用CocoaPod的Xcode工程中断点没有调试信息的问题跟进

原创 2017年03月03日 12:17:13

通常客户端产品至少都会有Debug和Release两种编译配置,在编译Release版本中会进行一些优化,以减少最终产品的体积。
比如,在Release版本中会对代码执行步骤进行优化(如O1、O2等),这会导致有些代码被优化省略掉,有时无法单步调试;另外就是会去掉符号信息,这会导致断点调试时没有符号信息,所以才会有CallStack的捕获和解析内容

由于千牛iOS端会有不同版本,分别面向内部开发者、外部ISV以及最终用户。尤其是在集成QAP项目后需要提供一个专门的开发调试版本给QAP开发者,所以新增了一个QAPDistribution Scheme,并且这个Scheme是从Debug Scheme复制过来的,所以按道理是可以进行调试、查看符号信息的。结果在使用这个Scheme进行开发调试的过程中发现符号信息缺失,控制台输出如下信息:

AppName was compiled with optimization - stepping may behave oddly; variables may not be available.

这就给我们排查问题带来不便。虽然可以切换成Debug来调试排查,但由于给ISV的版本不是Debug的,所以环境不一致,可能会导致一些遗漏。于是我再次确认了下编译配置信息:

screenshot.png

确实和Debug是一致的,这就带来了困惑。
后来进一步发现在千牛自身代码中是有符号信息的,但是跟进到Pod依赖中就缺失了,所以怀疑是不是Pod工程的编译配置有问题:

screenshot.png

screenshot.png

发现果然Pods工程的编译配置是有对QAPDistribution Scheme进行优化的。那么问题来了,如果我手动修改一下,之后再进行pod update是不是又会复原?验证了下果然如此,所以只能通过Pod本身的配置来解决问。在网上搜了下,有如下解决方案

post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    if config.name.include?("QapDistribution")
      config.build_settings['GCC_OPTIMIZATION_LEVEL'] = '0'
    end
  end
end

screenshot.png

经验证有效。

C#中断点不能调试问题(当前不会命中断点,还没有为该文档加载任何资料 )

1、winform 程序中,经常会出现的一个错误,断点不可调试。    (1)当前不会命中断点,还没有为该文档加载任何资料      问题原因:窗口所在的类库或者项目在应用程序目录中(release或...

C#中断点不能调试问题(当前不会命中断点,还没有为该文档加载任何资料 )

1、winform 程序中,经常会出现的一个错误,断点不可调试。    (1)当前不会命中断点,还没有为该文档加载任何资料      问题原因:窗口所在的类库或者项目在应用程序目录中(release或...

Xcode中断点的威力

注:本文由破船译自:albertopasca。本文由HoNooD在iosfeed站点上做了推荐。   这里先推荐两篇Xcode相关的文章: Xcode Code Snippets ...
  • baoyy
  • baoyy
  • 2013年07月02日 10:14
  • 372

XCode7中断点调试Matlab的mex文件

当Matlab和C++进行混编的时候,MacOS中调试Mex的方法有几种,一是利用Xcode,二是利用LLDB。在这里我尝试用Xcode对matlab的mex文件进行断点调试。...
  • kernlen
  • kernlen
  • 2016年09月29日 15:58
  • 597

【ASP】UTF-8编码的vbscript页面,调试信息的乱码问题

在被UTF-8编码的vbscript页面,在写程序的过程中,不小心写错的话,在页面的输出信息是乱码的,如下图所示: 让人无法得知错误的原因。 毕竟在vbscript最初发展的时候,UTF-...

用WH_MOUSE做hook时,用调试语句OutputDebugString打印调试信息的时候出现的一个问题

直接上代码 //char buf1[50]={0}; //sprintf(buf1,"/nMouse Handle value is %d/n",g_hmouse); //OutputDebu...

使用VC++生成调试信息

  • 2012年03月07日 14:33
  • 137KB
  • 下载

VC调试的时候 “没有调试信息,未加载符号”解决方法

其实我重新生成项目就解决了这个问题,不过还是贴一篇挺详细的调试入门在这,怕以后有用 http://www.vckbase.com/document/viewdoc/?id=924 概述 调试是一...

VC调试的时候 “没有调试信息,未加载符号”解决方法

其实我重新生成项目就解决了这个问题,不过还是贴一篇挺详细的调试入门在这,怕以后有用http://www.vckbase.com/document/viewdoc/?id=924概述调试是一个程序员最基...

MFC中使用printf输出调试信息

MFC程序中要输出调试信息基本只能用edit空间显示内容。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在使用CocoaPod的Xcode工程中断点没有调试信息的问题跟进
举报原因:
原因补充:

(最多只允许输入30个字)