微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Debian docker 镜像结果中运行 gdb 背景问题

如何解决在 Debian docker 镜像结果中运行 gdb 背景问题

我在 docker 镜像中运行 gdb 时遇到了一些问题,我不确定是什么导致了问题,因为在 gdb 和 docker 方面我是一个完全的新手。

背景

我正在尝试为在 ev3dev 上运行的 Lego EV3 编写 C++ 程序。为了编译它,我在我的 Windows 机器上使用 ev3dev 映像设置了 docker,并且能够在该映像中成功构建,将二进制文件传输到 EV3 并在那里执行它。这一切都很好,直到我需要开始(远程)调试。我的计划是使用该程序在 EV3 上启动一个 gdbserver,并在我的 Windows 机器的 docker 容器内打开一个 gdb 会话并连接到 EV3 gdbserver。在修复远程调试时的第一个错误后 - 我需要在我的 Windows 机器上使用 gdb-multiarch - 我遇到了更多我也没有真正找到解决方案的问题。

问题

在我的 Windows 机器上的 docker 容器内直接运行 gdb 时(或者当使用 gdb-multiarch 从 docker 连接到 gdbserver 时)我总是在使用 run 启动程序后得到以下输出

(gdb) run
Starting program: /src/ev3/build/src/EV3_main
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
Warning:
Cannot insert breakpoint -1.
Cannot access memory at address 0x4f58

当使用 nextstep 时,我得到:

(gdb) next
Cannot find bounds of current function

由于我在网上找不到任何解决方案,我非常感谢您的帮助! 提前致谢!

解决方法

用run启动程序后我总是得到以下输出

此错误通常意味着您的 docker 容器中的动态加载器已被完全剥离。这是该容器的创建者的包装错误。

如果您不使用 dlopen(),这不是什么大问题。

(gdb) next

不要做那个:您不会停在 GDB 知道下一行在哪里的位置。改为continue

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。