一个同事具有可预测的方式失败,因为一些损坏存储器中的C程序。他想用dbx监视内存位置,一旦它以查明导致腐败代码的分配。

这是可能的?如果是的话什么是腐败的时刻?

产生断点语法

如果不是,这将是一个很好的方法来解决这个问题排序的?

(我通常的策略是看源控制,看看有什么我最近变了,因为这通常是原因,但有问题的代码听起来好像只过靠运气的工作,这样就不会。工作还,我已经消除自己是一个被从未与代码工作的罪魁祸首; - )

有帮助吗?

解决方案

说完看着越深,它出现在最新版本dbx的解决办法是这样的:

stop access w <address>, <size>

由于<address><size>可以是表达式,可以写等命令:

stop access w &p, sizeof(int)

此假定p是一个指针,我们要监视它指向的第一个字。

我也穿过细教程上运行跟踪和跺脚内存错误。它使用gdb而非dbx,但原则应该是相同的。

其他提示

在AIX上,要使用stophwp:

(dbx) help stophwp

stophwp <address> <size>

        Stop execution when the contents of the specified
        memory region change.  This is a accomplished in
        hardware and may not be available on all models.

我没有的Solaris开发,但你可以使用gdb和硬件断点做到这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top