【发布时间】:2015-09-30 09:40:04
【问题描述】:
valgrind 什么时候打印它的错误日志?
它一次将每个错误转储到日志文件中。 每当我尝试特定输入时,如何立即获取内存丢失消息。
请帮我解决这个问题。提前致谢。
【问题讨论】:
标签: memory memory-leaks valgrind
valgrind 什么时候打印它的错误日志?
它一次将每个错误转储到日志文件中。 每当我尝试特定输入时,如何立即获取内存丢失消息。
请帮我解决这个问题。提前致谢。
【问题讨论】:
标签: memory memory-leaks valgrind
这对于 memcheck afaik 是不可能的。它使用一些附加信息作为调试帮助来监视每个内存卡盘的分配和释放。如果分配了一些内存但没有释放,它可能会丢失。 Memcheck 还跟踪是否仍然可以引用一块内存,但我认为在每次操作后检查它会有点过分。
只需编写一个脚本,使用带有参数的 valgrind 调用您的工具,或者 - 更好的是 - 寻找一个支持 valgrind 的单元测试框架。
【讨论】:
memcheck 将立即输出某些类别的错误。例如, 当使用未初始化的数据进行跳转时。
完成泄漏搜索时会输出“内存泄漏错误”。 默认情况下,在程序执行结束时进行泄漏搜索。
在执行期间可以使用多种技术进行泄漏搜索:
您可以在 shell 中使用 vgdb。
你可以使用GDB+vgdb在各个地方下断点,遇到断点时,做泄漏搜索。更一般地说,您可以使用任何 GDB 命令(下一步/步骤/...)并在需要时进行泄漏搜索。
最后,您可以使用客户端请求从您的程序启动泄漏搜索。
有关详细信息,请参阅:
http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.gdbserver
http://www.valgrind.org/docs/manual/mc-manual.html#mc-manual.monitor-commands
【讨论】: