Mon Mar 28 11:09:02 2005  Soeren Sandmann  <sandmann@redhat.com>

	* TODO: updates
This commit is contained in:
Soeren Sandmann
2005-03-28 16:10:01 +00:00
committed by Søren Sandmann Pedersen
parent 398603a85d
commit c2dc2c3680
5 changed files with 118 additions and 63 deletions

View File

@ -1,3 +1,7 @@
Mon Mar 28 11:09:02 2005 Soeren Sandmann <sandmann@redhat.com>
* TODO: updates
Sat Mar 26 19:26:52 2005 Søren Sandmann <sandmann@redhat.com> Sat Mar 26 19:26:52 2005 Søren Sandmann <sandmann@redhat.com>
* sysprof.c: Show the right number of samples afte Open; remove * sysprof.c: Show the right number of samples afte Open; remove

86
TODO
View File

@ -1,39 +1,27 @@
- Get this TODO file more organized Before 1.0:
- Figure out what's needed before 1.0
- Consider what it would take to take stacktraces of other languages
- perl,
- python
- java
- bash
- Add support for line numbers within functions
- Consider adding KDE-style nested callgraph view
- grep FIXME
- Need to make "make install" work (how do you know where to install
kernel modules?)
- Find out what distributions it actually works on - Find out what distributions it actually works on
(ask for sucess stories in 0.9.x releases)
- Find out how to hack around gtk+ bug causing multiple double clicks
to get eaten.
- hook up about box - hook up about box
- Need an icon - Need an icon
- Add busy cursors, - Add busy cursors,
- when you hit "Profile" - when you hit "Profile"
- when you click something in the main list and we don't respond - when you click something in the main list and we don't respond
within 50ms (or perhaps when we expect to not be able to do within 50ms (or perhaps when we expect to not be able to do
so (can we know the size in advance?)) so (can we know the size in advance?))
- Need to make "make install" work (how do you know where to install
kernel modules?)
- Sould just install the kernel module if it running as root, pop up - Sould just install the kernel module if it running as root, pop up
a dialog if not. a dialog if not. Note we must be able to start without module now, since
it is useful to just load profiles from disk.
- hook up menu items view/start etc (or possibly get rid of them or move
them)
- give profiles on the command line
- autoconfuscate?
- .desktop file
Before 1.2:
- Reorganise stackstash and profile - Reorganise stackstash and profile
@ -54,24 +42,19 @@
- Send each stack trace to the profile module, along with - Send each stack trace to the profile module, along with
presentation objects presentation objects
- Charge 'self' properly to processes that don't get any stack trace at all
- hook up menu items view/start etc (or possibly get rid of them or move (probably we get that for free with stackstash reorganisation)
them) - Consider adding KDE-style nested callgraph view
- Add support for line numbers within functions
- consider caching [filename => bin_file] - consider caching [filename => bin_file]
- Have kernel module report the file the address was found in - Have kernel module report the file the address was found in
Should avoid a lot of potential broken/raciness with dlopen etc. Should avoid a lot of potential broken/raciness with dlopen etc.
- Make things faster
- grep FIXME - Can I get it to profile itself?
- speedprof seems to report that lots of time is spent in
- hide internal stuff in ProfileDescendant stack_stash_foreach() and also in generate_key()
- add an 'everything' object. It is really needed for a lot of things - add an 'everything' object. It is really needed for a lot of things
- kernel module should put process to sleep before sampling. Should get us
more accurate data
- make profile.c more agnostic to processes and functions etc. Ideally - make profile.c more agnostic to processes and functions etc. Ideally
it should just take a set of stack traces containing "presentation it should just take a set of stack traces containing "presentation
objects" and do something sensible with it. objects" and do something sensible with it.
@ -81,18 +64,31 @@
dump the data to a network socket. Should be able to react to eg. dump the data to a network socket. Should be able to react to eg.
SIGUSR1 by dumping the data. SIGUSR1 by dumping the data.
- Port to GtkAction - hide internal stuff in ProfileDescendant
- Charge 'self' properly to processes that don't get any stack trace at all - kernel module should put process to sleep before sampling. Should get us
more accurate data
Later:
- Find out how to hack around gtk+ bug causing multiple double clicks
to get eaten.
- Figure out what a 'disk profiler' is.
- Consider what it would take to take stacktraces of other languages
- perl,
- python
- java
- bash
- figure out a way to deal with both disk and CPU. Need to make sure that - figure out a way to deal with both disk and CPU. Need to make sure that
things that are UNINTERRUPTIBLE while there are RUNNING tasks is not things that are UNINTERRUPTIBLE while there are RUNNING tasks is not
consider bad. consider bad.
- Make things faster
- Can I get it to profile itself?
- speedprof seems to report that lots of time is spent in
stack_stash_foreach() and also in generate_key()
DONE: DONE:

