Pintos 从编译到 Kernel Panic:在 CLion 里愉快的 Debug
注:流程支持M1的mac、Intel的Mac以及Ubuntu 20.04。
-
MacOS:
brew install qemu x86_64-elf-gcc x86_64-elf-binutils
Ubuntu:
apt install qemu-system-i386 gcc
-
最新的代码在:
git clone git://pintos-os.org/pintos-anon
,但是建议使用我的修改版本:git clone https://github.com/leoleoasd/pintos_configuration.git
。 -
修改
~/.bashrc
(如果echo $0
输出了-bash
)或者~/.zshrc
(如果echo $0
输出了-zsh
),增加以下内容到文件末尾:1
2
3export PINTOSHOME=<你的Pintos路径>
export GDBMACROS=$PINTOSHOME/src/misc/gdb-marcos
export PATH=$PATH:$PINTOSHOME/src/utils然后执行:
source ~/.bashrc
或者source ~/.zshrc
-
cd src/utils && make
-
cd src/threads && make && cd build && pintos --qemu --
-
在
src/threads
新建一个 bash 脚本,写入以下内容:1
2
3
4
5
6
7
8
make
cd build || exit
killall qemu-system-i386 # 杀掉上一次打开的QEMU。Clion不能在停止Debug的时候关闭QEMU。
CMD="run alarm-signle" # 你要运行的指令。
nohup bash -c "DISPLAY=window ../../utils/pintos --qemu --gdb -- $CMD > pintos.log" &
echo "Done!" -
用 clion 打开项目。如果之前打开过项目,删除
.idea
文件夹后再打开。点击右上角的Add configurations
, 选择GDB Remote Debug
, 填入以下信息:’target remote‘ args: tcp:localhost:1234
Symbol file: 选择你
src/threads/build/kernel.o
Path mappings:
remote:
../../threads
local:
你的项目的完整路径/src/threads
Before launch: 添加一个
Run external tool
, 选择上面新建的 bash 脚本 -
Cmd+D
orCtrl+D
即可调试。