我正在Raspberry Pi4(带有Cortex-A72的armv7l
架构)上运行Ubuntu 20.04 32位服务器。我有一个简单的程序,return.s
如下:
.section .text
.global _start
_start: mov r0, #1
mov r7, #1
swi 0
如果排除libc
,我可以在本地组装,运行和调试程序:
as -g return.s -o return.o
ld return.o -o return
./return; echo $? # result is "1"
gdb return
start # breaks at first line
但是如果我将libc
包含为动态链接库,则调试会挂起:
ld return.o -o return -lc-2.31 \
-dynamic-linker=/usr/lib/arm-linux-gnueabihf/ld-linux-armhf.so.3
./return; echo $? # result is "1"
gdb return
start # hangs
如果我使用Ctrl-C中断调试器,则会看到以下回溯信息:
#0 0xb6fe12fe in ?? () from /usr/lib/arm-linux-gnueabihf/ld-linux-armhf.so.3
#1 0xb6fd81e4 in ?? () from /usr/lib/arm-linux-gnueabihf/ld-linux-armhf.so.3
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
知道发生了什么吗?是否可以使用链接库调试程序?如果没有,是否有可用的静态库?