在某些情况下,当目标核心仍在运行时,Trace32 可能会挂起或关闭。当尝试重新打开 Trace32 GUI 时,这会导致出现以下屏幕:
有没有办法使用命令行强制“重置并连接”(在弹出窗口中选择“是”),而不需要人工交互?
我想设置一个断点,当两个变量包含某个值时,该断点将停止我的应用程序。例如,当x == 10和y == 11时都停止执行。
如何在劳特巴赫TRACE32中实现这一目标?
在帮助文档中,可以使用以下命令设置数据访问断点
var.break <variable> /READWRITE
Run Code Online (Sandbox Code Playgroud)
但是,这仅在我们输入该变量的上下文时才有效。
因为我想编写PRACTICE脚本来执行自动调试,所以我想在程序运行之前执行此操作。就像是
....
var.break <foo>::<variable> /READWRITE
GO
WAIT !run()
...
Run Code Online (Sandbox Code Playgroud)
有办法吗?
问题场景:简单来说,我们是否有一个Trace32命令从加载到目标的ELF文件中读取符号(及其内容)?我们有这种特殊情况,其中ELF文件的特定于应用程序的调试符号是ELF中'.noload'部分的一部分,这意味着符号/内容是ELF文件的一部分(使用readelf -a xxxx读取时可用). elf_file_name)但不是生成的最终二进制图像的一部分,即ELF文件中的'.noload'部分在生成闪存到目标内存的xxx.bin时被剥离.
任何输入:
- 我需要一个trace32命令的帮助,该命令可以直接读取ELF文件中的符号内容而不是目标内存.
- 还不确定我是否可以在练习脚本中使用'readelf'?如果我们对上述查询没有任何解决方案,可以在这方面提供帮助吗?
我正在使用劳特巴赫来调试 PowerPC 嵌入式 C 软件。我想从 .cmm(PRACTICE) 脚本执行以下算法。请让我知道是否可能:
Set Breakpoint
When Breakpoint is hit, execute a .cmm file. This .cmm file will rewrite the values of an array.
Continue execution of program
Run Code Online (Sandbox Code Playgroud)
我不想存根整个函数。代码必须保持不变。
我正在使用Lauterbach调试器从不同的内存部分转储到二进制文件。到目前为止,我已经设法使用以下方法为每个地址范围生成一个二进制文件
data.save.binary output1.txt var.Range(sDummyArray[startRange1..endRange1])
data.save.binary output2.txt var.Range(sDummyArray[startRange2..endRange2])
...
Run Code Online (Sandbox Code Playgroud)
有没有办法将多个二进制(内存转储)文件“拼接”在一起以提供一个二进制文件,或者使用我错过的trace32命令将每个内存转储追加到文件中?
我正在尝试使用练习脚本将结构的内容记录到文件中。
我不想对结构的每个字段都使用 Var.VALUE,到目前为止我已经找到了 Var.PRINT 命令,它显示了结构中包含的所有信息。
但是我不知道是否可以将其输出到文件中,或者是否有任何其他我不知道的解决方案用于记录结构的值。
我有一个脚本可以初始化终端并在 Trace32 终端中打印其中的信息,但我无法编辑该文件。我正在使用term.write命令将终端窗口中的内容记录到文件中。但它确实记录了执行此命令之前写入的信息。
所以,我尝试Printer.file并winprint.term.view命令。现在我得到这个错误。
此配置的终端窗口已打开
如何将终端的所有内容(包括终端中已经写入和将要写入的内容)记录到文件中?
我正在开发一个依赖于 Lauterbach JTAG 调试器硬件和软件的项目,对目标 JTAG 电缆的支持已于 2011 年 7 月终止。我们在 omap2 处理器上使用 Linux 2.6.33 内核。我们使用 gcc 4.9.2 来构建内核映像(不确定 bintools 的版本)。
对于那些不熟悉 Lauterbach 如何许可其软件的人来说,目标电缆(连接调试器和目标之间)带有支持合同日期。可以使用支持期之前和支持期结束之前的任何版本的 Lauterbach Trace-32 软件,但电缆支持结束后的任何版本都不能使用,每次会话 30 分钟的演示期除外。我们正在通过采购流程来续签电缆的支持合同,但在完成之前(可能需要几个月的时间),我们只能坚持现有的条件。
看来我们使用的工具链生成的调试信息对于 2017 年 7 月之前发布的 Trace-32 调试器软件的最后一个版本来说太新了。尝试使用以下命令加载内核映像 (vmlinux) 的符号:
data.load.elf \\path\to\vmlinux /nocode
Run Code Online (Sandbox Code Playgroud)
失败并显示类似以下内容的消息:
error: entry near offset 5432100. in file \\path\to\vmlinux (use DUMP)
Run Code Online (Sandbox Code Playgroud)
当然,最简单的解决方案是更新到 Trace-32 软件的第一个版本,该版本支持我们的工具链生成的任何 ELF/DWARF 组合。我们知道最新版本可以工作,但我们的电缆不支持该版本,并且直到我们的采购人员确定这是测试设备还是软件(它们来自不同的预算)之后才会支持。
在接下来的几个月里,我们需要一个解决方法。我正在寻找以下其中一项:
我预先感谢大家的帮助。
编辑:我不是 100% 确定工具链是生成 DWARF3 还是 DWARF4,所以我可能需要制作一个 ELF/DWARF2“vmlinux”
是否可以将 C 代码(在嵌入式系统上运行)中的调试文本打印到 Lauterbach TRACE32(通过 Lauterbach 硬件连接)?以前我们通过UART(串行连接)输出,但现在不可用了。