Prise en charge des erreurs gdb dans les conteneurs Docker

Aperçu

Lorsque j'ai essayé de déboguer un programme C à l'aide de la commande gdb dans le conteneur Docker, ce qui suit warning: Error disabling address space randomization: Operation not permitted J'étais faché.

(gdb) b 5
Breakpoint 1 at 0x117c: file test.c, line 5.
(gdb) r
Starting program: /home/user/dev/test 
warning: Error disabling address space randomization: Operation not permitted

Comme vous vous en doutez, gdb utilise des appels système, mais il semble que vous ne puissiez pas accéder au périphérique de la machine hôte car vous n'avez pas l'autorisation de l'intérieur du conteneur.

Solution

Option pour autoriser l'appel système sera ajouté.

$ docker run -it --cap-add=SYS_PTRACE --security-opt="seccomp=unconfined" [CONTAINER_NAME] /bin/bash

Écrivez ce qui suit sous «service».

docker-compose.yaml


    cap_add: 
      - "SYS_PTRACE"
    security_opt: 
      - "seccomp=unconfined"

Article de référence

https://sott0n.github.io/posts/docker_gdb/

Recommended Posts

Prise en charge des erreurs gdb dans les conteneurs Docker
Commandes qui ont aidé à résoudre les erreurs dans Docker
Traiter les erreurs d'installation de composer dans Docker
[Rails5.2] Prise en charge des pictogrammes de Mysql 5.7 dans Docker (changez le code de caractère en utf8mb4)
Informations sur les solutions de contournement pour les erreurs de construction de Carthage dans Xcode 12
Prise en charge de Java 10 Docker
Script de configuration pour l'utilisation de docker dans un environnement proxy sur ubuntu 20.04.1