C 如何跟踪对堆上分配的内存块所做的更改

C 如何跟踪对堆上分配的内存块所做的更改,c,memory,memory-management,C,Memory,Memory Management,我有一个多线程程序(使用ucontext例程),其中我使用malloc()为子线程分配了堆栈。每当我试图释放为该线程分配的内存(核心转储)时,实际问题就会出现。 我怀疑特定线程的内存块正在被其他线程的堆栈增长损坏/或者另一方面可能是代码中的逻辑错误。 为了验证这一点,我想跟踪对内存块所做的更改,这样我就可以100%确定我的假设。 使用mtrace,我无法实现我想要的。 有什么建议吗?使用.. 它是跟踪正在运行的程序的专业工具,专门跟踪堆分配、线程变量和子进程 如果我了解您的问题,那么--verb

我有一个多线程程序(使用ucontext例程),其中我使用malloc()为子线程分配了堆栈。每当我试图释放为该线程分配的内存(核心转储)时,实际问题就会出现。
我怀疑特定线程的内存块正在被其他线程的堆栈增长损坏/或者另一方面可能是代码中的逻辑错误。 为了验证这一点,我想跟踪对内存块所做的更改,这样我就可以100%确定我的假设。
使用mtrace,我无法实现我想要的。
有什么建议吗?

使用..
它是跟踪正在运行的程序的专业工具,专门跟踪堆分配、线程变量和子进程


如果我了解您的问题,那么
--verbose
--check stack vars
--read var info
选项将对您特别有帮助。

如何跟踪该内存块的上次修改日期和修改线程的名称。@flybird您能详细说明如何做到这一点吗?