CC: | chromatic <chromatic [...] wgz.org> |
Subject: | Rewrite of Devel-TraceUse |
Date: | Wed, 24 Feb 2010 10:55:53 +0100 |
To: | bug-devel-traceuse [...] rt.cpan.org |
From: | "Philippe Bruhat (BooK)" <philippe.bruhat [...] free.fr> |
Hi,
I have finished the rewrite of Devel::TraceUse. I've just
sent you a pull request on github. The repository is at
http://github.com/book/Devel-TraceUse
Just to show the differences, I've included the output on a simple example.
Current Devel::TraceUse:
$ perl -d:TraceUse -MLWP::UserAgent -e1
Modules used from -e:
LWP::UserAgent, line 0 (0.000192)
HTTP::Request, line 10 (0.000165)
HTTP::Message, line 3 (0.000152)
HTTP::Headers, line 7 (0.000172)
Carp, line 4 (0.000174)
Storable, line 260 (0.000165)
FileHandle, line 23 (0.000159)
IO::File, line 9 (0.000173)
Symbol, line 131 (0.00017)
SelectSaver, line 132 (0.000171)
IO::Seekable, line 133 (0.000156)
IO::Handle, line 101 (0.000163)
IO, line 263 (0.000292)
XSLoader, line 5 (0.000154)
Fcntl, line 104 (0.000176)
File::Spec, line 134 (0.000162)
File::Spec::Unix, line 22 (0.000151)
Log::Agent, line 2 (8e-05)
URI, line 3 (0.000179)
URI::Escape, line 22 (0.000166)
overload, line 29 (0.000177)
HTTP::Response, line 11 (0.000167)
HTTP::Status, line 8 (0.00015)
HTTP::Date, line 12 (0.000199)
Time::Local, line 12 (0.00017)
integer, line 7 (0.000167)
constant, line 28 (0.000177)
LWP, line 14 (0.000167)
LWP::Protocol, line 15 (0.000162)
LWP::MemberMixin, line 3 (0.000157)
New Devel::TraceUse:
$ perl -d:TraceUse -MLWP::UserAgent -e1
Modules used from -e:
1. LWP::UserAgent, -e line 0 [main]
2. strict, LWP/UserAgent.pm line 3
3. vars, LWP/UserAgent.pm line 4
4. warnings::register, vars.pm line 7
5. warnings, warnings/register.pm line 24
6. HTTP::Request, LWP/UserAgent.pm line 10
7. HTTP::Message, HTTP/Request.pm line 3
8. HTTP::Headers, HTTP/Message.pm line 7
9. Carp, HTTP/Headers.pm line 4
10. Exporter, Carp.pm line 14
24. Exporter::Heavy, Exporter.pm line 18
11. Storable, HTTP/Headers.pm line 260
12. AutoLoader, Storable.pm line 22
13. FileHandle, Storable.pm line 23
14. IO::File, FileHandle.pm line 9
15. Symbol, IO/File.pm line 131
16. SelectSaver, IO/File.pm line 132
17. IO::Seekable, IO/File.pm line 133
18. IO::Handle, IO/Seekable.pm line 101
19. IO, IO/Handle.pm line 263
20. XSLoader, IO.pm line 5
21. Fcntl, IO/Seekable.pm line 104
22. File::Spec, IO/File.pm line 134
23. File::Spec::Unix, File/Spec.pm line 22
25. DynaLoader, Storable.pm line 8 [HTTP::Headers]
26. Config, DynaLoader.pm line 25
27. Log::Agent, Storable.pm line 35 (eval 4) (FAILED)
28. URI, HTTP/Message.pm line 12 (eval 5)
29. URI::Escape, URI.pm line 22
30. overload, URI.pm line 29
31. HTTP::Response, LWP/UserAgent.pm line 11
32. HTTP::Status, HTTP/Response.pm line 8
33. HTTP::Date, LWP/UserAgent.pm line 12
34. Time::Local, HTTP/Date.pm line 12
35. integer, Time/Local.pm line 7
36. constant, Time/Local.pm line 28
37. LWP, LWP/UserAgent.pm line 14
38. LWP::Protocol, LWP/UserAgent.pm line 15
39. LWP::MemberMixin, LWP/Protocol.pm line 3
Some notes on the new Devel::TraceUse:
- it doesn't load any module, to avoid intering with the traced program
- it shows module loading order, which makes it easier to spot
modules loaded at runtime
- it shows if the module was loaded from within an eval ""
- it uses information from the debugger to correctly attach
modules loaded with eval ""
- it indicates if a module couldn't be loaded
- it show the loading package if different from the loading file
Hope you like it,
--
Philippe Bruhat (BooK)
Putting beauty before brains is the surest way to wind up with neither.
(Moral from Groo The Wanderer #24 (Epic))