如何使用带有strace的GDB来查找内存泄漏?

时间:2016-10-31 11:03:40

标签: debugging process-management strace gdb memory-leaks

我有一个C ++程序:

  1. 分配内存(总量相同)
  2. 应该释放所有内存
  3. 重复
  4. 我正在使用我发现的here方法来了解是否所有内存都已正确释放。但事实证明,每15次左右的迭代,我的程序会要求更多的内存,理论上不应该这样做。

    我想知道请求内存的位置和原因,以及未解除分配的内容会导致程序随着时间的推移请求越来越多的内存。

    我可以使用GDB。我的想法是:用我的程序运行strace一点。中断程序并通过将其进程号传递给GDB来挂钩GDB。然后(也许?)尝试通过使用(可能是?)examine GDB命令来找出发生了什么(因为strace打印了分配内存的地址,我可以使用GDB)。

    但是,我不确定这是怎么回事,而且我也不完全确定如何阻止我的程序停止其进程。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

您可以考虑尝试: