一位同事的 C 程序由于某些内存损坏而以可预测的方式失败。他希望在分配内存位置后使用 dbx 来监视内存位置,以便查明导致损坏的代码。
这可能吗?如果是这样,在损坏时产生断点的语法是什么?
如果没有,解决此类问题的好方法是什么?
(我通常的策略是查看源代码管理,看看我最近更改了什么,因为这通常是原因。但是有问题的代码听起来好像只能靠运气才能工作,所以这不会工作。此外,由于我从未使用过代码,所以我已经不再是罪魁祸首。;-)
最佳答案
经过更深入的研究,最新版本的 dbx
上出现了解决方案。是这样的:
stop access w <address>, <size>
自 <address>
和<size>
可以是表达式,你可以编写如下命令:
stop access w &p, sizeof(int)
这假设 p
是一个指针,我们想要监视它指向的第一个单词。
我也遇到过一个很好的tutorial关于跟踪和踩踏内存错误。它使用 gdb
而不是dbx
,但原理应该是一样的。
关于c - 如何在 dbx 中的内存位置放置断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/351052/