如何在dbx中的内存位置放置断点?

时间:2008-12-08 21:48:46

标签: c debugging memory-leaks solaris dbx

由于内存损坏,同事有一个C程序以可预测的方式失败。他希望在分配内存位置后使用dbx监视内存位置,以便查明导致损坏的代码。

这可能吗?如果是这样,在腐败时产生断点的语法是什么?

如果没有,那么解决这类问题的好方法是什么?

(我通常的策略是查看源代码控制,看看我最近发生了什么变化,因为这通常是原因。但是有问题的代码听起来似乎只是运气好,所以不会另外,我已经把自己作为罪魁祸首从未使用过代码。@ -

3 个答案:

答案 0 :(得分:4)

看起来更深入,似乎dbx的最新版本的解决方案类似于:

stop access w <address>, <size>

由于<address><size>可以是表达式,因此您可以编写如下命令:

stop access w &p, sizeof(int)

这假设p是一个指针,我们希望监控它指向的第一个单词。

我在追踪和踩踏内存错误时遇到了很好的tutorial。它使用gdb而不是dbx,但原则应该相同。

答案 1 :(得分:1)

在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.

答案 2 :(得分:0)

我不是Solaris开发人员,但你可以使用gdb和硬件断点来实现这一点