非原创

解决方案来源

在 Docker run 中加入 --cap-add=SYS_PTRACE --security-opt seccomp=unconfined

创建一个/usr/local/bin/gdb,因为PATH/usr/local/bin比较靠前,会比/usr/bin/gdb先被找到

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

if [ "$#" != "1" ]; then
echo "Usage: $0 <path/to/program to debug>" >&2
exit 1
fi

prog="$1"

# Start program in background
ROSETTA_DEBUGSERVER_PORT=1234 "$prog" &

# Run real gdb and tell it to attach
/usr/bin/gdb \
-iex "set architecture i386:x86-64" \
-iex "file $prog" \
-iex "target remote localhost:1234" \
-iex "set history save on"

然后就能正常的使用gdb ./program

大受震撼.jpg