#!/bin/bash # MIPS translate.c 调试快速启动脚本 echo "========================================" echo " MIPS translate.c GDB 调试助手" echo "========================================" echo "" # 查找 Renode 进程 PID=$(pgrep -f Renode.dll) if [ -z "$PID" ]; then echo "❌ 错误:Renode 没有运行!" echo "" echo "请先在另一个终端启动 Renode:" echo " cd /home/simulation/source/renode" echo " ./renode" echo "" echo "然后在 Renode Monitor 中执行(但不要 Step):" echo " mach create \"MIPS-Test\"" echo " machine LoadPlatformDescription @platforms/cpus/mips32_simple.repl" echo " cpu PC 0x80000000" echo " cpu A0 5" echo " cpu A1 3" echo " sysbus WriteDoubleWord 0x80000000 0x00851020" echo "" exit 1 fi echo "✅ 检测到 Renode 进程: PID=$PID" echo "" echo "将设置以下断点:" echo " 1. gen_intermediate_code (主翻译函数)" echo " 2. decode_and_translate (指令解码)" echo "" echo "⚠️ 重要提示:" echo " - 确保在 Renode 中已加载平台但未执行 'cpu Step 1'" echo " - 断点触发后使用以下命令:" echo " list 查看代码" echo " next 下一行(不进入函数)" echo " step 下一行(进入函数)" echo " print/x insn 查看指令(16进制)" echo " info locals 查看局部变量" echo " bt 查看调用栈" echo " continue 继续运行" echo "" read -p "按 Enter 继续启动 GDB..." # 启动 GDB 并自动设置断点 sudo gdb -p $PID \ -ex "set breakpoint pending on" \ -ex "break gen_intermediate_code" \ -ex "break decode_and_translate" \ -ex "info breakpoints" \ -ex "echo \n========================================\n" \ -ex "echo ✅ 断点已设置!\n" \ -ex "echo 现在切换到 Renode 窗口执行: cpu Step 1\n" \ -ex "echo ========================================\n\n" \ -ex "continue"