Unterstützung für GDB-Fehler in Docker-Containern

Überblick

Als ich versuchte, ein C-Programm mit dem Befehl gdb im Docker-Container zu debuggen, Folgendes warning: Error disabling address space randomization: Operation not permitted Ich war sauer.

(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

Wie zu erwarten, verwendet gdb Systemaufrufe, aber es scheint, dass Sie nicht auf das Gerät des Hostcomputers zugreifen können, da Sie keine Berechtigung aus dem Container heraus haben.

Lösung

Option zum Zulassen eines Systemaufrufs wird hinzugefügt.

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

Schreiben Sie Folgendes unter "Service".

docker-compose.yaml


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

Referenzartikel

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

Recommended Posts

Unterstützung für GDB-Fehler in Docker-Containern
Befehle, die zur Behebung von Fehlern in Docker beigetragen haben
Umgang mit Composer-Installationsfehlern in Docker
[Rails5.2] Unterstützung für Piktogramme von MySQL 5.7 in Docker (Zeichencode in utf8mb4 ändern)
Informationen zu Problemumgehungen für Build-Fehler in Karthago in Xcode 12
Java 10 Docker-Unterstützung
Konfigurationsskript für die Verwendung von Docker in einer Proxy-Umgebung unter Ubuntu 20.04.1