gdbserver - >回复包含无效字符

时间:2017-12-22 14:54:34

标签: c gdb gdbserver

我正在尝试使用gdbserver调试交叉编译的应用程序。不幸的是,我在主机上收到以下错误:
$array = []; foreach( explode($posts_query, '|') as $keyVal) { $tmp = explode($keyVal, ':'); $array[$tmp[0]] = $tmp[1]; }
这就是我的所作所为:

  • 编译了我的应用程序" line-generator" (这只是一个测试程序)与gcc -ggdb3 -std = gnu89标志(使用-g代替-ggdb3并没有任何区别)
  • 将可执行文件复制到我的嵌入式系统。 exec可以在那里执行
  • 在嵌入式系统上启动了gdbserver 192.168.10.20:54320 line-generator
  • 在主机上我启动gdb:gdb line-generator.gdb
  • (gdb)target remote 192.168.10.102:54320
  • 得到主人的回复:
    使用192.168.10.102:54320进行远程调试 回复包含无效的十六进制数字59
  • 在服务器上我得到了这个:
    从主机192.168.10.20远程调试 readchar:得到EOF
    远程端已终止连接。 GDBserver将重新打开连接 聆听54320号港口

我从来没有远程使用过gdb,所以也许我遇到了一个初学者的问题,所以每个回复都可能有所帮助。

编辑:我的gdbserver由嵌入式硬件的制造商提供。

1 个答案:

答案 0 :(得分:0)

我发现远程调试交叉编译的可执行文件需要在主机上为这个purpuse编译gdb。在我的情况下,这意味着我必须使用此命令

/opt/microblaze-uclinux-tools/bin/microblaze-uclinux-gdb line-g
enerator.gdb

而非简单gdb line-generator.gdb

幸运的是,嵌入式电路板制造商提供了正确的文件! 说实话,我不完全理解背景,所以如果有人对此有解释,我很高兴听到这个!
欢呼,斯特凡