这花了我整整一天的时间才找到,所以我把它贴出来供将来参考。
我在一个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++?
1条答案
按热度按时间fslejnso1#
最后,我发现了这条评论,这条评论让我想到了this blog post,在这条评论中,我了解到Docker默认情况下不允许C调试。
参数--cap-add= unlimited_PTRACE和--security-opt seccomp=unconfined是Docker中C内存分析和调试所必需的。
我加
到
docker run
命令,调试器能够连接。