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

标签 c debugging memory-leaks solaris dbx

一位同事的 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/

相关文章:

C - 通过 strcpy 打印 char* 行为是否矛盾?

java - IntelliJ IDEA : Breakpoint not being hit, 并且没有勾选,只是一个红点

python - 使用来自终端的参数调试 python 脚本

c - Linux中使用C获取inode的远程IP

c - strcmp 对 2 个相同字符串的行为不当

c - nm 符号实用程序报告

linux - 父 shell 终止后恢复 gdb session

macos - PresentedViewControllers 内存泄漏

java - Java JScrollPane 的内存使用

performance - Fiddler2 中的内存泄漏和性能泄漏