把 c 编译成 arm 指令的可执行文件
/usr/bin/arm-linux-gnueabi-g++ hello.cpp
cat hello.cpp
#include <stdio.h>
void crash(){
char *a=0;
*a=0;
}
int main()
{
printf("hello world\n");
crash();
printf("after crash\n");
}
直接运行报错,因为 host 是 linux x86
$ ./a.out
-bash: ./a.out: cannot execute binary file
需要用 qemu-arm 来运行, 结果是期望的
qemu-arm -L /usr/arm-linux-gnueabi/ a.out
hello world
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
Segmentation fault (core dumped)
进行远程调试(关键是增加 -g 参数,指定端口为1235)
qemu-arm -g 1235 -L /usr/arm-linux-gnueabi/ a.out
<