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

Weird binary signs when using pipe

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

#!/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,但即使我删除它,问题仍然存在。

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

调用 gdb

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