最近总被测试同学提一些闪退的bug,问题是很难复现,初步统计概率不到5%,但是有闪退问题,作为一个开发寝食难安啊。怎么办,先试着复现看看情况吧,于是疯狂各种点,终于复现一次,然后看看堆栈信息,是在一个Framework里面结构体内调用到了野指针,由于之前打印的Log都没有针对性,所以也没获取到什么有用的信息。
要想精确定位问题所在,还是要改一下代码,增加一些Log,并且可以查看调用栈信息。
如两个工程A和B,a依赖b工程生成的静态库,但如果想在a中调试b的代码,就需要将b工程引入,以下为操作步骤:
- 将b工程拷贝到a工程目录下,(当然也可以不拷贝,不过为了后面方便填写路径);
- ctrl+右键点击a工程的工程文件名,然后add files to “xx”, 将b工程的.xcodeprj文件添加进来(注意只需要添加.xcodeprj文件,其他文件不需要添加);
- 选择a工程target,点击build setting选项,右上角搜索Header Search找到Header Search Paths双击,在弹出框里点有下角的+号,添加导入工程的路径,右侧选项选recursive(递归查找文件);
- 因为a工程要包含b工程的静态库/动态库,假如b工程生成的静态库为bb.a, 在a工程的General选项中,拉到link frameworks and libraries项,点击+号,将b工程下的bb.a静态库添加上(.Framework同理)。
当然,这一切都是要有源代码为前提,否则只能另想办法了。