gdb 远程qemu-arm调试

本文介绍了如何将C程序编译为ARM指令的可执行文件,并在qemu-arm中运行。当遇到Segmentation fault时,通过添加-g参数启用远程调试,并启动gdbserver。虽然使用Linux-x86的gdb无法显示符号,但需要使用特定于ARM的gdb进行有效调试。
摘要由CSDN通过智能技术生成

把 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 

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值