HI,
我用c ++开发了一个库,用于跟踪new和delete运算符并生成相同的日志。现在我必须添加另外一个功能,它将在2秒后生成新的日志和删除,并且在2秒后它会刷新日志文件。因此,如果主程序获得核心转储,那么我们也可以有一些日志来跟踪memomy分配。任何帮助都会受到赞赏。
提前完成。
答案 0 :(得分:0)
只需写入一些缓冲区并将最后一次转储的时间戳存储到磁盘,如果超过2秒前再次转储缓冲区并重置时间戳。但是如果你想要这个日志进行调试,即使发生了崩溃,我也认为你可以在2秒钟内丢失重要信息,也许你可以在调试模式下运行时编写每个新的/删除而没有2秒的延迟。
答案 1 :(得分:0)
对于一个计算机程序,2秒是非常长的时间,并且在该时间内可能发生许多分配/解除分配,如果主程序崩溃则不会被记录。
更好的选择是将有关每个分配和释放的信息记录到某个持久存储(例如文件)。这可能会导致记录大量数据,因此您应该只在调试可能与内存相关的问题时启用/激活该功能,但它的优势在于核心转储不会导致您丢失那么多信息(在大多数缓冲区是值得的,如果你使用的是缓冲IO),你可以让日志上的一些离线分析工具松散,找出潜在的问题(或者只是过滤掉大部分明显正确的分配/释放对)。 / p>
答案 2 :(得分:0)
有用于验证内存访问正确性的工具,例如valgrind
。你看过他们了吗?如果没有,你应该 - 如果你计划为每一个分配进行这种日志记录,它会使你的程序减慢很多,就像那些已经编写过的工具一样。如果你需要更精确定位的东西,那么写自己的东西是个好主意。