当断点被击中时,Lauterbach执行脚本

时间:2015-05-06 09:54:31

标签: trace32 lauterbach

我正在使用Lauterbach来调试PowerPC嵌入式C软件。我想从.cmm(PRACTICE)脚本执行下面的ALGO。如果有可能,请告诉我:

Set Breakpoint
When Breakpoint is hit, execute a .cmm file. This .cmm file will rewrite the values of an array.
Continue execution of program

我不想存根整个功能。代码必须不受影响。

2 个答案:

答案 0 :(得分:4)

使用

设置断点
   Break.Set <addr> /Program /CMD "DO myScript.cmm"

要继续执行目标程序,请将命令Go添加到被调用的PRACTICE脚本的末尾。

如果您不能将命令Go添加到被调用的PRACTICE脚本的末尾,那么您需要一个这样的胶合代码脚本:

// Content of myScript.cmm
DO myAlgorithm.cmm
Go
ENDDO

Break.Set命令也知道一个选项/RESUME,但这不适合您的情况,因为它不会等到被调用的PRACTICE脚本完成。

答案 1 :(得分:1)

正如你所提到的那样!

  

我不想存根整个功能。代码必须不受影响。

你可以试试这个;

;set a breakpoint on function
BREAK.SET <function_name/addr>\<LINE NUMBER>

;store address of current program counter(PC)
&pc=r(pc)

&call=address.offset(<function_name/addr>\<LINE NUMBER>) ;This will give the address of a function where breakpoint is set.

;Compare the address if it hit on correct function 
IF (&pc==&call)
    Do call_meonceHIT.cmm ;your desired cmm script.
Break.Delete /ALL ; to delete all the set breakpoint. 

这将确保断点正在执行正确的功能或可运行。

干杯,