Memory leaks GLib和GDBus的静态分析工具
有人知道在使用GLib和GDBus时检测内存泄漏的工具或技术吗?我对使用这两个库比较陌生,并且相信我正确地使用了API,但是如果有一个工具可以用来确认我正确地清理了我的资源,那就太好了。我已经通过各种lint类型的程序运行了我的代码,但这些程序可能没有检测到任何抽象到库中的内容Memory leaks GLib和GDBus的静态分析工具,memory-leaks,static-analysis,glib,gdbus,Memory Leaks,Static Analysis,Glib,Gdbus,有人知道在使用GLib和GDBus时检测内存泄漏的工具或技术吗?我对使用这两个库比较陌生,并且相信我正确地使用了API,但是如果有一个工具可以用来确认我正确地清理了我的资源,那就太好了。我已经通过各种lint类型的程序运行了我的代码,但这些程序可能没有检测到任何抽象到库中的内容 我正在寻找一个专门针对GLib或GDBus的工具,或者一个我可以针对这些库使用的工具?也许我甚至可以为GLib或GDBus设置一些编译时标志?我最近刚刚用GLib/GDBus/libsoup做了一些巫术,根据我的经验,v
我正在寻找一个专门针对GLib或GDBus的工具,或者一个我可以针对这些库使用的工具?也许我甚至可以为GLib或GDBus设置一些编译时标志?我最近刚刚用GLib/GDBus/libsoup做了一些巫术,根据我的经验,valgrind和valgrind/massif做得很好(虽然不是真正的静态分析,而是运行时分析)
valgrind(即使对于g_slice_alloc/g_slice_new,也使用malloc,使valgrind不那么混乱,gc友好型会使所有glib内部指针无效) 输出中仍然会有误报–使用抑制文件将其隐藏
地块(使用常驻模块以防止大量噪音) 使用一些可视化工具使体量输出可读(两个MB日志)。massif visualizer做得很好 请记住,glib有几MB的静态分配内容(所有的GObject类型类)
如果您需要自行调试库,则无法使用调试标志(-g)编译它们
G_DEBUG=gc-friendly G_SLICE=always-malloc valgrind ./yourapp
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