【问题标题】:trace32 - Memory dump of multiple address ranges to a single binary filetrace32 - 多个地址范围的内存转储到单个二进制文件
【发布时间】:2017-01-07 04:23:39
【问题描述】:

我正在使用 Lauterbach 调试器从不同的内存部分转储到二进制文件。到目前为止,我已经设法使用

为每个地址范围生成一个二进制文件
data.save.binary output1.txt var.Range(sDummyArray[startRange1..endRange1])

data.save.binary output2.txt var.Range(sDummyArray[startRange2..endRange2]) 

...

有没有办法让我将多个二进制(内存转储)文件“拼接”在一起以提供一个二进制文件,或者使用我错过的 trace32 命令将每个内存转储附加到文件中?

【问题讨论】:

    标签: embedded trace32 lauterbach


    【解决方案1】:

    要将多个地址范围从目标内存保存到同一个二进制文件,请使用命令Data.SAVE.Binary 及其选项“/Append”。该选项将新数据附加到给定文件的末尾。

    例如:

    Data.SAVE.Binary output1.txt Var.RANGE(sDummyArray[startRange1..endRange1])
    Data.SAVE.Binary output1.txt Var.RANGE(sDummyArray[startRange2..endRange2]) /Append
    

    对于 TRACE32 旧版本 63378,您可以像这样使用调试器的虚拟内存(如果不用于其他用途):

    PRIVATE &size1 &size2   
    &size1=Var.VALUE((sDummyArray+endRange1)-(sDummyArray+startRange1))
    &size2=Var.VALUE((sDummyArray+endRange2)-(sDummyArray+startRange2))
    Data.COPY Var.RANGE(sDummyArray[startRange1..endRange1]) VM:0
    Data.COPY Var.RANGE(sDummyArray[startRange2..endRange2]) VM:&size1
    Data.SAVE.Binary output1.txt VM:0++(&size1+&size2-1)
    

    所以这里的想法是通过Data.COPY 收集虚拟内存中的所有数据并将其从那里保存到二进制文件中。

    【讨论】:

    • 什么版本的trace32?我在“2015 年 2 月发布(64 位)版本中没有看到此选项。
    • 对于 /Append 选项,您需要 TRACE32 build 63378。这是 2015 年 9 月发布的版本(或更新版本)。
    【解决方案2】:

    Data.SAVE.Binary 在 2015 年 9 月之前发布的 TRACE32 版本中没有 /Append 选项。

    我能够使用

    附加我的输出文件
    OS.Command copy /b output1.txt + output2.txt output.txt
    

    【讨论】:

    • 最好使用OS.Area 而不是OS.Command,因为OS.Command 是无阻塞的,而OS.Area 将暂停PRACTICE 脚本的执行,直到shell-command 完成。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多