View File

@ -549,6 +549,7 @@ add_trace_to_tree (ProfileDescendant **tree, GList *trace, guint size)
{ {
ProfileDescendant *seen_tree_node; ProfileDescendant *seen_tree_node;
/* Have we seen this object further up the tree? */
seen_tree_node = g_hash_table_lookup (seen_objects, node->object); seen_tree_node = g_hash_table_lookup (seen_objects, node->object);
if (seen_tree_node) if (seen_tree_node)

View File

@ -1020,6 +1020,7 @@ set_shadows (GladeXML *xml)
"{ " "{ "
" GtkToolbar::shadow_type = none " " GtkToolbar::shadow_type = none "
" GtkMenuBar::shadow_type = none " " GtkMenuBar::shadow_type = none "
" GtkMenuBar::internal_padding = 2 "
"} " "} "
"widget \"*toolbar\" style : rc \"blah\"\n" "widget \"*toolbar\" style : rc \"blah\"\n"
"widget \"*menubar\" style : rc \"blah\"\n" "widget \"*menubar\" style : rc \"blah\"\n"
@ -1067,7 +1068,7 @@ build_gui (Application *app)
G_CALLBACK (on_save_as_clicked), app); G_CALLBACK (on_save_as_clicked), app);
/* quit */ /* quit */
g_signal_connect (G_OBJECT (glade_xml_get_widget (xml, "quit_item")), "activate", g_signal_connect (G_OBJECT (glade_xml_get_widget (xml, "quit")), "activate",
G_CALLBACK (on_delete), NULL); G_CALLBACK (on_delete), NULL);
/* Tool items */ /* Tool items */

View File

