Perl has integrated debugging. Perl has pluggable runops so profilers can be attached to the platform (e.g. Devel::NYTProf). Distribution == CPAN and the 'make dist' system from ExtUtils::MakeMaker, again built in.
The introspection is -different-, perhaps, but I'm not sure I'd say it's better or worse.
Nothing meaningful? You set it to break into the debugger when that exception is thrown, and then debug it. I'm honestly not sure how this is any different an experience to in java - any java application not actively being debugged will write a stack trace to its log file and either exit or move on to the next request too, no?
Also type erasure.
Funnily enough, they're both examples of the same problem, stitching new features onto a language that was not at all prepared for them.
EDIT: I just used "strace /usr/bin/java -jar myjar.jar" and saw what looks IO but I'm not familiar with strace output yet. It looks like a handy utility though. Can you give an example of something that you expected to see but didn't when you tried it?
Interesting. It never occurred to me to want this. What sort of use case is this for? It seems Perl is capable of something similar:
use Enbugger::OnError 'USR1';
Then 'kill -USR1 pid' and your process will jump into the debugger.learn more here: https://metacpan.org/module/JJORE/Enbugger-2.013/lib/Enbugge...
Shockingly, attaching to running processes has been a feature of UNIX for decades.
Knowing Perl, it probably is possible, and I just never learned about it.
Add the line where you want the execution to stop:
$DB::single = 1;
Then, run your program as: $ PERLDB_OPTS=NonStop perl -d program.pl
See: http://perldoc.perl.org/perldebug.htmlThe java 'runtime' is hardly Java. Its like saying Pentium is C.
Java the language is hardly comparable with a scripting language like Perl.
This is a fact: <opinion here>.
Java calling anyone else's stack traces is backwards and hilarious, and only going to get better in about 15 years when java finally gets lambdas.
When I was at Google, the opinion among some of the SREs I knew was that Java there was better than elsewhere so you actually did get reasonable debugging stack traces, but the C++ libraries there were still significantly easier to debug problems in than the Java ones.
Yes, I know that those AbstractFactoryFactories let you produce convenient higher order abstractions, but when things go pear shaped, they can make it really hard to figure out what was supposed to be happening, let alone where it went wrong.
http://stackoverflow.com/questions/4185665/guava-equivalent-...
With all due respect to the Java runtime (if not its memory use :-( ), it is part of a totally different ecosystem compared to the usual suspects of the scripting languages.
(And I'd argue that it is always easier to debug a scripting language than C/C++/Java, except maybe just for long running server processes.)