Xcode7.2如何真机调试iOS 9.3的设备

在测试iOSapp或者是开发过程中,总会遇到各种各样的升级,比如XCode的升级,MACOS的升级,iOS系统升级,这种种升级,个人比较讨厌的是iOS系统的升级,它总是在你调试代码或者是测试过程中给你弹出一个对话框,如下图:或许自己手抖一下,iPhone就开始默默的升级了。。。升级升吧,反正一会就装好了,待你升级到9.3.1,噩运也就开始了。当你拿着崭新的iOS系统去debug代码时,XCode会告诉你:你是9.3.1啊,我这XCode7.2的系统不支持啊,你升级IDE吧。然后就是冷冰冰的弹框:这个错误是说,XCode找不到对应的磁盘映像,一般是因为iPhone系统过高或者过低,当前版本的XCode没有自带相应的磁盘映像(即相应的配置文件)。一般情况下,出现这个错误,我都会去升级XCode系统到7.3,但有时候手头有个紧急的测试任务,需要打包到真机进行测试,这时不可能去花几个小时升级XCode,那么怎么办呢?解决方案:其实每次升级完XCode,都会在这个路径下有对应iPhone系统的配置包文件:/Applications/Xcode.app/Contents/Developer/Pla...

iOS开发调试技巧总结

  对于软件开发而言,调试是必须学会的技能,重要性不言而喻。对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中。不同语言、不同IDE、不同平台的调试,有同性也有个性。今天我们就来学习一下iOS开发中的调试技巧,语言暂用为OC,IDE当然是强大的Xcode。首先说明下,Xcode已经为我们调试项目提供了极大的方便。断点(Breakpoint)绝对是调试程序的第一大选择,也是掌握的基础技能。顾名思义,当程序运行到断点处时会暂停运行。比如断点打在11行,那么程序就会停在11行(注意:程序只运行到了前10行,第11行其实还没有被执行!!!)。只要在代码行旁边点击,就能添加一个断点,再次点击,就能让断点不可用(disable了,仍然存在,只是不起作用了)。在某一行创建断点的快捷键是:command+以上的断点只是最普通的,我们还能对断点的属性进行配置,设置条件,使断点更加智能化,右键断点进入编辑对话框:循环中的代码每次都要单步执行,可能这并不是我想要的。我想要在i为3的时候中断程序,进行调试,编写条件如下:设置i==3的条件后,程序就会...

EXC_BAD_ACCESS的本质详解以及僵尸模式调试原理

  有时候,你会遇到由EXC_BAD_ACCESS造成的崩溃。这篇文章会告诉你什么是EXC_BAD_ACCESS,以及它产生的原因。我还会提供一些EXC_BAD_ACCESS错误的解决方案。  一旦你理解EXC_BAD_ACCESS的本质,你就会更好地理解这个模糊的名词。这里有一个极为简单的解释,也有一个技术层面的解释。我们首先从简单的解释开始说起。  不管什么时候当你遇到EXC_BAD_ACCESS这个错误,那就意味着你向一个已经释放的对象发送消息。这是最常见的情况,但也有例外,我们将在稍后讨论。  技术层面的解释有些复杂。在C和Objective-C中,你一直在处理指针。指针无非是存储另一个变量的内存地址的变量。当您向一个对象发送消息时,指向该对象的指针将会被引用。这意味着,你获取了指针所指的内存地址,并访问该存储区域的值。   当该存储器区域不再映射到您的应用时,或者换句话说,该内存区域在你认为使用的时候却没有使用,该内存区域是无法访问的。这时内核会抛出一个异常(EXC),表明你的应用程序不能访问该存储器区域(BADACCESS)。  总之,当你碰到EXC_BAD_AC...

iOS各种调试技巧