@ -17,6 +17,7 @@
<property name="skip_pager_hint">False</property> <property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="focus_on_map">True</property>
<child> <child>
<widget class="GtkVBox" id="main_vbox"> <widget class="GtkVBox" id="main_vbox">
@ -46,7 +47,7 @@
<accelerator key="o" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="o" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image28"> <widget class="GtkImage" id="image68">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-open</property> <property name="stock">gtk-open</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -68,7 +69,7 @@
<accelerator key="s" modifiers="GDK_CONTROL_MASK | GDK_SHIFT_MASK" signal="activate"/> <accelerator key="s" modifiers="GDK_CONTROL_MASK | GDK_SHIFT_MASK" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image29"> <widget class="GtkImage" id="image69">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-save-as</property> <property name="stock">gtk-save-as</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -88,11 +89,24 @@
</child> </child>
<child> <child>
<widget class="GtkImageMenuItem" id="quit_item"> <widget class="GtkImageMenuItem" id="quit">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label">gtk-quit</property> <property name="label" translatable="yes">_Quit</property>
<property name="use_stock">True</property> <property name="use_underline">True</property>
<signal name="activate" handler="on_quit1_activate" last_modification_time="Wed, 31 Dec 2003 20:44:40 GMT"/> <signal name="activate" handler="on_quit_activate" last_modification_time="Wed, 31 Dec 2003 20:44:40 GMT"/>
<accelerator key="q" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
<widget class="GtkImage" id="image70">
<property name="visible">True</property>
<property name="stock">gtk-quit</property>
<property name="icon_size">1</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
</child>
</widget> </widget>
</child> </child>
</widget> </widget>
@ -117,7 +131,7 @@
<signal name="activate" handler="on_start1_activate" last_modification_time="Thu, 04 Nov 2004 18:51:54 GMT"/> <signal name="activate" handler="on_start1_activate" last_modification_time="Thu, 04 Nov 2004 18:51:54 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image30"> <widget class="GtkImage" id="image71">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-media-play</property> <property name="stock">gtk-media-play</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -138,7 +152,7 @@
<signal name="activate" handler="on_profile1_activate" last_modification_time="Thu, 04 Nov 2004 18:51:54 GMT"/> <signal name="activate" handler="on_profile1_activate" last_modification_time="Thu, 04 Nov 2004 18:51:54 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image31"> <widget class="GtkImage" id="image72">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-justify-left</property> <property name="stock">gtk-justify-left</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -159,7 +173,7 @@
<signal name="activate" handler="on_reset_item_activate" last_modification_time="Fri, 05 Nov 2004 15:34:30 GMT"/> <signal name="activate" handler="on_reset_item_activate" last_modification_time="Fri, 05 Nov 2004 15:34:30 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image32"> <widget class="GtkImage" id="image73">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-clear</property> <property name="stock">gtk-clear</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -186,11 +200,23 @@
<widget class="GtkMenu" id="menuitem4_menu"> <widget class="GtkMenu" id="menuitem4_menu">
<child> <child>
<widget class="GtkImageMenuItem" id="about_item"> <widget class="GtkImageMenuItem" id="about">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label">gtk-about</property> <property name="label" translatable="yes">_About</property>
<property name="use_stock">True</property> <property name="use_underline">True</property>
<signal name="activate" handler="on_about1_activate" last_modification_time="Wed, 31 Dec 2003 20:44:40 GMT"/> <signal name="activate" handler="on_about_activate" last_modification_time="Wed, 31 Dec 2003 20:44:40 GMT"/>
<child internal-child="image">
<widget class="GtkImage" id="image74">
<property name="visible">True</property>
<property name="stock">gtk-about</property>
<property name="icon_size">1</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
</child>
</widget> </widget>
</child> </child>
</widget> </widget>
@ -205,12 +231,26 @@
</packing> </packing>
</child> </child>
<child>
<widget class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xscale">1</property>
<property name="yscale">1</property>
<property name="top_padding">0</property>
<property name="bottom_padding">3</property>
<property name="left_padding">3</property>
<property name="right_padding">3</property>
<child> <child>
<widget class="GtkHSeparator" id="hseparator1"> <widget class="GtkHSeparator" id="hseparator1">
<property name="visible">True</property> <property name="visible">True</property>
</widget> </widget>
</child>
</widget>
<packing> <packing>
<property name="padding">2</property> <property name="padding">0</property>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
</packing> </packing>
@ -334,7 +374,7 @@
</child> </child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">3</property>
<property name="expand">True</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
</packing> </packing>
@ -368,6 +408,10 @@
<property name="yalign">0.5</property> <property name="yalign">0.5</property>
<property name="xpad">6</property> <property name="xpad">6</property>
<property name="ypad">0</property> <property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget> </widget>
</child> </child>
</widget> </widget>
@ -378,7 +422,7 @@
</child> </child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">3</property>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
</packing> </packing>
@ -425,6 +469,9 @@
<property name="rules_hint">True</property> <property name="rules_hint">True</property>
<property name="reorderable">False</property> <property name="reorderable">False</property>
<property name="enable_search">True</property> <property name="enable_search">True</property>
<property name="fixed_height_mode">False</property>
<property name="hover_selection">False</property>
<property name="hover_expand">False</property>
</widget> </widget>
</child> </child>
</widget> </widget>
@ -451,6 +498,9 @@
<property name="rules_hint">True</property> <property name="rules_hint">True</property>
<property name="reorderable">False</property> <property name="reorderable">False</property>
<property name="enable_search">True</property> <property name="enable_search">True</property>
<property name="fixed_height_mode">False</property>
<property name="hover_selection">False</property>
<property name="hover_expand">False</property>
</widget> </widget>
</child> </child>
</widget> </widget>
@ -483,6 +533,9 @@
<property name="rules_hint">True</property> <property name="rules_hint">True</property>
<property name="reorderable">False</property> <property name="reorderable">False</property>
<property name="enable_search">True</property> <property name="enable_search">True</property>
<property name="fixed_height_mode">False</property>
<property name="hover_selection">False</property>
<property name="hover_expand">False</property>
</widget> </widget>
</child> </child>
</widget> </widget>