相关疑难解决方法(0)

我可以在iOS中的代码中创建一个断点,比如VC++上的`__asm {int 3}`,并在命中之后继续执行吗?

我试图将相当于asm{int 3}(或类似)的东西放入我的iPhone程序中.我的目标是让Xcode完全停在有问题的线上,而不必调整调用堆栈(所以_Debugger听起来不像它会做的那样,而不是我无论如何都能找到它的框架......)然后离开我能够恢复执行(这就是我不满意的原因assert).

(我已经习惯了其他系统上的这些行为,我想在iOS上重现它们.)

到目前为止,我最好的尝试是:

asm volatile("bkpt 1");
Run Code Online (Sandbox Code Playgroud)

这会阻止相关行上的Xcode,但是当我尝试继续使用Cmd + Alt + P时,Xcode似乎BKPT再次运行.如果我使用Shift + Cmd + O,我只是得到这个:

Watchdog has expired.  Remote device was disconnected?  Debugging session terminated.
Run Code Online (Sandbox Code Playgroud)

(不用说,远程设备IS仍然连接.)

我没有大量的iOS,Mac,ARM,gdb或gcc的经验asm.所以我已经难过了.有没有办法让iOS和Xcode做我想做的事情?

(我不知道它是否有所作为,但根据指令大小判断我的程序是ARM代码.)

xcode arm ios

15
推荐指数
2
解决办法
5466
查看次数

iOS上的可恢复断言/断点,如带有MS编译器的__debugbreak()

我正在尝试实现自定义资产宏(类似于assert.h所具有的),但我希望能够在获得并断言之后继续执行.

例如,一个这样的ASSERT实现可以是:

#define ASSERT(expr) ((void)( (!!(expr)) || (__debugbreak(), 0)))
Run Code Online (Sandbox Code Playgroud)

__debugbreak是Microsoft编译器中的一个内部函数,它插入了软件断点,相当于_asm int 3x86.对于iOS,有不同的方法来实现__debugbreak:

  • __asm__("int $3"); 对于x86.
  • __asm__("bkpt #0"); 对于常规手臂.
  • __asm__("brk #0"); for arm64
  • __builtin_trap()
  • raise(SIGTRAP)

但是当我的断言命中时,所有这些都不能简单地跨过并继续我在使用visual studio时可以做的事情; 当我的iOS构建中的某些东西断言它在断言时卡住了,我别无选择,只能终止,我甚至无法手动移动指令指针并跳过断言.

是否有可能在iOS上实现断言进入调试器并仍允许我继续执行的断言?

c c++ debugging assert ios

10
推荐指数
1
解决办法
490
查看次数

如何陷入调试器并继续使用iOS硬件?

在Mac OS X和iOS模拟器(均为x86)中,我们可以使用int3内联汇编中的指令陷阱到调试器(LLDB).这很好,因为它陷阱到特定的代码行,但我们可以通过在调试器中按下continue来立即继续.

有没有办法在iOS硬件上执行此操作?

对于一个较旧的问题的回答提到了raise(SIGINT)我所能看到的(从检查中signal.h)并不存在.另一个答案提到trap汇编指令,它会导致构建错误("无法识别的指令助记符").同样无法识别的是ARM文档中提到BKPT汇编指令.

我已经尝试__builtin_trap()了几乎,几乎做了我想要的,但不允许我继续.除非我使用jump +1或者手动推进指令指针,否则我会继续按下它register write pc `$pc+8\`,这比仅仅按下继续操作要方便得多.

我正在为使用Xcode 7.3.1的32位和64位设备构建iOS 9.任何帮助表示赞赏!

iphone debugging assembly breakpoints ios

6
推荐指数
1
解决办法
806
查看次数

在ARM/iOS处理器上等效于'int 3'

我正在寻找相当于

__asm__ int 3
Run Code Online (Sandbox Code Playgroud)用于在物理设备上调试时的ARM/iOS处理器.是BKPT吗?我想做的就是暂停处理器,这样我就可以在那一步过去或继续执行,就像我可以使用int 3一样.

iphone debugging assembly

5
推荐指数
2
解决办法
2726
查看次数

标签 统计

debugging ×3

ios ×3

assembly ×2

iphone ×2

arm ×1

assert ×1

breakpoints ×1

c ×1

c++ ×1

xcode ×1