能否在Xcode调试器控制台执行App全局函数?
在暂停的iOS App中通过Xcode调试控制台执行全局函数的可行性
完全可行,只要满足几个关键条件,就能在Xcode调试器里调用你App中定义的全局函数:
确保函数符号未被编译器优化移除
如果你开启了-Os或-O3这类高等级优化,Xcode可能会把没被代码直接调用的全局函数从二进制里删掉。解决方法是给函数加个标记强制保留符号:- Objective-C:在函数声明前加
__attribute__((used))__attribute__((used)) void myGlobalFunc() { // 你的函数逻辑 } - Swift:给全局函数添加
@_cdecl属性,把它暴露成C兼容的符号,方便调试器识别@_cdecl("mySwiftGlobalFunc") func mySwiftGlobalFunc() { // 你的函数逻辑 }
- Objective-C:在函数声明前加
在调试控制台直接调用
当App暂停在断点时,直接在Xcode的调试控制台输入函数名(带参数的话传入对应值)回车即可执行。比如:// 无参函数 myGlobalFunc() // 带参函数 myGlobalFunc(100, "debug-test")注意运行状态依赖
如果你的全局函数依赖App的特定运行状态(比如访问UI控件、未初始化的全局变量),调用时可能会触发崩溃或者得到异常结果,调用前要确认相关状态是合法的。
内容的提问来源于stack exchange,提问作者Blazej SLEBODA
相关产品推荐
相关产品推荐

