Yocto - 无法执行调试包

4

我想要安装由Yocto构建的应用程序的调试包。

安装后,可执行文件位于.debug目录中。

但是,当我尝试执行这些文件时,会出现以下错误:

-sh: /etc/.debug/app: cannot execute binary file: Exec format error

file命令显示:

file /etc/.debug/app
/etc/.debug/app: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter *empty*, for GNU/Linux 2.6.32, BuildID[sha1]=1dfc051dc47683e0715b842998daadd4d12c541e, not stripped

arch命令输出为armv7l

这个没有调试信息的应用程序似乎运行良好。

应用程序的file命令是:

file /etc/app
/etc/app: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=1dfc051dc47683e0715b842998daadd4d12c541e, stripped

我希望执行使用调试符号编译的应用程序,这样当应用程序崩溃时会生成“coredump”。是否有方法来解决这个问题或者是否有其他更好的方法来运行包含调试信息的程序 [使用Yocto框架]?
1个回答

1

调试包仅包含调试符号,您不直接运行它们。运行标准可执行文件,gdb将读取调试包安装的符号。


我不想尝试从gdb中运行应用程序。在我的情况下,从gdb中运行可能会降低性能。相反,我想运行应用程序并使其崩溃,以便生成核心转储文件。一旦我获得了核心转储文件,我可以稍后进行分析。 - AKV
只需将gdb指向核心转储文件,它就会自动从调试包中读取符号。 - Ross Burton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接