
在Swift中, 编译器不再支持预处理指令。作为替代,它使用编译时氏或缓的属性和build配置
在 Xcode 中 Build Setting 界面, 搜索 flags , 最下面就是.
我们可以通过在不同的环境下设置不同的 Tag , 来控制版本.
可以使用 #if 判定build的参数动态编译
自定义Log
还有一种方式实现版本管理就是通过切换不同的Target. 这里在参考中有详解.
在 腾讯Bugly官网 登录账号, 注册应用. 获取到AppKey.
在 文档中心 , 查看具体使用
先讲讲Object-C的方案
那怎么分析呢?
小节:
在Swift中怎么拦截crash, 避免程序崩溃呢?
目前除了调用 try-catch 方法, 并无其他比较好的解决方案, 但是这也是只能拦截 Foundation 框架里面的 NSArray , NSString 这种类型的. 并不能处理Array, String这种结构体.
既然写到这里, 推荐一个大佬写的 Swift 框架 GodEye , 里面有一个 CrashEye , 就是通过NSSetUncaughtExceptionHandler 和 signal(SIGABRT, SignalHandler), 来处理异常, 但歼模是无法避免崩溃团前, 具体我在 iOS崩溃日志 里有提到.
参考
最详细 Xcode的Targets管理项目的公开版本、测试版本、预发布版本等等
OC版LSSafeProtector
Swift版CrashEye
这是差宏win7的一宽氏个服务,类似360的可以设置禁止启动,如果没用这类安全软件虚巧册,可以到计算机管理中将此服务设置为手动 windows error reporting service很多程序崩溃时,会d出如下类似的错误对话框:
如何让程序优雅地崩溃?优雅的崩溃是指:在程序崩溃时不d出如上面的对话框。
甚雹誉至更优雅的方法是:在崩溃之前时加入自己的对话框,用于用户向程序开发方报告这一崩溃现象。
今天客户反映我们的程序崩溃后就起不来了,其实我们为了方便无人化管理,做了一个守护进程。如果程序异常退出就会重启那个程序,这在linux下没问题,程序崩溃了就直接退出返回非零值,但是window就bug了,搞不好就给你d出个错误对话框,你不点掉其实程序就没退出,守护进程就不知道这个程序是否崩溃,于谨正是这个程序就永远死在那个窗口上了。现在这不仅碍眼,还碍事!于是着手摆平之。
先介绍一下
EXCEPTION_EXECUTE_HANDLER(1) 表示下面执行__except块内及其后面的代码
EXCEPTION_CONTINUE_EXECUTION(-1) 表示回到抛出异常处继续向下执行
EXCEPTION_CONTINUE_SEARCH(0) 表示查祥肆悔找下一个异常处理例程入口
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std
long __stdcall callback(_EXCEPTION_POINTERS* excp)
{
wcout<<"sdfds\n"
return EXCEPTION_EXECUTE_HANDLER
}
int _tmain(int argc, _TCHAR* argv[])
{
SetUnhandledExceptionFilter(callback) // 加入这句后,不会d出错误对话框了,程序崩溃悄无声息地退出
char *p = 0
*p = 'p' // 程序走到此处会崩溃
return 0
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)