【发布时间】:2014-01-13 13:25:11
【问题描述】:
我正在尝试调试在 ARM926EJ-S rev 5 (v5l) 上运行的 C 程序。该软件与std.交叉编译(并静态链接)。 arm-linux-gnueabi 编译器(通过突触安装)。我运行 Ubuntu 13.04 64 位。设备上有一个 Busybox v1.18.2。我成功编译了 gdbserver(使用 host=arm-linux-gnueabi)和 gdb(使用 target=arm-linux-gnueabi),并且可以通过以下方式在嵌入式设备上启动我的程序本地运行的 gdb... 我现在的问题是,我没有正确的回溯输出。
gdb 的消息:
Remote debugging using 192.168.21.127:2345
0x0000a79c in ?? ()
(gdb) run
The "remote" target does not support "run". Try "help target" or "continue".
(gdb) continue
Continuing.
Cannot access memory at address 0x0
Program received signal SIGINT, Interrupt.
0x00026628 in ?? ()
(gdb) backtrace
#0 0x00026628 in ?? ()
#1 0x00036204 in ?? ()
#2 0x00036204 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)
我尝试用-g、-g3 -gdwarf-2、-ggdb、-ggdb3编译软件,没有任何区别。
有人知道我在这里缺少什么吗?
这可能是 BusyBox 的问题,还是我的主机系统上需要额外的库?
我还尝试了 execinfo.h 中的函数 backtrace_symbols,其输出几乎相同...
提前感谢您的回复。
【问题讨论】:
-
尝试谷歌solib-absolute-prefix,并在远程主机上使用
file target.elf,所以它有符号表。默认情况下,GDB 不会从远程传输符号,它希望您在主机调试器的文件系统上拥有符号。..
标签: c gdb arm cross-compiling gdbserver