1

在 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,似乎没有暴露?

4

1 回答 1

0

添加--paramat 34efcae1b532df56a7ef65f0e4b76179c9bc9479 之后,您现在可以执行以下操作:

gem5.opt fs.py --param 'system.cpu[0].wait_for_remote_gdb = True'

然后连接gdb:

arm-linux-gdb -ex 'file vmlinux' -ex 'target remote localhost:7000'

你在第一条指令就离开了。

这是一个高度自动化的设置

请记住,aarch64 在 34efcae1b532df56a7ef65f0e4b76179c9bc9479 处损坏: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)

https://gem5-review.googlesource.com/c/public/gem5/+/27287(2020年 3 月)向 se.py 添加了一个--wait-gdb选项,其效果与使用--param.

于 2018-09-21T14:28:16.160 回答