【问题标题】:gdb exits immediately `Process finished with exit code 1` or lldb `'A packet returned error 8'` on dockergdb 立即退出 `Process finished with exit code 1` 或 lldb `'A packet returned error 8'` 在 docker 上
【发布时间】:2021-11-25 09:37:09
【问题描述】:

这花了我一整天的时间才找到,所以我将其发布以供将来参考。

我正在 docker 映像上开发 C++。我正在使用 clion。
我的代码是在调试模式下编译的,在运行模式下运行良好,但是在尝试调试时,进程会立即退出并提供非常丰富的信息

Process finished with exit code 1


切换调试器时

尝试调试仍然退出,但在 clion 中产生一个弹出窗口

'A packet returned error 8'

相同的代码可以在本地计算机上正常调试。

docker run 命令是

RUN_CMD="docker run --group-add ${DOCKER_GROUP_ID} \
                --env HOME=${HOME} \
                --env="DISPLAY" \
                --entrypoint /bin/bash \
                --interactive \
                --net "host" \
                --rm \
                --tty \
                --user=${USER_ID}:${GROUP_ID} \
                --volume ${HOME}:${HOME} \
                --volume /mnt:/mnt \
                $(cat ${HOME}/personal-uv-docker-flags) \
                -v "${HOME}/.Xauthority:${HOME}/.Xauthority:rw" \
                --volume /var/run/docker.sock:/var/run/docker.sock \
                --workdir ${HOME} \
                ${IMAGE} $(${DIR}/impl/known-tools.py cmd-line ${TOOL})"

如何在 docker 上调试 C++?

【问题讨论】:

    标签: c++ docker debugging


    【解决方案1】:

    最终,我找到了this comment,这使我找到了this blog post,在其中我了解到默认情况下,docker 上不允许进行 C++ 调试。

    参数 --cap-add=SYS_PTRACE 和 --security-opt C++ 内存分析和调试需要 seccomp=unconfined 在 Docker 中。

    我加了

    --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
    

    docker run 命令,调试器能够连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多