[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13088] trunk/blender: while trying to debug memory leaks, extended MEM_printmemlist to print a python dict and some lines at the end to format it in a useful way when run as a python script .
Campbell Barton
ideasman42 at gmail.com
Tue Jan 1 17:14:08 CET 2008
Revision: 13088
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13088
Author: campbellbarton
Date: 2008-01-01 17:14:08 +0100 (Tue, 01 Jan 2008)
Log Message:
-----------
while trying to debug memory leaks, extended MEM_printmemlist to print a python dict and some lines at the end to format it in a useful way when run as a python script.
Modified Paths:
--------------
trunk/blender/intern/guardedalloc/intern/mallocn.c
trunk/blender/source/blender/src/editscreen.c
Modified: trunk/blender/intern/guardedalloc/intern/mallocn.c
===================================================================
--- trunk/blender/intern/guardedalloc/intern/mallocn.c 2008-01-01 15:53:38 UTC (rev 13087)
+++ trunk/blender/intern/guardedalloc/intern/mallocn.c 2008-01-01 16:14:08 UTC (rev 13088)
@@ -333,6 +333,7 @@
}
+/* Prints in python syntax for easy */
void MEM_printmemlist()
{
MemHead *membl;
@@ -341,13 +342,33 @@
membl = membase->first;
if (membl) membl = MEMNEXT(membl);
+
+ print_error("# membase_debug.py\n");
+ print_error("membase = [\\\n");
while(membl) {
- print_error("%s len: %d %p\n",membl->name,membl->len, membl+1);
+ fprintf(stderr, "{'len':%i, 'name':'''%s''', 'pointer':'%p'},\\\n", membl->len, membl->name, membl+1);
if(membl->next)
membl= MEMNEXT(membl->next);
else break;
}
-
+ fprintf(stderr, "]\n\n");
+ fprintf(stderr,
+"mb_userinfo = {}\n"
+"totmem = 0\n"
+"for mb_item in membase:\n"
+"\tmb_item_user_size = mb_userinfo.setdefault(mb_item['name'], [0,0])\n"
+"\tmb_item_user_size[0] += 1 # Add a user\n"
+"\tmb_item_user_size[1] += mb_item['len'] # Increment the size\n"
+"\ttotmem += mb_item['len']\n"
+"print '(membase) items:', len(membase), '| unique-names:', len(mb_userinfo), '| total-mem:', totmem\n"
+"mb_userinfo_sort = mb_userinfo.items()\n"
+"for sort_name, sort_func in (('size', lambda a: -a[1][1]), ('users', lambda a: -a[1][0]), ('name', lambda a: a[0])):\n"
+"\tprint '\\nSorting by:', sort_name\n"
+"\tmb_userinfo_sort.sort(key = sort_func)\n"
+"\tfor item in mb_userinfo_sort:\n"
+"\t\tprint 'name:%%s, users:%%i, len:%%i' %% (item[0], item[1][0], item[1][1])\n"
+ );
+
mem_unlock_thread();
}
Modified: trunk/blender/source/blender/src/editscreen.c
===================================================================
--- trunk/blender/source/blender/src/editscreen.c 2008-01-01 15:53:38 UTC (rev 13087)
+++ trunk/blender/source/blender/src/editscreen.c 2008-01-01 16:14:08 UTC (rev 13088)
@@ -1397,9 +1397,14 @@
towin= 0;
}
else if (event==QKEY) {
- if((G.obedit && G.obedit->type==OB_FONT && g_activearea->spacetype==SPACE_VIEW3D)||g_activearea->spacetype==SPACE_TEXT||g_activearea->spacetype==SPACE_SCRIPT);
+ /* Temp place to print mem debugging info ctrl+alt+shift + qkey */
+ if ( G.qual == (LR_SHIFTKEY | LR_ALTKEY | LR_CTRLKEY) ) {
+ MEM_printmemlist();
+ }
+
+ else if((G.obedit && G.obedit->type==OB_FONT && g_activearea->spacetype==SPACE_VIEW3D)||g_activearea->spacetype==SPACE_TEXT||g_activearea->spacetype==SPACE_SCRIPT);
else {
- if(val && (G.qual & LR_CTRLKEY)) {
+ if(val && (G.qual == LR_CTRLKEY)) {
if(okee("Quit Blender")) exit_usiblender();
}
towin= 0;
More information about the Bf-blender-cvs
mailing list