【问题标题】:How to setup a conditional breakpoint with simics command?如何使用 simics 命令设置条件断点?
【发布时间】:2021-12-28 01:37:35
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: simics


    【解决方案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]"
    

    【讨论】:

    • 感谢您的回复,但script-branch仍然无法正常工作。我编译了一个 helloworld.c,在main() 设置了一个断点,创建了一个和你一样的脚本分支。但是Simics在main()停止执行,消息是[tcf] Breakpoint 1 on execution in context mb.cpu0.core[1][0]echo (ptime)从未被执行。
    • 断点由bp.source_location.break main设置。但我发现如果断点是由bp.memory.break -x 0x4010f6 创建的,则脚本分支可以正常工作。这两个断点有什么区别吗?为什么第一个不能与 script-branch 一起使用?
    • 您是否在每种情况下都使用了正确的断点 ID?你真的应该做类似于$b = (bp....break...) 的事情,然后做bp.wait-for-breakpoint $b
    • 是的,断点ID是正确的,我以前是通过bp.list找到断点ID的。我刚刚尝试了$b = (bp....break...),然后执行bp.wait-for-breakpoint $b,Simics 将在断点处停止执行,这是预期不会的。
    • 不,这听起来不对。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多