调试相关参考:xcode 中的调试
重点说下Symbol BreakPoint
: 给全局中的函数添加断点
前言:最常见的场景是代替在
appDelegate
里引入某些调试工具,比如如下的injection,但是又不想提交这个调试信息影响其他伙伴,只能在提交代码时删除或注释掉,提交完代码然后再打开,这样容易导致某些忘记注释就提交或者频繁操作令人厌烦的问题
一、injection
参考:injectionIII工具:让iOS开发调试实现热重载
1.1 在App Store
上搜索下载injectioniii

1.2 启动下载好的injectioniii
选中对应的项目文件夹
1、选择Open Project
,然后选中对应的项目文件夹,再选中Select Project Directory


2、确保选中
File Watcher

1.3
1.3.1 常规引入injection的方式
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
/// 要引入某些调试工具,比如injection
[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];
}
1.3.2使用Symbolic BreakPoint
引入的方式
选中一个项目,然后选中debug拦,点击+
,然后选中Symbolic Breakpiont

1、输入自定义名称:这个随便输入就可以,我输入的是injectionIII
2、输入调试方法:UIApplicationMain
,这个方法就相当于在- application:didFinishLaunchingWithOptions:
里引入
3、选择action:Debugger Command
4、输入调试引入的内容:po [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load]
5、选中自动继续

如果是要给每个项目都同步这个设置,直接将设置移动到User下就可以

一切设置完毕运行项目后会是如下效果

如果有修改项目文件,然后按cmd+s
保存,则图标会变成绿色,并有日志输出

等编译热加载结束,然后图标会变黄色,并有相应日志输出

引入LookIn的UI调试也是类似,
一、下载安装LookInServer: https://lookin.work/get/
唯一不同的是输入的调试命令是
expr (Class)NSClassFromString(@"Lookin") == nil ? (void *)dlopen("/Applications/Lookin.app/Contents/Resources/LookinServerFramework/LookinServer.framework/LookinServer", 0x2) : ((void*)0)
参考:
如何使用 Xcode 断点添加 Lookin 的 iOS Framework ?
最后完整效果:

网友评论