我正在尝试建立一个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设置和逐步执行断点并观察变量的变化,但我似乎无法使用此设置来实现这一点。
这样做的正确方法是什么?
答案 0 :(得分:0)
gdbserver --debug localhost:6000~ / app
这与我熟悉的gdbserver
版本所记录的调用语法不匹配,但即使不知道表单,参数也似乎有误。
" localhost" 始终引用相同的计算机,而不是另一台计算机。所以指定" localhost"意味着你要在同一台机器上运行gdbserver
和gdb
,否定了使用gdbserver
的全部要点。
目前还不清楚你的命令导致gdbserver
做什么,但两种可能性都不好。
如果它导致gdbserver
侦听在环回接口上而不是INADDR_ANY,那么只有目标上运行的程序才能联系gdbserver
进程,它排除了远程gdb。
如果它导致gdbserver
尝试连接到已经运行的远程gdb
,那么它也将无法正常工作,因为它将是尝试连接到不存在的本地。
你想做的事情就像是
target> gdbserver :6000 ~/app
devmachine>gdb build/app
gdb> target remote target_machine_ip:6000