updated readme, fix configuration shell invoked twice.
[lunaix-os.git] / lunaix-os / live_debug.sh
1 #!/usr/bin/env bash
2
3 hmp_port=45454
4 gdb_port=1234
5 default_cmd="console=/dev/ttyS0"
6
7 if [[ -z "${ARCH}" ]]; then
8     echo "error: please specify ARCH="
9     exit 1
10 fi
11
12 make ARCH="${ARCH}" MODE="${MODE:-debug}" all -j"$(nproc)" || exit 1
13
14 launch_script=._launch_debug.sh
15
16 cat << EOF > ${launch_script} && chmod +x ${launch_script}
17 #!/usr/bin/env sh
18 ./scripts/qemu.py \\
19     scripts/qemus/qemu_x86_dev.json \\
20     --qemu-dir "${QEMU_DIR}" \\
21     -v QMPORT=${hmp_port} \\
22     -v GDB_PORT=${gdb_port} \\
23     -v ROOTFS=lunaix_rootfs.ext2 \\
24     -v ARCH=${ARCH} \\
25     -v KBIN=build/bin/kernel.bin \\
26     -v "KCMD=${default_cmd} rootfs=/dev/block/sda init=/bin/init" \\
27     -- \\
28     -nographic || exit 1 &
29
30 AUTOQEMU_DAEMON=\$!
31 echo "autoqemu daemon launched (pid=\$AUTOQEMU_DAEMON)"
32
33 gdb-multiarch \\
34     build/bin/kernel.bin \\
35     -ex "target remote localhost:${gdb_port}"
36
37 if ps -p \$AUTOQEMU_DAEMON > /dev/null
38 then
39    kill -9 \$AUTOQEMU_DAEMON
40 fi
41 EOF
42
43 echo "debugger launch script written to: ${launch_script}"
44
45 if [[ -z "${TMUX}" ]]; then
46     echo "for best effect, use tmux"
47     GDB_NOSPLIT=1 "./${launch_script}"
48 else
49     tmux new-window -a -n "[lunaix-debug]" -e "QMPORT=${hmp_port}" "./${launch_script}"
50 fi