首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GLib和GDBus的静态分析工具

GLib和GDBus的静态分析工具
EN

Stack Overflow用户
提问于 2013-12-09 19:04:35
回答 1查看 446关注 0票数 2

有人知道在使用GLib和GDBus时有什么工具或技术可以检测内存泄漏吗?我对两个库的使用都比较陌生,并且相信我使用的API是正确的,但是如果有一个工具可以用来确认我正在正确地清理我的资源,那就太好了。我已经在各种林特类型的程序中运行了我的代码,但是这些程序可能不会检测到任何抽象到库中的东西。

我正在寻找一个专门针对GLib或GDBus的工具,或者一个我可以用来测试这些库的工具?也许我甚至可以为GLib或GDBus设置一些编译时标志?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-10 08:26:01

最近,我用glib/gdbus/libsoup做了一些巫毒,根据我的经验,、val差制、和做得很好(虽然不是静态分析,而是运行时分析)。

Val差制(使用malloc,即使是g_片_alloc/g_片_new,使val研不那么困惑,对gc友好地取消所有的逻辑内部指针)

代码语言:javascript
复制
G_DEBUG=gc-friendly G_SLICE=always-malloc valgrind ./yourapp

输出中仍然会出现假阳性--使用抑制文件来隐藏它们。

massif (使用驻留模块来防止大量噪音)

代码语言:javascript
复制
G_DEBUG=resident-modules valgrind --tool=massif --depth=10 --max-snapshots=1000 --alloc-fn=g_malloc --alloc-fn=g_realloc --alloc-fn=g_try_malloc          --alloc-fn=g_malloc0 --alloc-fn=g_mem_chunk_alloc --threshold=0.01 ./yourapp --your --app --options

使用一些可视化工具使massifs输出可读(几个MB日志)massif可视化器做得很好。

请记住,glib有几MB的静态分配的内容(所有的GObject类型类)

如果您需要自己调试库,就没有办法用调试标志(-g)编译它们。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20478596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档