我可以使Xcode的调试器以编程方式中断吗?

Jac*_*obJ 14 debugging xcode ios swift

如果我的iOS程序在调试器中运行,我正在寻找一种方法来使XCode调试器以编程方式从Swift代码中断.这与System.Diagnostics.Debugger.Break()在Visual Studio环境中的工作方式类似.这可能吗?关键是任何打到某个特定代码段的开发人员都要破解,但不会产生导致代码执行永久停止的致命错误.

编辑:这与要求"启用"断点的用户略有不同(尽管该问题中提供的答案确实是我正在寻找的).我还在寻找可以在没有互操作,桥接标题等的情况下在Swift中完成的事情.

hyo*_*uuu 16

对于Swift,raise(SIGINT)适合我.

我有这个功能:

func fail(desc: String) {
  #if DEBUG
    print("assertFail:\(desc)")
    raise(SIGINT)
  #endif
}
Run Code Online (Sandbox Code Playgroud)

对于DEBUG宏设置,请参见此处:在没有预处理器宏的情况下,有没有办法在Xcode项目中的项目级别定义实用的方案特定标志

  • 在swift 2.2中工作,谢谢@hyouuu (2认同)

tsk*_*bru 6

asm("svc 0")是否通过Xcode中调试你的代码将停止运行的应用程序.请参阅:https://stackoverflow.com/a/34078247/215400

  • 在 swift 5 中,你必须使用 `raise(SIGINT)`,而不是 `asm("svc 0") (2认同)