如果我的iOS程序在调试器中运行,我正在寻找一种方法来使XCode调试器以编程方式从Swift代码中断。这与System.Diagnostics.Debugger.Break()在Visual Studio环境中的工作方式类似。这可能吗?关键是任何打到某个特定代码段的开发人员都要破解,但是没有导致代码执行永久停止的致命错误。
编辑:这与用户要求"启用"略有不同一个断点(尽管在那个问题中提供的答案实际上是我正在寻找的)。我还在寻找可以在没有互操作,桥接标题等的Swift中完成的事情。
答案 0 :(得分:13)
对于Swift,"DEF"
适用于我。
我有这个功能:
raise(SIGINT)
对于DEBUG宏设置,请参见此处:In absence of preprocessor macros, is there a way to define practical scheme specific flags at project level in Xcode project
答案 1 :(得分:6)
如果通过xcode进行调试,则在代码中放置asm("svc 0")
将停止正在运行的应用程序。请参阅:https://stackoverflow.com/a/34078247/215400
答案 2 :(得分:0)
我不是100%肯定没有内置的 - 但你可以在XCode UI中使用符号断点创建自己想要的东西。
1)创建一个新类来表示调试器中断。
@interface MYDebuggerBreak : NSObject
+(void)fireUpDebugger;
@end
@implementation MyDebuggerBreak
+(void)fireUpDebugger {
// Do Nothing
}
@end
2)将符号断点添加到该类
上的方法[MYDebuggerBreak fireUpDebugger]
这有点迂回,您也可以将断点直接放入" fireUpDebugger"因为你控制代码。如果您想停止对您无法控制的事物的方法调用,则符号断点更有用。
答案 3 :(得分:-2)
您可以通过单击行号来设置断点。
或者您可以使用exit(0)
。但是,如果您要将应用程序提交到AppStore,则必须删除此行。否则,该应用将被拒绝。