如何在NetBeans中的另一台计算机上进行ARM交叉编译和调试?

时间:2017-07-19 19:28:10

标签: c++ netbeans embedded cross-platform gdbserver

我正在尝试建立一个NetBeans x86_64环境,我可以在IDE中编写代码并添加断点,为ARM进行交叉编译,然后在运行gdbserver的raspberry pi(现在)上运行二进制文件。

一个常见的选择是使用远程构建主机来构建,运行和调试二进制文件,但我最终将致力于一个没有开发工具链空间的嵌入式设备。我现在正在使用pi来学习嵌入式机器到达后如何编译和调试。 请不要建议使用远程构建主机。

现在,我最好的猜测是用./run.sh "${OUTPUT_PATH}"替换run命令,其中run.sh是一个小的bash脚本,它将新编译的二进制文件传输到pi,然后运行gdbserver --debug localhost:6000 ~/app。在NetBeans传输二进制文件并运行gdbserver之后,我能够附加a gdbserver plugin for NetBeans,但所有这些都是gdb的stdout(这是有意义的)。我想要的是使用IDE设置和逐步执行断点并观察变量的变化,但我似乎无法使用此设置来实现这一点。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

  

gdbserver --debug localhost:6000~ / app

这与我熟悉的gdbserver版本所记录的调用语法不匹配,但即使不知道表单,参数也似乎有误。

" localhost" 始终引用相同的计算机,而不是另一台计算机。所以指定" localhost"意味着你要在同一台机器上运行gdbservergdb,否定了使用gdbserver的全部要点。

目前还不清楚你的命令导致gdbserver做什么,但两种可能性都不好。

  • 如果它导致gdbserver 侦听在环回接口上而不是INADDR_ANY,那么只有目标上运行的程序才能联系gdbserver进程,它排除了远程gdb。

  • 如果它导致gdbserver尝试连接到已经运行的远程gdb,那么它也将无法正常工作,因为它将是尝试连接到不存在的本地

你想做的事情就像是

target> gdbserver :6000 ~/app

devmachine>gdb build/app
gdb> target remote target_machine_ip:6000