formans / jrfonseca Goto Github PK
View Code? Open in Web Editor NEWAutomatically exported from code.google.com/p/jrfonseca
Automatically exported from code.google.com/p/jrfonseca
hiya, great program! it has been very useful to me in testing the in- and
output of shedskin, a python-to-c++ compiler I've been working on..
(http://shed-skin.blogspot.com)
I sometimes get an assertionerror on line 62, for example for the attached
gprof. but everything seems to work fine after commenting out this line. if
gprof produces invalid output, maybe a warning would be better here..?
Ubuntu 8.10
gcc (Ubuntu 4.3.2-1ubuntu12) 4.3.2
Linux akemi 2.6.27-11-generic #1 SMP Thu Jan 29 19:24:39 UTC 2009 i686
GNU/Linux
Original issue reported on code.google.com by [email protected]
on 29 Mar 2009 at 4:40
Attachments:
It seems that it hangs on some callgrind inputs for me. I have to files
named callgrind.out.14542 (515 bytes) and callgrind.out.14542.1 (1.3
Mbytes) and launch it with ./gprof2dot.py -f callgrind -o out.dot
./callgrind.out.14542 (see attachment).
It works about 20 minutes using CPU on 100% before I killed it. Strace
output looks like:
read(3, "", 4096) = 0
read(3, "", 4096) = 0
read(3, "", 4096) = 0
... (and so on)
Original issue reported on code.google.com by [email protected]
on 16 May 2010 at 2:06
Attachments:
Please consider applying attached patch to allow invocation of gprof2dot using
either Python 2 or Python 3.
FYI we are tracking this issue in Gentoo, too:
https://bugs.gentoo.org/show_bug.cgi?id=341687
Original issue reported on code.google.com by [email protected]
on 7 Nov 2010 at 12:08
Attachments:
This is a little patch I wrote which allows xdot.py to open OpenFST
finite-state transducer files directly instead of always having to pipe the
output of fstdraw to it. I've found it to be very convenient so I'm
passing it along though I don't know if this functionality actually belongs
in xdot...
Original issue reported on code.google.com by [email protected]
on 24 Mar 2010 at 8:18
Attachments:
I'd like to be able to install xdot with easy_install, as well as use
setuptools dependency information to make it required for apps wanting to
embed xdot.
Please create a setup.py and upload xdot to PyPI.
Original issue reported on code.google.com by [email protected]
on 4 Jul 2009 at 10:48
Hello!
I have packaged revision of 9c41dcfc9906 for Gentoo GNU/Linux. As fetching
from Mercurial directly is not without problems [1] I would like to ask you to
start making releases for gprof2dot (including debug.py). I could do so myself
but having that upstream is much cleaner in my eyes.
If you're short on time a non-tarbomb [2] tarball containing gprof2dot.py only
would be the minimum that makes me happy.
Thanks in advance! Best, Sebastian
[1] https://bugs.gentoo.org/show_bug.cgi?id=337088
[2] http://en.wikipedia.org/wiki/Tar_%28file_format%29#Tarbomb
Original issue reported on code.google.com by [email protected]
on 14 Sep 2010 at 8:59
I'm using http://raphaeljs.com/ to render digraphs to svg/vml and needed an
xdot parser for parsing xdot into a JSON structure.
The first one I tried was dot_parser.py which uses pyparsing and was very slow.
Then I tried yours and found it to be impressive fast even for large graphs.
But your cairo drawing operations are hardwired to the parser so I had to
hack in some changes to construct a dict/array structure which I feed
through minjson.
I basically replaced XDotAttrParser with some regular expressions to get
polygon points for the edges and arrow heads from attrs.
To get rid of the gtk dependance I resolve the color names with a dict.
This is all very hackish at the moment but is ok for my project.
You can see a very early proof of concept at:
http://atomar.de/graphael/test01.php
Maybe you can separate the parsing from the drawing in a future version so
xdot.py can also be used as a xdot parser library? :)
best regards
Thomas
Original issue reported on code.google.com by [email protected]
on 29 Mar 2009 at 7:43
Hello, thank you for the script: very nice and useful.
I am profiling a web application, so most of the time is spent into a
select() waiting for the request to arrive. I patched my publisher to
profile only the time spent in the request handling, but each request
generates a different file, so i needed gprof2dot to parse many profile
data files at once.
I patched gprof2dot to accept many pstats files as input (no changes for
other profile formats). The pstat.Stats already accepts many input files,
so the command line parser has been changed to feed it with all the input
provided. The call overwrite doesn't issue a warning anymore but is
aggregates the events.
The patch is attached.
Cheers,
-- Daniele
Original issue reported on code.google.com by [email protected]
on 18 Dec 2007 at 11:58
Attachments:
Hey! Jose,
Attached the gprof output.
The outgoing edges of main don't seem right here. They should be <42.86/2 =
21.43> in my opinion.
Thanks,
Manav
Original issue reported on code.google.com by manavkataria
on 20 Dec 2007 at 12:25
Attachments:
I keep trying to use +/- to zoom in and out in xdot.
This patch makes them work. It's based on the list of Gtk keysyms I saw used
for zoom in/out in Eye of GNOME.
Original issue reported on code.google.com by [email protected]
on 19 Dec 2010 at 5:56
Attachments:
What steps will reproduce the problem?
1. profile "x11perf -aa10text" using oprofile
2. run "opreport -cgf /usr/bin/Xorg -p
/lib/modules/2.6.24-16-generic/extra/ > profile"
3. run "gprof2dot.py -f oprofile ./profile"
What is the expected output? What do you see instead?
gprof2dot.py fails with the following message:
Traceback (most recent call last):
File "./gprof2dot.py", line 1345, in <module>
Main().main()
File "./gprof2dot.py", line 1268, in main
self.profile = parser.parse()
File "./gprof2dot.py", line 830, in parse
call = caller.calls[_function.id]
KeyError: ':vmlinux-debug-2.6.24-16-generic:signal_32.c:651:do_notify_resume'
What version of the product are you using? On what operating system?
gprof2dot.py was fetched from svn on sat 04/12/08 (v0.4)
oprofile v0.9.3
on ubuntu hardy
Please provide any additional information below.
The corresponding profile file is available if needed.
Original issue reported on code.google.com by [email protected]
on 12 Apr 2008 at 7:30
Let's have a graph:
{
A -> B,
A -> C,
B -> C,
B -> D
}
So it would be nice of Xdot to highlight B and C if I put my mouse over A;
highlight B if I put my mouse over D, and so on.
Of course, with the edges and edges' labels.
This would help understanding complex graphs with a lot of non-straight and
overlapping edges.
Thank you beforehand.
Original issue reported on code.google.com by [email protected]
on 12 Nov 2008 at 1:28
Hi,
I tried the latest revision of Gprof2Dot (r30) on MacOSX 10.3.9 and I have
the message "error: unexpected end of file"
I attached the output of gprof. You could see that the structure is
different than the example data in the Linux Gazette article.
I tried to adapt the gprof ouptut to be like the example data in the Linux
Gazette article but i have the same eror messsage.
Note than this gprof output works with cgprof and google-gprof2dot.
Regards,
Arnaud
Original issue reported on code.google.com by arnaud.barre
on 1 Apr 2007 at 5:34
Attachments:
We need to intercept the event where you click on an individual 'record-shape'
field. Right now the URL can only be attached to 'node-level', not
'record-level'. Below is an example of record-shape in dot:
http://www.graphviz.org/Gallery/directed/datastruct.html
If we could have this feature that would be awesome.
Thanks.
Original issue reported on code.google.com by [email protected]
on 10 Dec 2010 at 7:50
exchndl.dll currently will produces a `modulename.RPT` crash report file in the
same directory as the executable that launched the process.
This is problematic on Windows Vista / 7 due to the new permissions model for
installed applications (user processes are not allowed to write to Program
Files, etc.).
The attached patch adds a new function to exchndl.c that can be used to set the
target location for the report file.
Here is an example of how it can be used:
HMODULE hmod;
if ((hmod = LoadLibraryW(L"exchndl.dll"))) {
FARPROC proc;
char debug_dir[MAX_PATH];
printf("Loaded exchndl.dll\n");
proc = GetProcAddress(hmod, "SetLogFile");
if (proc) {
if (GetTempPathA(sizeof(debug_dir) * sizeof(char), debug_dir) != 0) {
strcat(debug_dir, "crash.RPT");
printf(" Setting exchndl.dll LogFile to %s\n",
debug_dir);
(proc)(debug_dir);
}
}
}
Original issue reported on code.google.com by [email protected]
on 28 Aug 2010 at 1:30
Attachments:
Hello José,
Thanks for the excellent xdot.py script, just what I was looking for.
I've hacked in some code to automatically reload the open file whenever
its modification timestamp changes, attached is a patch against
http://jrfonseca.googlecode.com/svn/trunk/xdot@272.
I considered using the pyinotify module [1] for more efficient
monitoring of the file, but as it's non-standard decided against it.
I've also not added any options to toggle this new behaviour.
Regards,
Robert
[1] http://pyinotify.sourceforge.net/
Original issue reported on code.google.com by [email protected]
on 6 Aug 2009 at 6:34
Attachments:
I'm reviewing your code now and have some ideas how to improve it.
I think that square_distance() should be transformed and renamed to just
distance() using math.sqrt() function before returning it's value.
Unless that, it has some wacky meaning :)
Also don't forget to modify places like:
if square_distance(x, y, *self.points[0]) <= self.RADIUS*self.RADIUS
to just
if distance(x, y, *self.points[0]) <= self.RADIUS
Original issue reported on code.google.com by [email protected]
on 17 Jun 2009 at 6:21
What steps will reproduce the problem?
1. profile "x11perf -aa10text" using oprofile
2. run "opreport -cgf /usr/bin/Xorg -p
/lib/modules/2.6.24-16-generic/extra/ > profile"
3. run "gprof2dot.py -f oprofile ./profile"
What is the expected output? What do you see instead?
gprof2dot.py fails with the following message:
Traceback (most recent call last):
File "./gprof2dot.py", line 1345, in <module>
Main().main()
File "./gprof2dot.py", line 1268, in main
self.profile = parser.parse()
File "./gprof2dot.py", line 830, in parse
call = caller.calls[_function.id]
KeyError: ':vmlinux-debug-2.6.24-16-generic:signal_32.c:651:do_notify_resume'
What version of the product are you using? On what operating system?
gprof2dot.py was fetched from svn on sat 04/12/08 (v0.4)
oprofile v0.9.3
on ubuntu hardy
Please provide any additional information below.
I have attached the gzipped profile file.
Original issue reported on code.google.com by [email protected]
on 12 Apr 2008 at 7:25
Attachments:
What steps will reproduce the problem?
1. opreport -cgf | ./gprof2dot.py -f oprofile
What is the expected output? What do you see instead?
I get the following traceback:
File "./gprof2dot.py", line 2069, in <module>
Main().main()
File "./gprof2dot.py", line 1994, in main
self.profile = parser.parse()
File "./gprof2dot.py", line 1067, in parse
self.parse_header()
File "./gprof2dot.py", line 1113, in parse_header
self.entry_re = re.compile(entry_re)
File "/usr/lib/python2.6/re.py", line 190, in compile
return _compile(pattern, flags)
File "/usr/lib/python2.6/re.py", line 245, in _compile
raise error, v # invalid expression
sre_constants.error: redefinition of group name 'samples' as group 3; was
group 1
What version of the product are you using? On what operating system?
Updated to revision 296,
Python 2.6.4 on Ubuntu Karmic
oprofile 0.9.4+cvs20090629-2.1ubuntu2
Original issue reported on code.google.com by [email protected]
on 16 Dec 2009 at 4:18
Attachments:
When manually editing DOT files during learning of the DOT language it
would be nice to simply press a "reload"/"refresh" button to see changes.
Original issue reported on code.google.com by [email protected]
on 14 Aug 2009 at 2:42
Hi Jose!
Thanks for the script. I find it really neat!
I tried familiarizing myself with your script using a simple program with 4
funtions. It worked like a charm! But when I used it on one of my project
files it resulted in a ZeroDivisionError. This is the first time I am
profiling so I may have missed something here.
Here is the output:
----------------------------------------------------------------------
kataria@ <snip> $ gprof ./proxy_test | gprof2dot.py
Traceback (most recent call last):
File "/home/kataria/bin/gprof2dot.py", line 1321, in ?
Main().main()
File "/home/kataria/bin/gprof2dot.py", line 1251, in main
self.write_graph()
File "/home/kataria/bin/gprof2dot.py", line 1311, in write_graph
profile.estimate()
File "/home/kataria/bin/gprof2dot.py", line 306, in estimate
call[TOTAL_TIME_RATIO] = call[TOTAL_TIME]/self[TOTAL_TIME]
ZeroDivisionError: float division
----------------------------------------------------------------------
On a quick review of the script I thought you bypass the operation in case
of an exception. But it doesn't behave so. I added the following if
condition, but not much luck.
----------------------------------------------------------------------
304 try:
305 if self[TOTAL_TIME] != 0:
306 call[TOTAL_TIME_RATIO] =
call[TOTAL_TIME]/self[TOTAL_TIME]
307 except UndefinedEvent:
308 pass
----------------------------------------------------------------------
Here is the output with the above change:
----------------------------------------------------------------------
kataria@<snip> $ gprof | gprof2dot.py
digraph {
graph [fontname=Arial, fontsize=10];
node [fontcolor=white, fontname=Arial, style=filled, fontsize=10,
shape=box];
edge [fontname=Arial, fontsize=10];
}
kataria@<snip> $
----------------------------------------------------------------------
System Config:
----------------------------------------------------------------------
kataria@<snip> $ uname -a
Linux <snip> 2.6.15-gentoo-r5 #1 SMP Tue Jun 27 01:50:09 IST 2006 i686
Intel(R) Pentium(R) 4 CPU 3.40GHz GenuineIntel GNU/Linux
/usr/bin/env python -V
Python 2.4.2
#!/usr/bin/env python
"""Generate a dot graph from the output of several profilers."""
<snip>
__version__ = "0.4"
----------------------------------------------------------------------
I would be grateful if you could help me identify/fix this issue soon. Let
me know if you need any more information.
Thanks,
Manav Kataria
Original issue reported on code.google.com by manavkataria
on 19 Dec 2007 at 2:57
What steps will reproduce the problem?
1. access the downloads page: http://code.google.com/p/jrfonseca/downloads/list
2. mercurial repo is empty https://jrfonseca.googlecode.com/hg/
Original issue reported on code.google.com by [email protected]
on 21 Dec 2009 at 7:13
The Nodes have the attribute URL which allows for catching the 'click' signal
while embedding the widget and doing awesome things. However, the edges do not
have this attribute. This patch should correct the issue.
PS: The indentation might be a little off.
Original issue reported on code.google.com by musically.ut
on 20 Nov 2010 at 4:53
Attachments:
One of the users of the w3af, a software where xdot is used, found a bug
where xdot consumes 100% of CPU.
What steps will reproduce the problem?
1. Create a python script with the example given in the xdot site
2. python example.py
3. Locate the mouse pointer in the middle of the little triangle of the
arrow. The arrow turns red.
4. Start zooming in with the mouse scroll/page-up/page-down control
5. Keep zooming in, aiming to the center of the arrow triangle
6. After zooming for some time, the screen turns pink, then red, then
black. Keep zooming in.
7. Execute "top" in your console, and you'll see how xdot is consuming 100%
CPU.
What version of the product are you using? On what operating system?
Latest version of xdot.
Ubuntu, latest version.
Please provide any additional information below.
A possible fix is to limit the amount of zoom that a user can make.
Original issue reported on code.google.com by [email protected]
on 21 Jan 2009 at 7:43
What steps will reproduce the problem?
1. Try to quit using the keyboard, whether the modern Ctrl+Q or Ctrl+W (why
can't they make up their mind) or the "legacy" Q.
2. Observe xdot staying on the screen.
3. Profit!
What is the expected output? What do you see instead?
The lack of output was more what I expected. I see xdot instead.
What version of the product are you using? On what operating system?
__version__ = "0.4". Gentoo.
Please provide any additional information below.
--- xdot.py 2009-12-31 04:09:55.000000000 -0500
+++ xdot-quit.py 2009-12-31 04:10:05.000000000 -0500
@@ -1589,6 +1589,9 @@
if event.keyval == gtk.keysyms.r:
self.reload()
return True
+ if event.keyval == gtk.keysyms.q:
+ gtk.main_quit()
+ return True
return False
def get_drag_action(self, event):
I figure you'll know if that's the correct way to exit. The window manager
quit signal binding implies it might be, and it does work for me.
I'm too lazy to figure out how to do control keys when I prefer plain q
anyway, but you might know more easily.
P.S. xdot makes graphviz so much more usable! I've needed this for years!
Original issue reported on code.google.com by [email protected]
on 31 Dec 2009 at 9:22
I've created a modified version of gprof2dot.py on my local machine that
offers a new command-line option for a 'skew' value. This value bends the
colorization curve allowing exponential curves in addition to the simple
linear interpolation currently offered. This can offer an enhanced view of
the profile of a piece of code by providing a wider variety of color at
either the low or high end of the time scale.
I've attatched a diff file showing the modifications I made. There is a
second change in there that shows package names in addition to module names
for function labels (to help when working in a large project with tons of
modules, many of which have similar names. It's probably not a good piece
of code for general consumption, and my apologies for including it. But
perhaps it could lead to a better implementation of the same idea down the
road somewhere.
Thanks for the great product.
Cris Ewing
[email protected]
Original issue reported on code.google.com by [email protected]
on 19 Nov 2009 at 1:51
Attachments:
It would be a useful enhancement to have the spent CPU-Cycles (or samples
that hit the function) (as shown in oprofile's text-based callgraph) in
each of the callgraph's nodes.
Thank you!
Original issue reported on code.google.com by [email protected]
on 27 Oct 2009 at 8:15
Hi Jose,
Would like to include xdot in a project of mine (also GPL) and felt like
dropping you a mail to get your blessing. However I can not find any
contact address either on the site, in the code or on your blog :S
Please drop me a line at [email protected] so I know where to send patches if
any.
Regards,
Jaap
Original issue reported on code.google.com by [email protected]
on 25 Nov 2008 at 1:23
It seems that dot outputs floats for 'xmin, ymin, xmax, ymax' of some
graphs, which makes xdot.py fail parsing those values and die with
ValueError exception.
I attach graph which causes this behaviour and trivial patch to fix it.
Cheers!
Original issue reported on code.google.com by [email protected]
on 13 Jun 2009 at 9:17
Attachments:
"xdot.py small.dot", where small.dot contains
digraph { Fail[fillcolor="0,0,1",style=filled]; }
fails with a ValueError:
Traceback (most recent call last):
File "/tmp/xdot.py", line 830, in <module>
main()
File "/tmp/xdot.py", line 824, in main
win.set_dotcode(fp.read())
File "/tmp/xdot.py", line 804, in set_dotcode
self.widget.set_dotcode(dotcode)
File "/tmp/xdot.py", line 569, in set_dotcode
self.set_xdotcode(xdotcode)
File "/tmp/xdot.py", line 574, in set_xdotcode
self.graph = parser.parse()
File "/tmp/xdot.py", line 490, in parse
shapes.extend(parser.parse())
File "/tmp/xdot.py", line 414, in parse
pen.fillcolor = s.read_color()
File "/tmp/xdot.py", line 393, in read_color
h, s, v = map(float, c[1:].split(","))
ValueError: empty string for float()
Graphviz's dot accepts that file with no problems.
Original issue reported on code.google.com by [email protected]
on 9 Jun 2008 at 11:03
Hello,
I'm developing a new project - http://code.google.com/p/xdebugtoolkit/ -
and would like to use your xdot module for visualization.
What steps will reproduce the problem?
1. Open the attached .dot file with xdot 0.4.
2. At the very start you see a mess like there are a lot of overlapping
labels of 10..14pt font size instead of very-very small font size used.
Check the attached bug.png image.
3. If I zoom in 3 times or maximize the xdot window, the font size is
normalized. But, as you can see from the bug2.png, labels' positions are
skewed. I'm almost sure that this is because of
What is the expected output? What do you see instead?
An expected output is very-very small font size. And
What version of the product are you using? On what operating system?
It's windows xp sp3, stackless python 2.5.2, graphviz dot 2.20.3, xdot 0.4
(svn r229)
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 2 Nov 2008 at 8:21
Attachments:
The attached patch adds the following features to the crash report files
generated by exchndl.dll
* Adds a line to the crash report file header containing information about the OS
* For any modules in the stacktrace that contain VersionInfo, an additional line is printed out containing that information.
(sorry this is being filed as a defect, I can't see a way to submit it as
anything else)
Original issue reported on code.google.com by [email protected]
on 28 Aug 2010 at 3:24
Attachments:
The new MinGW GCC 4.5.0 uses Dwarf2 debugging symbols as default, and it looks
like Dr. MinGW can not read them.
Is there a plan to support the Dwarf2 debugging symbols in Dr. MinGW?
- Regards
Franz Schnyder
Original issue reported on code.google.com by [email protected]
on 11 Aug 2010 at 8:29
What steps will reproduce the problem?
1. opreport -cf | python gprof2dot.py -f oprofile
What is the expected output? What do you see instead?
I except it to work, instead it says:
Traceback (most recent call last):
File "gprof2dot.py", line 1328, in <module>
Main().main()
File "gprof2dot.py", line 1251, in main
self.profile = parser.parse()
File "gprof2dot.py", line 781, in parse
self.parse_entry()
File "gprof2dot.py", line 834, in parse_entry
function = self.parse_subentry()
File "gprof2dot.py", line 867, in parse_subentry
filename, lineno = source.split(':')
ValueError: need more than 1 value to unpack
What version of the product are you using? On what operating system?
Latest, as of today. Fedora 8.
Please provide any additional information below.
I can not use "opreport -cgf" because the -g segfaults
opreport. "opreport -cf" does not seem to output data in the format that
gprof2dot.py would like.
Original issue reported on code.google.com by [email protected]
on 1 Apr 2008 at 3:19
If dot produces a graph without failing (if p.returncode == 0), then the
warnings such as:
...
Error: lost node_1 node_2 edge
Error: lost node_5 node_3 edge
...
are lost.
Printing the error to stderr (if not a dialog) will be helpful:
xdotcode, error = p.communicate(dotcode)
if error:
print >> sys.stderr, 'Message returned by ' + self.filter + ':\n' + error
~
musically_ut
PS: For the curious, the dropping edge behavior seems unique to:
dot: http://www.graphviz.org/bugs/b711.html
Original issue reported on code.google.com by musically.ut
on 24 Nov 2010 at 1:59
What steps will reproduce the problem?
1. Add a print statement to the motion-notify-event handler
2. Move the mouse around the canvas
What is the expected output? What do you see instead?
I expect to see the statement printed every time the mouse moves, but
instead, it only prints once after each mouse press or release, and once
after moving the cursor over the canvas when it was over something else
(say the toolbar.)
What version of the product are you using? On what operating system?
xdot: Latest SVN version (0.4)
OS: Red Hat Enterprise Linux 5
Trial 1: all RHEL5 packages: Python 2.5, pygtk 2.10, pycairo 1.2.0,
pygobject 2.12
Trial 2: custom compiled: Python 2.6, pygtk 2.10, pycairo 1.2.2, pygobject 2.16
Please provide any additional information below.
The effect of this is that dragging does not work. When I drag, the canvas
moves once, after about a 1/4 second delay. Then, I have to release the
mouse and drag again to move it again slightly. This is very annoying.
However, this only happens to my RHEL5 machine at work. When I try this on
my Ubuntu machine at home, everything is fine.
I also tried the pygtk-demo, hypertext. If I insert a print statement on
the motion-notify-event handler there, it prints every time I move the
mouse, as expected. I have no idea how to fix this.
Original issue reported on code.google.com by lodatom
on 18 Sep 2009 at 10:43
I would like to have a feature showing part of a very complex call graph system.
For example, the complete call graph is
{
a->b
b->c
b->d
d->g
c->e
c->f
}
I would like to have a feature showing all the related part to node c, that is
{
a->b
b->c
c->e
c->f
}
but discard
{
b->d
d->g
}
For a program with thousands of function, this feature will make life much
easier. Thanks.
Original issue reported on code.google.com by [email protected]
on 19 Jun 2010 at 2:47
What steps will reproduce the problem?
1. hg clone https://jrfonseca.googlecode.com/hg/ jrfonseca
What is the expected output? What do you see instead?
Expected to see a source tree.
Please provide any additional information below.
It looks like there's no source being version controlled. Following the
steps from the Source tab don't work, and trying to browse shows an empty
repo.
Original issue reported on code.google.com by [email protected]
on 1 Mar 2010 at 10:44
First of all, I want to thank you for creating such a cool library =) I
have been using it for my open source project w3af [0] and other than the
bug that I'm reporting now, I'm very pleased with it.
The problem description is easy: the xdot format parsing takes A LOT of
time! The steps I'm using to reproduce this issue are:
0) get the latest version of w3af from the svn; install dependencies.
1) ./w3af_gui
2) Click on "Fuzzy Request"
3) Change $xrange(10)$ with $xrange(50)$ ; and select some random host as
the target (http://xxxx/)
4) When all the requests were sent, click on "Cluster Responses".
5) The window will appear after some seconds
If you look in the console, you'll see something like this:
Sun Oct 12 14:30:01 2008
Sun Oct 12 14:30:09 2008
Which is the result of this small modification to the dot_parser.py file:
def parse_dot_data(data):
import time
print time.ctime()
try:
data = data.replace('\\\n', '')
graphparser = graph_definition()
if pyparsing_version >= '1.2':
graphparser.parseWithTabs()
tokens = graphparser.parseString(data)
graph = tokens.graph
print time.ctime()
return graph
As you can see, it takes 8 seconds to parse a 50 node graph! This is not
good :(
If you want to reproduce this bug without installing w3af, please see the
attached file, which contains the value of the "data" parameter that is
sent to "def parse_dot_data(data):".
Let me know if I can help fix this bug!
[0] http://w3af.sf.net/
Original issue reported on code.google.com by [email protected]
on 12 Oct 2008 at 5:41
Attachments:
What steps will reproduce the problem?
gprof ./limitd | gprof2dot.py | dot -Tpng -o output2.png
Traceback (most recent call last):
File "/home/harri/bin/gprof2dot.py", line 2192, in <module>
Main().main()
File "/home/harri/bin/gprof2dot.py", line 2117, in main
self.profile = parser.parse()
File "/home/harri/bin/gprof2dot.py", line 1005, in parse
cycles[entry.cycle].add_function(function)
KeyError: 1
What version of the product are you using? On what operating system?
gprof2dot 1.0 (from svn 2009-11-24)
GNU gprof (GNU Binutils for Ubuntu) 2.19.1
Ubuntu 9.04 64 bit.
Using g++-4.2
Please provide any additional information below.
Note that it did not fail for the first try, but running my app longer it
barfed.
Original issue reported on code.google.com by [email protected]
on 24 Nov 2009 at 4:40
Now you can use gprof2dot with hotshot profile format file
Original issue reported on code.google.com by [email protected]
on 3 Aug 2009 at 6:10
Attachments:
Currently the method finds the first edge that fits into some radius around
the mouse pointer and often selects an edge that is farther than others -
just because it was found first.
Another more useful approach would be to find the closest edge. I can
provide some demo code for this if you like.
Original issue reported on code.google.com by [email protected]
on 17 Jun 2009 at 6:51
Graphviz uses brewer color scheme in addition to X11 color scheme. When
looking up color names, Xdot only checks X11 color scheme and hence cannot
render dot files within brewer color names. The attached patch adds brewer
color scheme support in xdot.
Original issue reported on code.google.com by [email protected]
on 26 Aug 2009 at 12:57
Attachments:
Sometimes you already got a graph laid out in a particular way, and would like
to see how that graph looks without filtering it through a different layout
engine.
This patch adds a --no-filter option (short: -n) that lets me do, e.g.
ccomps -x < x.dot|dot|gvpack -g|neato -n2 -Txdot|xdot -n -
Original issue reported on code.google.com by [email protected]
on 19 Dec 2010 at 5:46
Attachments:
Currently, exchndl will read only stabs debugging symbols directly from the
relevant modules.
This patch adds the additional ability to read debug symbols from files that
exist alongside the modules. This makes it possible to generate useful crash
reports from stripped binaries by reading the symbols from a unstripped copy of
the binary.
If the module has version information embedded, a comparison is done to make
sure that the corresponding "debug symbols" module has the same version
information specified.
By default, it only looks for a "module.ext.dbgsym" file in the same directory
as the module.
An alternate directory structure for looking up debug symbols can be specified
by calling "SetDebugInfoDir" on the loaded exchndl.dll instance. The
DebugInfoDir is intended to be a parallel directory structure to the stripped
application structure containing the corresponding ".dbgsym" files.
For Example:
...\Application\app.exe
...\Application\applib.dll
...\Application\plugins\plugin.dll
The DebugInfoDir looks like this:
...\Application\dbgsym-1.0.1.1\app.exe.dbgsym
...\Application\dbgsym-1.0.1.1\applib.dll.dbgsym
...\Application\dbgsym-1.0.1.1\plugins\plugin.dll.dbgsym
The following code sets up the DebugInfoDir:
if ((hmod = LoadLibraryW(L"exchndl.dll"))) {
FARPROC proc;
char debug_dir[MAX_PATH];
proc = GetProcAddress(hmod, "SetDebugInfoDir");
if (proc) {
_snprintf(debug_dir, sizeof(debug_dir) / sizeof(char),
"%s\\dbgsym-%s", app_install_dir, VERSION);
debug_dir[sizeof(debug_dir) / sizeof(char) - 1] = '\0';
printf(" Setting exchndl.dll DebugInfoDir to %s\n",
debug_dir);
(proc)(debug_dir);
}
}
In my use case, I distribute stripped modules and then have a separate zip file
that can be later extracted to the DebugInfoDir location if needed to help get
a useful crash report.
This patch contains (and is a superset of) the patch in id 39.
Original issue reported on code.google.com by [email protected]
on 28 Aug 2010 at 3:59
Attachments:
I've been using gprof2dot recently for profiling java applications. I added an
input converter for the hprof output format; hopefully it can be useful to
others.
Original issue reported on code.google.com by [email protected]
on 31 Aug 2010 at 4:17
Attachments:
I've added gprof-style callgraph output to xsltproc (xslt processor). The
report looks good and for smaller reports, gprof2dot works fine. For longer
(real life callgraphs) it abouts with the above assertion.
Now this can be also a deficiency in my callgraphs. Do you have any idea?
Traceback (most recent call last):
File "/home/ensonic/bin/gprof2dot.py", line 2515, in <module>
Main().main()
File "/home/ensonic/bin/gprof2dot.py", line 2440, in main
self.profile = parser.parse()
File "/home/ensonic/bin/gprof2dot.py", line 1029, in parse
profile.integrate(TOTAL_TIME, TIME)
File "/home/ensonic/bin/gprof2dot.py", line 354, in integrate
self._integrate_function(function, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 365, in _integrate_function
total += self._integrate_call(call, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 373, in _integrate_call
subtotal = call.ratio *self._integrate_function(callee, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 365, in _integrate_function
total += self._integrate_call(call, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 373, in _integrate_call
subtotal = call.ratio *self._integrate_function(callee, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 365, in _integrate_function
total += self._integrate_call(call, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 373, in _integrate_call
subtotal = call.ratio *self._integrate_function(callee, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 365, in _integrate_function
total += self._integrate_call(call, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 373, in _integrate_call
subtotal = call.ratio *self._integrate_function(callee, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 365, in _integrate_function
total += self._integrate_call(call, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 373, in _integrate_call
subtotal = call.ratio *self._integrate_function(callee, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 365, in _integrate_function
total += self._integrate_call(call, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 373, in _integrate_call
subtotal = call.ratio *self._integrate_function(callee, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 365, in _integrate_function
total += self._integrate_call(call, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 373, in _integrate_call
subtotal = call.ratio *self._integrate_function(callee, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 365, in _integrate_function
total += self._integrate_call(call, outevent, inevent)
File "/home/ensonic/bin/gprof2dot.py", line 370, in _integrate_call
assert outevent not in call
AssertionError
Original issue reported on code.google.com by [email protected]
on 8 Mar 2010 at 12:00
It would be nice to have scroll bars in addition to the grab and drag
navigation feature.
Original issue reported on code.google.com by [email protected]
on 19 Oct 2010 at 6:44
xdot does not render dotted lines, only dashed or solid. The attached patch
adds support for the "dotted" attribute.
Original issue reported on code.google.com by [email protected]
on 8 Feb 2011 at 10:40
Attachments:
If a node in the dot file does not have width/height, xdot failed. This
patch solves the issue.
Original issue reported on code.google.com by [email protected]
on 31 May 2010 at 4:52
Attachments:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.