簡體   English   中英

gdb 在 docker 上立即退出 `Process finished with exit code 1` 或 lldb `'A packet returned error 8'`

[英]gdb exits immediately `Process finished with exit code 1` or lldb `'A packet returned error 8'` on docker

這花了我一整天的時間才找到,所以我將其發布以供將來參考。

我正在 docker 圖像上開發 C++。 我正在使用克利昂。
我的代碼在調試模式下編譯,在運行模式下運行良好,但是在嘗試調試時,進程立即退出並提供非常豐富的信息

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 上不允許調試。

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命令,調試器能夠連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM