看板 Linux 關於我們 聯絡資訊
敝人在 Linux 下是使用 GTK+ 來開發程式, 然後使用 valgrind 這個神器來找出程式中有關記憶體存取的潛在問題。 但從 valgrind 3.6.0 開始,valgrind 的 Log 就大爆漲, 比如說,以下程式 gtk.c: #include <gtk/gtk.h> int main(int argc, char **argv) { gtk_init(&argc, &argv); GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(gtk_main_quit), NULL); gtk_widget_show_all(window); gtk_main(); return 0; } 您可以用以下指令來編譯這個程式: (GTK2) gcc -Wall -g gtk.c -o gtk `pkg-config --cflags --libs gtk+-2.0` (GTK3) gcc -Wall -g gtk.c -o gtk `pkg-config --cflags --libs gtk+-3.0` 然後使用以下指令,用 valgrind 來執行這個程式: valgrind --leak-check=full ./gtk 理論上,這個小程式應該不會有什麼記憶體存取的潛在問題吧? 也就是說,valgrind 應該抓不到什麼問題才對。 在 Debian Lenny (valgrind 3.3.1 + GTK2) 下, 產生的 Log 是 53 行,瞄幾眼就看完了,的確是沒抓到什麼大問題。 但在 Debian Squeeze (valgrind 3.6.0 + GTK2) 下,所產生的 Log 竟然有 6,295 行; 而在 Debian Wheezy (valgrind 3.7.0 + GTK3) 下,所產生的 Log 則為 5,927 行。 說實在話,5、6 千行的 Log 基本上是看不完的,且因為資訊太多太雜亂,根本沒辨法用來除錯。 請問,有什麼辨法能讓新版的 valgrind 的 Log 像舊版一樣精簡呢? 或者,有其它工具能取代 valgrind 的嗎? 謝謝! --
Bencrie:很多應該都是 gtk 或相依 library 相關的 error 吧 XD 03/31 20:37
Bencrie:--leak-check=full 應該是含抓 leaks,所以訊息比較多? 03/31 20:38
hpps:不加--leak-check=full看看? 04/01 00:24
不加的話,就只是個 SUMMARY 報表,所以不加不行... 如果是用 --leak-check=yes 的話,也是接近 5000 行,還是太多了。
Bencrie:那 valgrind -v 呢 XD 不加通常是比較嚴重的錯誤才會報 04/01 17:31
用 valgrind -v 則是 5,540 行。差不多...
Nt1:試試 intel inspector, 個人覺得很好用 04/03 16:37
danielsig727:大推 Intel 的,Linux 版免費 04/04 09:44
咦?趕快去試用看看! ※ 編輯: Tetralet 來自: 114.32.201.46 (04/04 18:08)