No se puede obtener la memoria valgrind memcheck al usar clion(mac os) + contenedor Docker basado en Toolchains.
Estoy utilizando una MacBook M1 con Mac OS 15, dado que valgrind aún no es compatible con OS big sur. Por ello, tengo que depurar mis códigos C/C++ en un contenedor de Docker.
Aunque el proceso de compilación es correcto, parece que no puedo obtener ninguna información de salida al ejecutar un valgrind memcheck.
DockerFile para Ubuntu 20:04:
“`
Entorno docker remoto de CLion (cómo construir un contenedor docker, ejecutarlo y detenerlo)
#
Construir y ejecutar:
docker build -t clion/remote-cpp-env:0.5 -f Dockerfile.remote-cpp-env .
docker run -d –cap-add sys_ptrace -p127.0.0.1:2222:22 –name clion_remote_env clion/remote-cpp-env:0.5
ssh-keygen -f “$HOME/.ssh/known_hosts” -R “[localhost]:2222″
#
Detener:
docker stop clion_remote_env
Credenciales SSH (usuario de prueba):
usuario@contraseña
FROM ubuntu:20.04
RUN DEBIAN_FRONTEND=”noninteractive” apt-get update && apt-get -y install tzdata
RUN apt-get update \
&& apt-get install -y ssh \
build-essential \
gcc \
g++ \
gdb \
clang \
make \
ninja-build \
cmake \
autoconf \
automake \
locales-all \
dos2unix \
rsync \
tar \
python \
&& apt-get clean
RUN ( \
echo ‘LogLevel DEBUG2’; \
echo ‘PermitRootLogin yes’; \
echo ‘PasswordAuthentication yes’; \
echo ‘Subsystem sftp /usr/lib/openssh/sftp-server’; \
) > /etc/ssh/sshd_configtest_clion \
&& mkdir /run/sshd
RUN useradd -m user \
&& yes password | passwd user
RUN usermod -s /bin/bash user
CMD [“/usr/sbin/sshd”, “-D”, “-e”, “-f”, “/etc/ssh/sshd_configtest_clion”]
Instalé valgrind manualmente mediante “apt install valgrind”.
Luego configuro una nueva cadena de herramientas de CLion de la siguiente manera:
[ver imagen aquí]
Y configuro valgrind de la siguiente manera:
[ver imagen aquí]
Sin embargo, cuando intento ejecutar un valgrind memcheck, la salida de valgrind en CLion aparece vacía.
¿Alguien que pueda ayudar?
davy.ai
Solución para que Valgrind funcione en MacOS Big Sur
Dado que Valgrind no es compatible con MacOS Big Sur, una solución posible es utilizar Docker para crear un entorno Ubuntu 20.04, en el que se pueda instalar y utilizar Valgrind.
Para crear el contenedor de Docker, se puede utilizar el siguiente Dockerfile:
Luego se puede construir y ejecutar el contenedor con los siguientes comandos:
Una vez dentro del contenedor, se puede ejecutar el código C/C++ con Valgrind como de costumbre.
Si se utiliza CLion, se puede configurar un nuevo kit de herramientas basado en el contenedor de Docker siguiendo estos pasos:
Luego se puede seleccionar el nuevo kit de herramientas y utilizar Valgrind como de costumbre dentro de CLion. Sin embargo, si aún no se pueden obtener información de salida al ejecutar un memcheck de Valgrind, se puede verificar si Valgrind se está ejecutando dentro del contenedor de Docker ejecutando
ps -ef
y comprobando si Valgrind está en la lista.Otra posible solución es utilizar una herramienta de terceros como dlv (Delve) o GDB para depurar el código, ya que estas herramientas son compatibles con MacOS Big Sur.