gdb用sigsev失败了,不知道为什么?

时间:2017-03-15 15:07:15

标签: c debugging gdb

在我的项目中,我在我的Linux主机上构建了三个应用程序。

输出二进制文件是,     main_process     update_data     db_process

问题:

  • gdb一次只处理一个可调试的可执行文件?
  • 所有这三个可执行文件都无法在gdb中运行一次?

当我跑步时,

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构建。

2 个答案:

答案 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中运行一次? 答:没有。