【问题标题】:How to check current breakpoint function in TRACE32?如何检查 TRACE32 中的当前断点功能?
【发布时间】:2015-08-31 08:01:02
【问题描述】:

我正在尝试检查程序是否在 TRACE32 中的函数中停止。

我知道我可以在 FRAME 窗口中看到函数,但不知道如何将它们复制到脚本中的变量中。

知道怎么做吗?

【问题讨论】:

    标签: trace32 lauterbach


    【解决方案1】:

    你得到函数的名字,程序计数器指向的地方是:

    PRINT sYmbol.FUNCTION(PP())
    

    (您也可以将结果分配给宏,而不是打印结果。)

    因此,一种检查您是否已在函数 myFunc() 中停止的方法是:

    PRINT STRing.ComPare(sYmbol.FUNCTION(PP()),"*\myFunc")  
    

    另一种方法是检查程序计数器是否在函数的第一个和最后一个地址内myFunc()

    PRINT (ADDRESS.OFFSET(sYmbol.BEGIN(`myFunc`))<=Register(PP))&&(Register(PP)<=ADDRESS.OFFSET(sYmbol.END(`myFunc`)))
    

    【讨论】:

    • 当你说 sYmbol.FUNCTION(PP()) 时你指的是什么?在那种情况下 PP() 是什么意思?
    • 来自ide_func.pdf:“PP()返回程序指针的地址,由访问类+CPU程序计数器(PC)组成。另外,函数PP()返回空间如果 SYStem.Option.MMUSPACES 设置为 ON,则 ID 为十六进制值。”但是,如果您的 TRACE32 还没有 PP(),在大多数情况下,您也可以使用 P:Register(PP) 甚至 P:Register(PC)。所以你会得到PRINT sYmbol.FUNCTION(P:Register(PP))
    猜你喜欢
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 2017-09-22
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多