0

看起来 Simics Eclipse 可以设置条件断点,但我没有找到任何condition带有break-*命令的参数。是否可以使用 simics 命令设置中断条件?

另一个问题是如何使用 simics 命令设置动态 printf?

使用 gdb,我可以使用它来记录断点命中,我如何使用 simics 做同样的事情?

(gdb) b malloc
(gdb) commands
> silent
> printf "malloc hit"
> cont
> end
(gdb)
4

1 回答 1

1

Simics 在内置断点命令中没有条件断点。如果您想做类似的事情,请编写一个等待断点的脚本分支,然后检查状态。这些命令是故意相当基本的。

在这种情况下,什么是“动态 printf”?

使用 Simics gdb-remote 将 gdb 调试器连接到 Simics 并使用它来调试目标软件可能更简单。

要查看所有断点命中,Simics 会倾向于在每次断点命中时写一条消息:

simics> bp.memory.break -x 0xffff0000 0x100000
Breakpoint 2: break on 'x' access to 0xffff_0000 len=1_048_576 in board.cell_context
simics> r
[board.cell_context] Breakpoint 2: board.cell_context 'x' access to v:0xfffffff0
simics> r
[board.cell_context] Breakpoint 2: board.cell_context 'x' access to v:0xfffffff1
simics> r
[board.cell_context] Breakpoint 2: board.cell_context 'x' access to v:0xfffffff2 len=2

如果您想对断点命中采取行动,请使用脚本来响应并打印您想要的任何内容。例如,像这样。如果一个脚本分支选择了断点,Simics 不会停止它的执行。

simics> script-branch {
.......   while(TRUE) {
.......     bp.wait-for-breakpoint 2
.......     echo (ptime)
.......   } 
....... }
2
simics> r
"board.mb.cpu0.core[0][0]"
[["board.mb.cpu0.core[0][0]", 8, 8, 4e-09]]
"board.mb.cpu0.core[0][0]"
[["board.mb.cpu0.core[0][0]", 9, 9, 4.5e-09]]
"board.mb.cpu0.core[0][0]"
于 2022-01-20T07:37:45.410 回答