首页 > 解决方案 > 使用管道时奇怪的二进制符号

问题描述

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

#!/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 的命令再次正常工作。

但我需要通过这些命令......

~/.gdbinitGDB Dashboard使用,但即使我删除它,问题仍然存在。

在此处输入图像描述

标签: shellgdbgdbserver

解决方案


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

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


推荐阅读