使用管道时奇怪的二进制符号

时间:2018-07-23 18:41:21

标签: shell gdb gdbserver

我正在使用此脚本来编译程序并在嵌入式板上调试它:

#!/bin/bash

# Recompile:
make clean
make

# Erase memmory and upload the program:
{ echo 'connect';
  echo '';
  echo '';
  echo '';
  echo '';
  echo 'erase';
  echo 'loadbin program.bin , 0x0';
  echo 'r';
  echo 'q'; } | JLinkExe

# Kill any JLinkExeGDBServer:
killall JLinkGDBServer

# Set up the GDB server and connect with GDB:
JLinkGDBServer -device LPC4088 & sleep 2s && \
{ echo 'dashboard -layout source';
  echo 'dashboard source -style context 14';
  echo 'file program.elf';
  echo 'target remote :2331';
  echo 'monitor reset';
  cat; } | arm-none-eabi-gdb

运行该脚本后,所有命令都可以很好地执行,但是GDB中有某种二进制符号(屏幕截图),并且看起来GDB中的自动完成功能根本无法正常工作。此外,某些GDB命令已完全中断。如果我仅使用arm-none-eabi-gdb而不提供它,则通过管道|来提供命令,GDB再次可以正常工作。

但是我需要传递那些命令...

我正在使用GDB Dashboard中的~/.gdbinit,但是即使我删除了,问题仍然存在。

enter image description here

1 个答案:

答案 0 :(得分:2)

以这种方式调用gdb时,它并不直接连接到您的终端。您可能应该改为使用命令文件来启动gdb-如果将这些命令放入名为“ myscript”的文件中,然后使用--command = myscript

调用gdb

应该以正确的方式完成您想要的设置。