在QEMU上,我可以使用-S -s
,它在开始模拟之前等待GDB连接
如何在gem5上做同样的事情,希望使用fs.py
脚本?
当我交换终端并连接时,模拟已经超过start_kernel
。
我看到了--debug-break
旗帜,但如果我这样做,我就不知道如何使用它:
--debug-break=1
运行失败了:
Trace/breakpoint trap (core dumped)
编辑:在进一步了解之后,我现在发现提交c2baaab0ed43ad09fc8b7fcda25207b6ccd6c0e3添加了一个参数:
+ wait_for_remote_gdb = Param.Bool(False,
+ "Wait for a remote GDB connection");
这一定是我正在寻找的。但我没有找到如何从fs.py
启用它,似乎没有曝光?
答案 0 :(得分:0)
在34efcae1b532df56a7ef65f0e4b76179c9bc9479添加--param
之后,您现在可以执行以下操作:
gem5.opt fs.py --param 'system.cpu[0].wait_for_remote_gdb = True'
然后连接gdb:
arm-linux-gdb
-q
-ex 'file vmlinux'
-ex 'target remote localhost:7000'
然后您就只剩下第一条指令了。
请记住aarch64在该提交时已损坏:https://www.mail-archive.com/gem5-users@gem5.org/msg15383.html
在--param
之前,例如在7bfb7f3a43f382eb49853f47b140bfd6caad0fb8处,应用此小补丁:
diff --git a/configs/example/fs.py b/configs/example/fs.py
index 3997ed76c..b4267ebc0 100644
--- a/configs/example/fs.py
+++ b/configs/example/fs.py
@@ -376,5 +376,6 @@ if buildEnv['TARGET_ISA'] == "arm" and options.generate_dtb:
sys = getattr(root, sysname)
sys.dtb_filename = create_dtb_for_system(sys, '%s.dtb' % sysname)
+test_sys.cpu[0].wait_for_remote_gdb = True
Simulation.setWorkCountOptions(test_sys, options)
Simulation.run(options, root, test_sys, FutureClass)