gdb 立即退出 `Process finished with exit code 1` 或 lldb `'A packet returned error 8'` on docker
gdb exits immediately `Process finished with exit code 1` or lldb `'A packet returned error 8'` on docker
这花了我一整天的时间才找到,所以我将其发布以供将来参考。
我正在 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++?
最终,我找到了 this comment which led me to this blog post,其中我了解到 docker 默认情况下不允许进行 C++ 调试。
The arguments --cap-add=SYS_PTRACE and --security-opt
seccomp=unconfined are required for C++ memory profiling and debugging
in Docker.
我加了
--cap-add=SYS_PTRACE --security-opt seccomp=unconfined
到 docker run
命令,调试器能够连接。
这花了我一整天的时间才找到,所以我将其发布以供将来参考。
我正在 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++?
最终,我找到了 this comment which led me to this blog post,其中我了解到 docker 默认情况下不允许进行 C++ 调试。
The arguments --cap-add=SYS_PTRACE and --security-opt seccomp=unconfined are required for C++ memory profiling and debugging in Docker.
我加了
--cap-add=SYS_PTRACE --security-opt seccomp=unconfined
到 docker run
命令,调试器能够连接。