GNU/Linux >> Belajar Linux >  >> Linux

gdb tidak mencapai breakpoint apa pun saat saya menjalankannya dari dalam wadah Docker

perbarui 2020.01.04:Gunakan jawaban yang diberikan oleh Kevin W Matthews --- lebih baik karena memberikan kemampuan individu yang diperlukan tanpa meninggikan seluruh wadah.

tldr; gunakan

docker run --privileged

Lebih lama:Saya mengalami beberapa masalah dengan gdb di docker---ia mencoba (dan gagal) untuk menonaktifkan pengacakan tata letak ruang alamat---tetapi hanya pada docker-machine , bukan di host linux asli saya.

Ketika gdb gagal menonaktifkan ASLR, semua breakpoint saya akan diabaikan. Menggunakan --privileged bendera memperbaiki masalah saya. Jarak tempuh Anda mungkin berbeda.


Daripada meninggikan seluruh wadah, saya bisa menggunakan opsi

--security-opt seccomp=unconfined

untuk memperbaiki masalah pengacakan ruang alamat.

Beberapa juga merekomendasikan untuk mengaktifkan ptrace kemampuan dengan

--cap-add=SYS_PTRACE

tetapi ini tampaknya tidak berpengaruh apa pun bagi saya.

Berikut adalah pengaturan yang sama untuk penulisan Docker:

security_opt:
  - seccomp:unconfined
cap_add:
  - SYS_PTRACE

Detail diambil dari postingan Stack Overflow ini.


Linux
  1. Bagaimana Cara Menjalankan Perintah Di Dalam Wadah Systemd yang Berjalan?

  2. Bagaimana cara mengirim sinyal ke program yang dijalankan dalam wadah buruh pelabuhan?

  3. Apa yang ada di dalam gambar/wadah Docker?

  1. Bagaimana cara menambahkan pengguna ke wadah Docker?

  2. Menjalankan buruh pelabuhan di Ubuntu:volume host yang dipasang tidak dapat ditulis dari wadah

  3. Volume Docker tidak memasang file apa pun

  1. Mengapa docker container meminta Izin ditolak?

  2. Docker tidak memperbarui perubahan dalam direktori

  3. Haruskah saya berharap program yang dijalankan dari folder tmpfs berjalan lebih cepat? (dengan dan tanpa I/O, di dalam dan di luar wadah Docker)