使用GDB进行远程调试:程序在SIGILL,非法指令后死亡

时间:2014-08-22 09:25:10

标签: c gdb

我正在尝试在兼容ARMv6的处理器rev 4上调试代码。

我使用--host=arm-openwrt-linux-gnueabi标志编译了GDBserver。 gdb本身是用

编译的
   --host=x86_64-unknon-linux-gnu --target=arm-openwrt-linux-gnueabi --with-expat

如果我现在连接到gdbserver,我的程序正在运行,我收到以下错误消息:

(gdb) target remote 192.168.x.x:2345
Remote debugging using 192.168.x.x:2345
Cannot access memory at address 0x0
0xb6fdaec0 in ?? ()
(gdb) set sysroot /home/xxxxxx/Dokumente/lgn-sdk-v0.2/staging_dir/toolchain-arm_v6k_gcc-4.6-linaro_eglibc-2.15_eabi/
Reading symbols from /home/xxxxxx/Dokumente/lgn-sdk-v0.2/staging_dir/toolchain-arm_v6k_gcc-4.6-linaro_eglibc-2.15_eabi/lib/ld-linux.so.3...done.
Loaded symbols for /home/xxxxxxx/Dokumente/lgn-sdk-v0.2/staging_dir/toolchain-arm_v6k_gcc-4.6-linaro_eglibc-2.15_eabi/lib/ld-linux.so.3
(gdb) n
Single stepping until exit from function _start,
which has no line number information.

Program received signal SIGILL, Illegal instruction.
0xb6fe8d20 in _dl_debug_initialize () from /home/xxxxx/Dokumente/lgn-sdk-v0.2/staging_dir/toolchain-arm_v6k_gcc-4.6-linaro_eglibc-2.15_eabi/lib/ld-linux.so.3
(gdb)  
Single stepping until exit from function _dl_debug_initialize,
which has no line number information.

Program terminated with signal SIGILL, Illegal instruction.

1 个答案:

答案 0 :(得分:1)

我没有完整的答案,但我遇到了类似的问题并通过以下方式解决:

  • 通过目标远程连接
  • break main
  • 继续
  • 然后,设置sysroot

这让我可以通过崩溃。不过,我当然对更好的解决方案感兴趣。

相关问题