问题标签 [watchpoint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
11 浏览

debugging - 如何在 gem5 SE/FS 模拟中设置数据断点?

我试图找出可以使用 gem5 预先存在的 SimObjects 设置数据观察点/断点的方法。如果没有 SimObjects 可以这样做,我也可以创建自己的,但为此,我需要了解数据观察点的概念。

任何人都可以帮我解决这些问题吗?例如,如果模拟 CPU 通过 MemReq SimObject 请求数据的地址,我想在发生这种情况时抛出异常并执行另一段代码。(基本上类似于 ARM DS-5 调试器功能)。任何帮助深表感谢。

0 投票
0 回答
24 浏览

x86 - 当cpu写入许多特定地址时,是否可以设置中断?

我在这里问了一个类似的问题。

但是,硬件调试中断似乎非常有限。

我想要获得的理想机制是能够监控多个变量,一旦它们中的任何一个发生变化,相应的处理程序就会被触发。

该平台是x86-64系统,感谢任何人的帮助和花在这个lol上的时间~~

0 投票
1 回答
50 浏览

x86 - GDB 在 x86 上监视 DMA 控制器内存访问

我将基于 FreeBSD 的内核作为 QEMU/KVM 来宾运行。

我正在开发基于 FreeBSD 的操作系统内核 SCSI 驱动程序,并且read系统调用出现问题会产生损坏的数据。

为了解决这个问题,我使用了在 QEMU 中运行的内核,并希望跟踪负责将数据传递到用户提供的缓冲区的 DMA 控制器执行的内存访问。在 QEMU 的情况下,控制器是QEMU SCSI/ATA Disk设备。所以我尝试在用户提供的缓冲区上设置观察点

例子:

设置断点int sys_read(struct thread *td, struct read_args *uap)我从用户那里得到了一些缓冲区:

问题在于观察点永远不会被击中。为什么?我想用它来了解检查从设备传输到内存的数据。

是否有可能从 DMA 控制器观看访问?

升级版:

我设法达到了观察点。它看起来如下:

这很有可能是正确的,因为显示为旧值新值的前 4 个字节与我期望读取的内容相匹配。

但奇怪的是,它只在 QEMU 启动时被击中一次。随后read的系统调用不会触发观察点。为了让它被击中,我重新启动 QEMU 并再次设置它。

这个堆栈跟踪可能意味着什么?