Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在dbx中的内存位置上放置断点?_C_Debugging_Memory Leaks_Solaris_Dbx - Fatal编程技术网

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

C 如何在dbx中的内存位置上放置断点?,c,debugging,memory-leaks,solaris,dbx,C,Debugging,Memory Leaks,Solaris,Dbx,一个同事有一个C程序,由于某些内存损坏而以可预测的方式失败。他希望使用dbx在分配内存位置后监视它,以便查明导致损坏的代码 这可能吗?如果是这样的话,在损坏时生成断点的语法是什么 如果不是,那么解决这类问题的好方法是什么 (我通常的策略是查看源代码管理,看看我最近做了哪些更改,因为这通常是原因。但所讨论的代码听起来似乎只是靠运气才起作用,所以不会起作用。此外,我还因为从未使用过代码而将自己排除在罪魁祸首之外。-我不是Solaris开发人员,但是,您可以使用gdb和硬件断点来实现这一点。更深入地研

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

这可能吗?如果是这样的话,在损坏时生成断点的语法是什么

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


(我通常的策略是查看源代码管理,看看我最近做了哪些更改,因为这通常是原因。但所讨论的代码听起来似乎只是靠运气才起作用,所以不会起作用。此外,我还因为从未使用过代码而将自己排除在罪魁祸首之外。-

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

更深入地研究后,发现在最新版本的
dbx
上的解决方案类似于:

stop access w <address>, <size>
这假设
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.
(dbx)帮助停止HWP
stophwp
当指定文件的内容被删除时停止执行
内存区域改变。这是一个成功的例子
并非所有型号都提供硬件和软件。

您可能需要使用:
停止访问wb&p,sizeof(int)
在写入内存之前停止dbx您可以尝试与Electric Fence链接
(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.