在我的项目中,我在我的Linux主机上构建了三个应用程序。
输出二进制文件是, main_process update_data db_process
问题:
当我跑步时,
gdb ./main_process
来自gdb的错误消息:
(gdb) r
Starting program: /home/iir/bin/
warning: `/lib/ld-linux.so.2': Shared library architecture i386 is not compatible with target architecture i386:x86-64.
warning: `/lib/ld-linux.so.2': Shared library architecture i386 is not compatible with target architecture i386:x86-64.
Failed to read a valid object file image from memory.
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7dda402 in ?? () from /lib/ld-linux.so.2
(gdb) bt
#0 0x00007ffff7dda402 in ?? () from /lib/ld-linux.so.2
Backtrace stopped: Cannot access memory at address 0x10074
编辑:这个问题得到了回报,我想在这里提一下,由于在GDB中运行arm二进制文件而引起的段错误。我已经注意到它在我们的构建系统中的错误,它实际上没有为arm拱而不是x86构建。
答案 0 :(得分:1)
来自gdb的错误消息
(gdb) r Starting program: /home/iir/bin/
错误消息显示您正在尝试执行 /home/iir/bin/
这似乎是一个目录。这不是您在运行gdb ./main_process
后观察到的实际结果。
结论:你没有告诉我们你实际做了什么以及你观察到了什么,并试图猜测这可能是浪费时间。
答案 1 :(得分:0)
这个问题得到了回报,我想在这里提一下,由于在主机GDB中运行arm二进制文件而导致的段错误。
我已经注意到它在我们的构建系统中的错误,它实际上没有为arm拱而不是x86构建。
<强>问题:强>
gdb一次只处理一个可调试的可执行文件? 答:是的,我可以使用run将另一个可执行文件作为参数传递。
所有这三个可执行文件都无法在gdb中运行一次? 答:没有。