eng*_*gie 15 debugging assembly gdb arm
我该如何做相当于x86软件的中断:
asm( "int $3" )
Run Code Online (Sandbox Code Playgroud)
在ARM处理器(特别是Cortex A8)上生成一个会破坏gdb下执行的事件?
Igo*_*sky 18
ARM没有定义特定的断点指令.它可以在不同的操作系统中有所不同.在ARM Linux上,它通常是FE DE FF E7ARM模式下的UND操作码(例如)和BE BEThumb中的BKPT().
使用GCC编译器,您通常可以使用__builtin_trap()intrinsic来生成特定于平台的断点.另一种选择是raise(SIGTRAP).
por*_*ast 13
使用arm-none-eabi-gdb.exe交叉编译器,这对我很有用(感谢Igor的回答):
__asm__("BKPT");
Run Code Online (Sandbox Code Playgroud)
我有一个简单的库(scottt/debugbreak)就是为了这个:
#include <debugbreak.h>
...
debug_break();
Run Code Online (Sandbox Code Playgroud)
只需将单个debugbreak.h标头复制到您的代码中,它就会正确处理 ARM、AArch64、i386、x86-64 甚至 MSVC。
| 归档时间: |
|
| 查看次数: |
22986 次 |
| 最近记录: |