c++ - 使用 gdbserver 远程调试 EV3 失败
问题描述
我正在为在基于 debian 的ev3dev上运行的 Lego EV3 编写 C++ 代码。为了编译它,我使用了一个带有 ev3dev 映像的 docker 容器。(与从 Windows 或 WSL 进行交叉编译相比,这是最好的工作方式)
为了调试我的代码,我想在 EV3 上创建一个 gdbserver,然后从我的笔记本电脑连接到它。因此,我将代码编译如下:
arm-linux-gnueabi-g++ -g -o app ./app.cpp
然后我将二进制文件复制到 EV3 并在其上启动了一个 gdbserver:
gdbserver :8000 ./app
并从我的笔记本电脑连接到它:
gdb ./app
(gdb) target remote 192.168.137.3:8000
但是,我无法继续调试,而且由于我在交叉编译和远程调试方面不是很有经验,我不知道如何解决这个问题。
这是我笔记本电脑上的控制台输出:
compiler@32a0a4440089:/src/EV3-testing/remote_debugger_test$ gdb ./app
GNU gdb (Debian 7.12-6) 7.12.0.20161007-git
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./app...done.
(gdb) target remote 192.168.137.3:8000
Remote debugging using 192.168.137.3:8000
warning: while parsing target description (at line 1): Target description specified unknown architecture "arm"
warning: Could not load XML target description; ignoring
Reading /lib/ld-linux.so.3 from remote target...
warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
warning: `target:/lib/ld-linux.so.3': Shared library architecture unknown is not compatible with target architecture i386.
Reading /lib/ld-linux.so.3 from remote target...
warning: `target:/lib/ld-linux.so.3': Shared library architecture unknown is not compatible with target architecture i386.
Reading symbols from target:/lib/ld-linux.so.3...Reading /lib/983c6fff2b6d7f46f59d77068be46be3852e81.debug from remote target...
Reading /lib/.debug/983c6fff2b6d7f46f59d77068be46be3852e81.debug from remote target...
(no debugging symbols found)...done.
0x00000000 in ?? ()
(gdb) b main
Breakpoint 1 at 0x400748: file ./app.cpp, line 18.
(gdb) c
Continuing.
Warning:
Cannot insert breakpoint 1: Remote connection closed
Command aborted.
这是 EV3 上的输出:
robot@ev3dev:~$ gdbserver :8000 ./app
Process ./app created; pid = 1737
Listening on port 8000
Remote debugging from host 192.168.137.1
client_loop: send disconnect: Connection reset
谢谢你的帮助!
解决方案
推荐阅读
- r - 使用 magrittr 将 testthat 添加到项目中
- python - 如何从满足条件的数据框中提取列和行索引
- ios - KeyboardAvoidingView 不适用于 redux 形式的字段
- c# - 查看符号表
- javascript - 在 vue 中渲染嵌套列表而不嵌套 HTML 元素?
- c# - 如何获取用户 ID 到视图模型?[登录表单]
- android - 具有非空字符串的 TextView setText 因 ArrayIndexOutOfBoundsException 崩溃(与 AccessibilityNodeInfo 相关)
- mongodb - 连接 mongo atlas 集群时出现 ServerSelectionTimeoutError,同时在 azure machine learning studio 上导入 mongo db 数据
- excel - Excel 将工作表从关闭的文件打印到 PDF
- android - android ndk dev 使用c traceroute 命令,为什么收不到超时回显?