断点,我要说的断点是BreakPoint!基本上不是残废的IDE都具有断点调试功能吧!尤其是XCode,我们家的IDE断点调试功能可是强中又是强中手!在这之前大家可以先了解一下哈子是断点?它怎么实现的?工作原理怎么样的?点击那个黑列列就创建了一个断点,再次点击就临时取消这个断点(但是不删除),长按那个断点拖出去就删除了(macos的系统工程师就是稀饭拖动的快感),当然也可以右键那个创建的断点,会弹出相应地菜单。当然也还可以监视某个变量!在对象视图中,右键某个对象,点击“Watch‘XXX’”就完成XXX对象的监视了。这里我监视了lab这个UILabel的变量,每当这个变量进行更新它的信息就会被打印到控制台。好吧!我们最基本的创建断点的工作已经学会了,Xcode舒服在什么地方呢?就是不分Debug模式和Run模式的,可以说是无缝切换的,你只要没有创建断点,那么就是Run的正常模式,如果创建了断点并且运行到断点处,就自动进入Debug模式咯,不像某EC开头的IDE,控制面板就像开飞机的一样,几万个按钮以为很强大,其实只用了Run和Stop,还...
代码星球 代码星球·2020-06-27

iOS开发:创建真机调试证书

关于苹果iOS开发,笔者也是从小白过来的,经历过各种困难和坑,其中就有关于开发证书,生产证书,in_house证书,add_Hoc证书申请过程中的问题,以及上架发布问题。今天就着重说一下关于针对于苹果开发者网站更新之后的真机调试证书申请。这所有的前提都是:你得有苹果开发者账号个人($99)、公司($99)、企业($299)账号均可。  ...

XCode的一些调试技巧

XCode内置GDB,我们可以在命令行中使用GDB命令来调试我们的程序。下面将介绍一些常用的命令以及调试技巧。po命令:为printobject的缩写,显示对象的文本描述(显示从对象的description消息获得的字符串信息)。比如:上图中,我使用po命令显示一个NSDictionary的内容。注意在左侧我们可以看到dict的一些信息:3key/valuepairs,显示该dict包含的数据量,而展开的信息显示isa层次体系(即class和metaclass结构关系)。我们可以右击左侧的dict,选中“PrintDescriptionof"dict"”,则可以在控制台输出dict的详细信息:print命令:有点类似于格式化输出,可以输出对象的不同信息:如: 注:4是NSUTF8StringEncoding的值。info命令:我们可以查看内存地址所在信息比如"infosymbol内存地址"可以获取内存地址所在的symbol相关信息: 比如"infoline*内存地址"可以获取内存地址所在的代码行相关信息: show命令:显示GDB相...
代码星球 代码星球·2020-06-27

