对于我的iPhone项目中的断言宏,我正在寻找一种以编程方式进入调试器的方法.在Windows(MSVC++)上,我可以使用__debugbreak()来实现此目的.调用此函数将停止我的程序,启动调试器,并显示调用__debugbreak()的行的调用堆栈.
iPhone的__debugbreak()有什么类似的东西吗?我已经尝试过Debugger(),但这给了我一个链接器错误.
谢谢,克劳斯
nie*_*bot 26
编辑
事实证明这也有效:
#define Debugger() { raise( SIGINT ) ; }
我认为这是相同的原则.
我用这个:
#define Debugger() { kill( getpid(), SIGINT ) ; }
我认为它适用于模拟器和设备..无需组装!
小智 6
Apple开发者论坛上的一个有用的人给了我asm("trap")
在设备上asm("int3")
运行和在模拟器上运行时使用的提示.如果您在调试模式下启动程序(Option-Command-Y),这会使程序进入调试器.
(__builtin_trap()
也会进入调试器,但之后无法继续.assert(false)
使用消息终止程序,但不会进入调试器.)
我只是在我想停止的地方设置了一个断点。Xcode 会持久记住断点,因此每当我使用 gdb 运行应用程序时,它都会在该点停止。
如果您想在断言失败时中断,设置断点的好地方是 Objective-C 运行时中的函数 objc_exception_throw,它实际上会引发异常。使用“运行”>“显示”>“断点”窗口,双击“双击符号”行,然后键入名称。
归档时间: |
|
查看次数: |
6651 次 |
最近记录: |