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

时间:2015-12-29 21:39:57

标签: ios xcode swift debugging

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

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

4 个答案:

答案 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,则必须删除此行。否则,该应用将被拒绝。