- 调整 core pattern
编辑 /etc/sysctl.conf
sudo nano /etc/sysctl.conf
修改kernel.core_pattern
kernel.core_pattern=./core.%d.%f.%p.%t# %d 可执行文件目录名
# %f 可执行文件名
# %p 进程 ID
# %t 时间的十进制值 (2)
可以自行修改格式,参考变量名和含义
使其生效
sudo sysctl -p
- 验证是否修改成功
cat /proc/sys/kernel/core_pattern
期望输出
./core.%d.%f.%p.%t
然后可以用core文件调试。
- 调试
启动nemu后自行触发一个错误,比如添加能够执行到的assert(0)断言错误,就可以core dump.
riscv32-nemu-interpreter: src/monitor/sdb/expr.c:139: make_token: Assertion `0' failed.
make: *** [~/ics2023/nemu/scripts/native.mk:38: run] Aborted (core dumped)
查看当前目录生成的core文件
调试
gdb ~/ics2023/nemu/build/riscv32-nemu-interpreter ./core.1.riscv32-nemu-interpreter.12539.1737786056