67 lines
2.0 KiB
Bash
67 lines
2.0 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
# MIPS GDB 调试快速测试脚本
|
|||
|
|
|
|||
|
|
echo "================================"
|
|||
|
|
echo "MIPS translate.c GDB 调试向导"
|
|||
|
|
echo "================================"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 检查 Renode 是否在运行
|
|||
|
|
if pgrep -f Renode.dll > /dev/null; then
|
|||
|
|
PID=$(pgrep -f Renode.dll)
|
|||
|
|
echo "✅ 检测到 Renode 正在运行 (PID: $PID)"
|
|||
|
|
echo ""
|
|||
|
|
echo "现在将执行以下操作:"
|
|||
|
|
echo "1. 附加 GDB 到 Renode"
|
|||
|
|
echo "2. 设置断点在 gen_intermediate_code"
|
|||
|
|
echo "3. 等待您在 Renode 中执行 'cpu Step 1'"
|
|||
|
|
echo ""
|
|||
|
|
echo "⚠️ 重要提示:"
|
|||
|
|
echo " 请确保您在 Renode 中已经执行了:"
|
|||
|
|
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 ""
|
|||
|
|
echo " 但是 ⚠️ 不要执行 'cpu Step 1' ⚠️"
|
|||
|
|
echo ""
|
|||
|
|
read -p "按 Enter 继续附加 GDB..."
|
|||
|
|
|
|||
|
|
# 创建 GDB 命令文件
|
|||
|
|
cat > /tmp/gdb_commands.txt << 'EOF'
|
|||
|
|
set breakpoint pending on
|
|||
|
|
break gen_intermediate_code
|
|||
|
|
info breakpoints
|
|||
|
|
echo \n==============================================\n
|
|||
|
|
echo ✅ 断点已设置!\n
|
|||
|
|
echo \n现在请切换到 Renode 窗口执行: cpu Step 1\n
|
|||
|
|
echo ==============================================\n\n
|
|||
|
|
continue
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "启动 GDB..."
|
|||
|
|
sudo gdb -p $PID -x /tmp/gdb_commands.txt
|
|||
|
|
|
|||
|
|
else
|
|||
|
|
echo "❌ 错误:Renode 没有运行"
|
|||
|
|
echo ""
|
|||
|
|
echo "请先在另一个终端启动 Renode:"
|
|||
|
|
echo " cd ~/source/renode"
|
|||
|
|
echo " ./renode"
|
|||
|
|
echo ""
|
|||
|
|
echo "然后在 Renode Monitor 中执行:"
|
|||
|
|
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 ""
|
|||
|
|
echo "⚠️ 不要执行 'cpu Step 1',然后再运行此脚本"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|