nginx搭建前端项目web服务器以及利用反向代理调试远程后台接口

  前端同学用nginx搭建自己的web服务器,后台程序专门部署在一台服务器上(我们之前公司就有三套环境,开发/测试/生产),这样做的好处是  1、前端代码基本都是静态文件,重启一次很快,也就几秒钟时间。  2、不用配置后台语言开发环境,不需要关心后台代码是如何运行起来的,也不用管他究竟用了多少依赖包。  3、对网络环境不限制,无所谓是内网还是外网。  这样的想法是不错的,不过需要解决的一个问题是前端搭建了自己的静态服务器后,页面上发出的ajax请求如何回应?因为我们本地是没有真正的后台服务器接口的。所以我们要想办法利用nginx把请求转发到真正的远程后台服务器上,然后后台服务器返回数据给nginx,nginx收到数据后再返回给我们页面。这种技术一般成为请求转发或者叫反向代理。  (还有一种办法就是通过判断当location.href==localhost时设置所有的API请求都用绝对路径,然后关闭浏览器的跨域检查。关闭跨域检查方式,右键chrome属性,在目标那里追加:--disable-web-security--user-data-dir=C:mp  注意是追...

webpack配置:增加babel支持、打包后调试

一、babel支持    Babel其实是几个模块化的包,其核心功能位于称为babel-core的npm包中,webpack可以把其不同的包整合在一起使用,对于每一个你需要的功能或拓展,你都需要安装单独的包(用得最多的是解析ES6的babel-preset-es2015包和解析JSX的babel-preset-react包)。  1、我们先一次性安装这些包,如果安装出错,小伙伴们可以一个一个安装。npminstall--save-devbabel-corebabel-loaderbabel-preset-es2015babel-preset-react  2、在webpack.config.js中配置:{test:/.(jsx|js)$/,use:{loader:'babel-loader',options:{presets:["es2015","react"]}},exclude:/node_modules/}  3、可以修改一下index.js的代码lethzhSrting='HelloWebpack!'document.getElementById('pic').innerHTM...

有了这套微信小程序x5调试,调试一些简单的开发者工具调试不了的功能不成问题!!!!

1.首先我们需要打开微信TBS调试地址是:http://debugx5.qq.com2.然后打开手机打开开发者模式,打开USB调试 3.然后在谷歌浏览器地址栏输入chrome://inspect/#devices==============》点击就可以啦  ...

CentOS内核优化提示:cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: 没有那个文件或目录

临时解决,重启失效modprobebr_netfilter为了开机加载上面这个模块cat>/etc/rc.sysinit<<EOF#!/bin/bashforfilein/etc/sysconfig/modules/*.modules;do[-x$file]&&$filedoneEOFcat>/etc/sysconfig/modules/br_netfilter.modules<<EOFmodprobebr_netfilterEOFchmod755/etc/sysconfig/modules/br_netfilter.moduleslsmod|grepbr_netfilter ...

Linux内存管理-内核的shmall和shmmax参数(性能调优)(转)

内核的shmall和shmmax参数SHMMAX=配置了最大的内存segment的大小:这个设置的比SGA_MAX_SIZE大比较好。SHMMIN=最小的内存segment的大小SHMMNI=整个系统的内存segment的总个数SHMSEG=每个进程可以使用的内存segment的最大个数配置信号灯(semphore)的参数:SEMMSL=每个semphoreset里面的semphore数量:这个设置大于你的process的个数吧,否则你不得不分多个semphoreset,好像有process+n之说,我忘了n是几了。SEMMNI=整个系统的semphoreset总数SEMMNS=整个系统的semphore总数shmall是全部允许使用的共享内存大小,shmmax是单个段允许使用的大小。这两个可以设置为内存的90%。例如16G内存,16*1024*1024*1024*90%=15461882265,shmall的大小为15461882265/4k(getconfPAGESIZE可得到)=3774873。修改/etc/sysctl.confkernel.shmmax=15461882265...

Ubuntu 16.09开启iptables的日志实现调试

1、先配置日志文件输出参考:http://www.cnblogs.com/EasonJim/p/8413535.html2、配置日志打点参考:http://www.cnblogs.com/EasonJim/p/8413715.html3、配置加载的模块参考:http://www.cnblogs.com/EasonJim/p/8426866.html...

Ubuntu 16.09iptables通过raw表实现日志输出和调试

1、先配置好raw表日志打点功能参考:http://www.cnblogs.com/EasonJim/p/8413563.html2、配置好messages文件参考:http://www.cnblogs.com/EasonJim/p/8413535.html3、设置加载的模块参考:http://www.cnblogs.com/EasonJim/p/8426866.html...

Linux下路由表调试工具traceroute

在做静态路由表或者路由表分配时,比较直接的调试工具是traceroute,可以跟踪访问一个IP所到达的路由层级,从而知道经过哪些链路。 参考:http://man.linuxde.net/traceroute...

CentOS 6.9开启iptables的日志实现调试

系统日志配置在CentOS5上叫syslog,而在CentOS6上叫rsyslog(增强版的syslog),CentOS5上的配置文件在/etc/syslog.conf下,而CentOS6在/etc/rsyslog.conf下。 iptables的执行顺序表:说明:1、如果从外网请求到内网,那么将从头走到尾,经过上图的每一个点。2、如果是本机请求本机,那么将从localprocess开始往下执行;打比方nat来说,如果请求本机的转发规则时,那么经历的阶段就只能从OUTPUT链开始,不会经过PREROUTING链。日志调试的思路:1、先在指定的表和链增加日志的输出。2、指定日志的级别以及日志的前缀,注意,前缀非常重要,可以加快问题的分析。3、最后就是使用ping或者crul进行访问测试,观察日志。4、iptables是按顺序执行的,但是如果在某一处地方跳转了之后以下的规则就不会再执行,这一个可以日志打点后再慢慢观察发现。日志文件的配置:1、在rsyslog.conf添加配置/etc/rsyslog.conf中添加不同的日志级别kern.warning/var/log/iptab...
首页上一页...2728293031...下一页尾页