【发布时间】:2014-11-03 04:03:13
【问题描述】:
我正在尝试使用 qemu 指令级模拟器来模拟“C”程序。通过发出以下命令来编译“C”程序
arm-none-linux-gnueabi-gcc -g ex_qsort.c -o ex_qsort_lin_work
然后我使用以下命令启动 qemu
“qemu-arm -g 1234 -L /path/to/codesourcery/arm-none-linux-gnueabi/libc ./ex_qsort_lin_work”
然后我使用 gdb 连接到程序。我正在尝试访问程序内存位置并更改汇编代码。但是当我尝试访问内存时,出现以下错误
(gdb) x 0x00008510
0x8510 <main+76>: 0xe3530004
(gdb) set *(0x8510) = 0xe3530002
Cannot access memory at address 0x8510
我不确定为什么会出现此错误。 Gdb 没有给出任何其他警告。当我启动 gdb 时,我将 sysroot 指向 arm 库。但是,当我检查共享库时,我收到以下消息
(gdb) info sharedlibrary
From To Syms Read Shared Object Library
0xf67d67d0 0xf67f0f58 Yes (*) /path/to/codesourcery/arm-none-linux-gnueabi/libc/lib/ld-linux.so.3
(*): Shared library is missing debugging information.
不确定这是否会导致问题。静态链接库也无济于事 我的目标是更改给定地址的指令
【问题讨论】:
标签: assembly gdb embedded arm qemu