3

我正在使用 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

我不想存根整个函数。代码必须保持不变。

4

2 回答 2

5

设置断点

   Break.Set <addr> /Program /CMD "DO myScript.cmm"

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

如果您不能将命令添加Go到调用的 PRACTICE 脚本的末尾,您将需要一个像这样的 veneer-script:

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

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

于 2015-05-06T12:00:13.947 回答
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. 

这将确保断点命中正确的功能或可运行。

于 2018-04-18T14:15:24.510 回答