camelcade / devel-camelcadedb Goto Github PK
View Code? Open in Web Editor NEWPerl module for debugging with Perl5 plugin for IntelliJ
License: Other
Perl module for debugging with Perl5 plugin for IntelliJ
License: Other
At the moment, we are loading breakpoints before file been compiled and load_handler invoked after START phase, so those breakpoints missed.
Howewer, breakpoints in other files (not main, works fine)
Because of references mess, we show @_
and lexicals/globals differently.
Reproduction example (put a breakpoint at say 1;
use strict;
use warnings FATAL => 'all';
use v5.10;
my $scalar = 'test';
say $scalar;
my $scalar_ref = \$scalar;
say $scalar_ref;
my $scalar_ref_ref = \$scalar_ref;
say $scalar_ref_ref;
my @array = ('tests');
say @array;
my $array_ref = \@array;
say $array_ref;
my $array_ref_ref = \$array_ref;
say $array_ref_ref;
my %hash = (key => 'val');
say %hash;
my $hash_ref = \%hash;
say $hash_ref;
my $hash_ref_ref = \$hash_ref;
say $hash_ref_ref;
my $glob = *STDOUT;
say STDOUT $glob;
my $glob_ref = \$glob;
say $glob_ref;
my $glob_ref_ref = \$glob_ref;
say $glob_ref_ref;
my $code = sub{}; # actually a ref
say $code;
my $code_ref = \$code;
say $code_ref;
my $code_ref_ref = \$code_ref;
say $code_ref_ref;
sub something {
say 1;
}
something(
$scalar, $scalar_ref, $scalar_ref_ref,
@array, $array_ref, $array_ref_ref,
%hash, $hash_ref, $hash_ref_ref,
$glob, $glob_ref, $glob_ref_ref,
$code, $code_ref, $code_ref_ref
);
Expected: same results for lexical vars and something
arguments.
Actually: lexical and globals has another level of reference. Because peek_my
and peek_our
returns names and references, not values (not possible to return value of array or hash.
I have installed the Devel::Camelcadedb and it's version is 2017.1 but the debugger show me an error
1:40 Incorrect Devel::Camelcadedb version: Current plugin version requires Devel::Camelcadedb version 1.6.1.x, but we've got 2017.1. Please install appropriate version from CPAN.
Can you fix this problem?
We should not probably squash a multiple references. Only one level: Ref to non-ref
Otherwise we should provide expandable node.
This will allow us to to avoid necessity to control cyclic references in debugger and may improve UX
When trying to debug this remote file:
Manager.pm.txt
the debugger return this file:
Manager.out.txt
In the output file a lot of line are missing and for this reason breakpoints and steps are not mapped corrected by the IDEA.
On the server side the debugger is showing me this error:
Use of uninitialized value within @lines in join or string at /usr/local/share/perl5/Devel/Camelcadedb.pm line 351.
For now i have found a workaround. I have add this line before the line 351 of the file Camelcadedb.pm
sub _get_file_source_by_file_id
{
my ($file_id) = @_;
$_source_been_sent{$file_id} = 1;
{
no strict 'refs';
_report "Getting source of main::_<$file_id" if $_dev_mode;
my @lines = @{"main::_<$file_id"};
@lines = map { !$_ ? "\n" : $_ } @lines;
shift @lines;
return _to_utf8( join '', @lines );
}
}
@lines = map { !$_ ? "\n" : $_ } @lines;
but this only return a file with the correct line number but in the output file there are still some that are displayed as empty line but their aren't.
For some internal perl reasons, even when we set mode to start at first breakpint, we stop in other places, like use something
.
E.g. when running tests, we start in INIT
block of Builder.pm
It is not critical, but pretty annoying.
To fix this we need to make tests first.
#IU-143.2370
, available in Help: About
menu)File: Settings: Plugins
menu)Devel::Camelcadedb
module version (see cpan -D Devel::Camelcadedb
)Oracle 1.8.0_91-b14
, see java --version
)Strawberry Perl (v5.22.0) built for MSWin32-x64-multi-thread
, see perl -v
)https://imgur.com/gallery/ryjcCJ6
Windows 7 Enterprise
When trying to debug a simple script like this one:
#!/usr/bin/perl
use strict;
use warnings;
print "hi NAME\r\n";
print "hi NAME\r\n";
I am getting this error:
Listening on localhost:51187...
C:\Dwimperl\perl\bin\perl.exe -d:Camelcadedb C:\mpath\test.pl
Can't locate Devel/Camelcadedb.pm in @inc (@inc contains: C:/Dwimperl/perl/site/lib C:/Dwimperl/perl/vendor/lib C:/Dwimperl/perl/lib .).
BEGIN failed--compilation aborted.Process finished with exit code 2
Disconnected
Can you tell me what's wrong with Camelcadedb.pm?
Technically, we may catch files compilation, but not sure if we need it.
Initial idea was to support refcount and use weak references for internal caches.
But for now it's just normal one. May hit at some point.
We need to understand the lifetime of the cache and weaken refs if necessary.
Currently we are using bruteforce breakpoints setting, that are super-reliable but providing too large overhead.
Basically, we need to make event-driven flag for attempting to set a breakpoint.
When debugging remotely on debian jessie (currently perl v5.20.2), with the -T (taint mode) flag enabled, the program will exit with the following error:
AH01215: Insecure dependency in connect while running with -T switch at
/usr/lib/x86_64-linux-gnu/perl/5.20/IO/Socket.pm line 114.
This is because perl considers the PERL5_DEBUG_HOST and PERL5_DEBUG_PORT environment variables to be tainted. It would be good to have the option of untainting just these variables, so that code could still still be debugged with taint mode on.
The code in the Devel::Camelcadedb module that causes the error is where the IO::Socket::INET->new function is called when PERL5_DEBUG_ROLE is set to "client" (around line 1717 in version 1.6.1.6 of the module). I have tested copying the values from the PERL5_DEBUG_HOST and PERL5_DEBUG_PORT to new variables (using a regex to untaint them), and passing those variables to the IO::Socket::INET->new call, rather than the environment variables. Doing so fixes the problem.
Taint mode is still a useful tool for making potential security problems more obvious, so I think it would be good to make it possible for Camelcade to work when remote debugging with taint mode on.
from @mradile:
I am using DBD::SQLite in my code with "PRAGMA foreign_keys =1".
When using the Debugger (remote debugging a script) the following statements fail:
$dbh->do("PRAGMA foreign_keys = 1");
my $res = $dbh->selectall_arrayref("PRAGMA foreign_keys");
unless ($res && $res->[0] && !empty($res->[0]->[0])) {
die "Failed!";
}
Getting the following messages when trying to debug a perl script with IntelliJ:
Listening on localhost:55083...
/usr/bin/perl -d:Camelcadedb /Users/bwinslow/git/bitbucket/agent-zero-service/appserverScripts/test_array.pl
(1)Connecting to the IDE from process 46666 at localhost:55083...
Connected
Disconnected
Connection closed at /Library/Perl/5.18/Devel/Camelcadedb.pm line 1296.
Compilation failed in require.
BEGIN failed--compilation aborted.
Process finished with exit code 255
IDE name and version: Intellij IDEA 2018.1
Perl plugin: 2018.1.2
Devel::Camelcadedb: v2019.1
Java: Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
Perl: This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level
OS: macOS High Sierra version 10.13.6
We need to use localized frame index, like in DB or perl5db
AutoLoader and AutoSplitter makes a magic which is not handled atm
Got this error sometimes:
panic: attempt to copy freed scalar 7f1becbcb880 to 7f1bd2ad0078 at /home/elwood/perl5/lib/perl5/Devel/Camelcadedb.pm line 1607.
IDE version:
IntelliJ IDEA 2017.2.3
Build #IU-172.3968.16, built on August 22, 2017
JRE: 1.8.0_131-b11 amd64
JVM: Java HotSpot(TM) 64-Bit Server VM by Oracle Corporation
Linux 4.10.0-33-generic
Devel::Camelcadedb version:
CPAN: Storable loaded ok (v2.41)
Reading '/home/elwood/.cpan/Metadata'
Database was generated on Wed, 13 Sep 2017 07:17:02 GMT
Devel::Camelcadedb
-------------------------------------------------------------------------
CPAN: Module::CoreList loaded ok (v3.03)
(no description)
H/HU/HURRICUP/Devel-Camelcadedb-2017.100.2.tar.gz
/home/elwood/perl5/lib/perl5/Devel/Camelcadedb.pm
Installed: 2017.100.2
CPAN: 2017.100002 up to date
Alexandr Evstigneev (HURRICUP)
[email protected]
perl version
This is perl 5, version 18, subversion 2 (v5.18.2) built for x86_64-linux-gnu-thread-multi
(with 44 registered patches, see perl -V for more detail)
OS where perl is executed:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
OS where IDEA is executed:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
In my .perldb file for the command line debugger, I have the following line:
# don't step into Moose itself
use DB::Skip pkgs => [ qr/^(?:Moose|Eval::Closure|Class::MOP)/ ];
With this debugger, I have to paste that code into the evaluate expression dialog box every time I run the debugger. It would be nice to have a place to put code that runs as the debugger starts up every time.
When running our web server in the Camelcade debugger, it is unable to properly manage sessions. Session management in this configuration uses CHI and Cache::FastMmap.
I have reduced it to the following two scripts:
put-in-cache.pl
use 5.14.0;
use strictures 1;
use CHI;
my $cache = CHI->new(
driver => 'FastMmap',
cache_size => '10m',
unlink_on_exit => 0,
root_dir => "/tmp/test-cache-$>",
);
$cache->set('abc', 'def', 1209600);
get-from-cache.pl
use 5.14.0;
use strictures 1;
use CHI;
my $cache = CHI->new(
driver => 'FastMmap',
cache_size => '10m',
unlink_on_exit => 0,
root_dir => "/tmp/test-cache-$>",
);
my $value = $cache->get('abc');
die 'Failed to read value from cache' unless $value;
say "value: $value";
If you run put-in-cache.pl
once, it will create a persistent cache with the value in it. Then running get-from-cache.pl
should be able to pull it back out and print it. This works fine when run outside of the debugger and when run within the standard perl -d
debugger.
When run from within the Camelcade debugger, however, the value fails to be retrieved. Furthermore, in trying to debug the reason, it turns out to be a Heisenbug that I can't track down. Placing breakpoints within Cache/FastMmap.pm or adding print statements there can make the problem disappear.
I can't see anything in particular within the Camelcade debugger that should cause this. I wonder if it has anything to do with the XS nature of Cache::FastMmap.
Local Environment: Mac OSX El Capitan running Perl5 plugin 2.101 in Android Studio
Remote Environment: Ubuntu 12.04.5 running Perl 5.14.2 with CHI version 0.60, Cache::FastMmap version 1.44, Devel::Camelcadedb version 1.6.1.5.
Atm we are using perl stringified references. But seems GC may rearriage memory and references not working anymore.
can_read warns about global desctruction or undefined socket
Seems they being deleted on first attempt to set up.
This becomes real headache when debugging tests
Technically, we may catch subs invocations and gotos, but not sure if we need it.
Debugger won't start with error in subject
IDEA 2017.1.4
Perl plugin 2017.1.2
Camelcade 2017.1
JRE 1.8.0.
Perl 5.10.1.
OS: CentOS
Devel::Camelcade version 2017.100.3
I can reproduce this issue when using ModPerl::Registry. I do not have a simple test case yet, but hopefully the description below is enough for you to understand the issue.
Some context: ModPerl::Registry compiles and caches CGI scripts under mod_perl for faster execution. For example this script:
#!/usr/bin/env perl
print "Content-Type: text/plain\n";
print "\n";
print "Hello, world!\n";
is converted to
package ModPerl::ROOT::ModPerl::RegistryBB::home_mattia_devel_dbgp_apache2_2dcamelcadedb_t_htdocs_registrybb_cgi_2epl;sub handler {local $0 = '/home/mattia/devel/dbgp/apache2-camelcadedb/t/htdocs/registrybb/cgi.pl';
#line 1 /home/mattia/devel/dbgp/apache2-camelcadedb/t/htdocs/registrybb/cgi.pl
#!/usr/bin/env perl
print "Content-Type: text/plain\n";
print "\n";
print "Hello, world!\n";
}
and loaded via eval STRING.
From my debugging, the issue is that Perl does not call DB::postponed for code loaded via eval STRING, so there is no mapping for the file in %_paths_to_perl_file_id_map, and the breakpoint is silently ignored.
We could use select to check if there is something in socket. Allow us to be interactive while running
Technically, we may catch DIE, but not sure if we need it and, the most important, not sure if this will not mess with some tricky code.
When the following code is run in the debugger , line by line, it gets stuck in infinite loop. The code runs fine without debugger.
my %hash = ('Hello' => 'World');
while ( my ( $key, $value ) = each %hash ) {
print "\n$key=$value";
}
The code above can be used to reproduce the issue.
Perl version: 5.18.2 built for MSWin32-x86-multi-thread-64int
Deval::Camelcadedb version: 1.6.1.2
InteliJ IDEA version 2016.1.3
Perl Plugin version 2.005
I am using Camelcadedb V2019.1 under Intellij 2019.1.1 Strawberry version 5.18.4 windows 10 pro version 1809 OS Build 17763.437
but even the 7 line script below doesn’t stop at a breakpoint set on line 7.
#!/usr/bin/perl
use strict;
use warnings FATAL => 'all';
print "First Line\n";
print "Second Line\n";
print "After Break\n";
Another script that has subroutines included in the same file and included modules does not stop either in the main part or the subroutine in the same file but will stop at a break set in the included Perl module
I have used the debugger successfully under previous software versions, any assistance will be greatly appreciated.
Erik
B.T.W. this is my first post so please feel free to point out any breaches of established protocol.
This is triggering a complaint from a
$, = ""; # output field separator is null string
$/ = "\n"; # input record separator is newline
$\ = ""; # output record separator is null string
$^W = 0; # warnings are off
should be
$, = undef; # output field separator is null string
$/ = "\n"; # input record separator is newline
$\ = undef; # output record separator is null string
$^W = 0; # warnings are off
Assigning to lvalue subroutines always fails with "Can't modify non-lvalue subroutine call at ..." errors when run under the debugger. The same code executes just fine stand-alone.
eg.
use strict;
use warnings;
my $var = "Before";
sub foo : lvalue {
$var;
}
foo = "After";
print foo, "\n";
Gives...
(1)Connecting to the IDE from process 1698 at localhost:38513...
Connected.
Disconnected
Can't modify non-lvalue subroutine call at /data/misc/sample-share/working/src/xx.pl line 7, line 1.
Where just running on the command line gives
$ perl xx.pl
After
--
IDE version: IC-171.3780.107
Plugin version: 2017.1.1
Perl version v5.22.1
Devel::Camelcadedb version 1.6.1.6
We could check this with Scalar::Util::isweak
When I try to debug following simple perl script:
use strict;
use warnings;
use Data::Dumper;
my $a = undef;
if ($a == undef) {
print 'good';
}
my $b = '23';
print $b;
Pycharm shows error message:
Listening on localhost:11862...
C:\Perl\bin\perl.exe -d:Camelcadedb D:\a.pl
(1)Connecting to the IDE from process 17116 at localhost:11862...
Connected
Disconnected
Data/Dumper.pm did not return a true value at D:\a.pl line 3, line 1.
BEGIN failed--compilation aborted at D:\a.pl line 3, line 1.Process finished with exit code 255
If I remove line "use Data::Dumper;" from script. Debugger works.
My environment:
pycharm 2018.2.3(Build #PY-182.4323.49)
Perl5 plugin version: 2018.2.1
Devel::Camelcadedb version: 2017.100.3
JRE version: 1.8.0_152-release-1248-b8 amd64
Perl version: v5.10.1
OS: Win10 Version 1803
For example:
require Foo;
chdir('somedir');
require Foo;
Basically, both Foo's should have same ::_< namespace
When debugging, sometime the debugger gets stuck in a deep recursion, and I get this message: Deep recursion on subroutine "DB::_get_reference_descriptor" at /home/floreal/.plenv/versions/5.18.2/lib/perl5/site_perl/5.18.2/Devel/Camelcadedb.pm line 650.
CPU load increase dramatically until I kill the running process.
It didn't happen in previous versions of Devel::Camelcadedeb and Idea.
System information:
Devel::Camelcadedb
module version: v2018.3.0by @sseide:
I have come acros a bug where the debugger or perl server hangs and must be killed eventually.
It is an mojolicious project, where i stash an Moose Object in the controller for later rendering.
Within the EP template a method of this object is called. This seems to trigger some bug in the mojolicious server or debugger part - the HTTP call never returns to the browser.
Starting the project via "run" from intellij everything works fine. Starting in Debug mode everything works too and i can debug as long as i do not hit an EP template where an method of an object stashed is called.
Attached is an simple mojolicious project where i am able to reprocduce the problem everytime.
Setting an breakpoint in Site::Homepage method simple_template() works as expected,
Calling method template_calling_method() via route /fails hits the bug.
Another remark - in my real Project i see an endless stream of the following messages in the console when hitting such a template - but have not seen them in this test project. Maybe it is another problem...
Mojo::Reactor::EV: I/O watcher failed: Can't locate object method "" via package "Mojo::Reactor::EV" at /home/user/workspaces/workspace/website/script/../perl5/lib/perl5/Mojo/Reactor/Poll.pm line 143.
Linux x64 Debian Jessie
Intellij 2016.1.2
Perl Camelcade Plugin 2.001
Devel-Camelcadedb-1.6.1.1
Perl (v5.20.2, linux - Debian default)
Mojolicious (6.61, Clinking Beer Mugs)
EV 4.0+ (4.22)
IO::Socket::Socks 0.64+ (0.68)
IO::Socket::SSL 1.94+ (2.002)
Net::DNS::Native 0.15+ (n/a)
Moose-2.1802
Console output where debugger hangs (first call to url /ok is fine, second call to url /fails hangs.
Listening on localhost:42690...
/usr/bin/perl -d:Camelcadedb /home/user/workspaces/workspace/debug-test/testserver.pl daemon
Connected
(1)Connecting to the IDE from process 23891 at localhost:42690...
Connected.
Use of uninitialized value $real_path in substitution (s///) at /home/user/workspaces/workspace/perl5/lib/perl5/Devel/Camelcadedb.pm line 1278, line 2125.
Use of uninitialized value $real_path in hash element at /home/user/workspaces/workspace/perl5/lib/perl5/Devel/Camelcadedb.pm line 1011, line 2125.
Use of uninitialized value $real_path in hash element at /home/user/workspaces/workspace/perl5/lib/perl5/Devel/Camelcadedb.pm line 1028, line 2125.
Use of uninitialized value $real_path in hash element at /home/user/workspaces/workspace/perl5/lib/perl5/Devel/Camelcadedb.pm line 1035, line 2125.
[Sat May 28 20:22:48 2016] [info] Listening at "http://*:3000"
[Sat May 28 20:22:55 2016] [debug] GET "/ok"
[Sat May 28 20:22:56 2016] [debug] Routing to controller "Site::Homepage" and action "simple_template"
Use of uninitialized value $real_path in pattern match (m//) at /home/user/workspaces/workspace/perl5/lib/perl5/Devel/Camelcadedb.pm line 197, line 2125.
[Sat May 28 20:22:58 2016] [debug] Rendering template "homepage/simple_template.html.ep"
[Sat May 28 20:22:58 2016] [debug] 200 OK (2.664365s, 0.375/s)
[Sat May 28 20:23:07 2016] [debug] GET "/fails"
[Sat May 28 20:23:07 2016] [debug] Routing to controller "Site::Homepage" and action "template_calling_method"
[Sat May 28 20:23:07 2016] [debug] Rendering template "homepage/template_calling_method.html.ep"
Use of uninitialized value $real_path in substitution (s///) at /home/user/workspaces/workspace/perl5/lib/perl5/Devel/Camelcadedb.pm line 1278, line 3.
Use of uninitialized value $real_path in hash element at /home/user/workspaces/workspace/perl5/lib/perl5/Devel/Camelcadedb.pm line 1011, line 3.
Use of uninitialized value $real_path in pattern match (m//) at /home/user/workspaces/workspace/perl5/lib/perl5/Devel/Camelcadedb.pm line 197, line 3.
Use of uninitialized value $real_path in substitution (s///) at /home/user/workspaces/workspace/perl5/lib/perl5/Devel/Camelcadedb.pm line 1278, line 3.
Use of uninitialized value $real_path in hash element at /home/user/workspaces/workspace/perl5/lib/perl5/Devel/Camelcadedb.pm line 1011, line 3.
Use of uninitialized value $real_path in pattern match (m//) at /home/user/workspaces/workspace/perl5/lib/perl5/Devel/Camelcadedb.pm line 197, line 3.
Use of uninitialized value $real_path in pattern match (m//) at /home/user/workspaces/workspace/perl5/lib/perl5/Devel/Camelcadedb.pm line 197, line 3.
Instead we are receiving STOP at the breakpoint
{map {$_->{key} => 1} @{$ar}}
not working, but
+{map {$_->{key} => 1} @{$ar}}
does
Currently, this package requires JSON::XS.
Would it be possible to change this requirement to JSON::MaybeXS instead?
By using JSON::MaybeXS more JSON implementations would be supported:
Moved from Camelcade/Perl5-IDEA#1245
There may be nothing to be done about this, but remote debugging a large project with many Moose classes takes way too long to start debugging for it to be useful. While I am waiting I can hit the pause button in the IDE and it will break during the compilation, so I know it is working on something, but it takes approximately 10 times longer for the project to be debuggable with the IDE than it does for local debugging via the standard Perl debugger on the command line over SSH to the remote machine.
IDE: Android Studio 2.1.1
Build #AI-143.2821654, built on April 28, 2016
Perl5 Plugin: 2.005
JRE: 1.8.0_91-b14 x86_64
OS: OS X El Capitan
10.11.5
Hello!
There is a bug with remote debugging: Debugger stops at breakpoint only once after Debugger session has run. After the 'Connection lost, reconnecting...; all breakpoints are ignored. If I manualy stop and then start debugging all works fine.
My Environment:
IntelliJ IDEA 2019.3.1 (Community Edition)
Build #IC-193.5662.53, built on December 18, 2019
Runtime version: 11.0.5+10-b520.17 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
Non-Bundled Plugins: com.perl5 2019.3
Devel::Camelcadedb Installed: v2019.1
perl 5, version 26, subversion 3 (v5.26.3) built for MSWin32-x64-multi-thread
When I attempt to debug in Webstorm, it terminates without executing the code. In the Console there is the following:-
Disconnected
/usr/bin/perl5.28 -d:Camelcadedb /Users/berniesnoek/Development/McLane/QuickAttachateToTTWin.pl
WARNING: This version of perl is included in macOS for compatibility with legacy software.
In future versions of macOS the perl runtime will not be available by
default, and may require you to install an additional package.
Any help would be greatly appreciated. I have used the plugin successfully some years ago and have found it excellent.
Bernie
Webstorm 2020.2
Perl Plugin 2020.4
Camelcade 2019.1
Java 1.8.0_271
Perl 5.28.2
MacOS 11.0.1
Here are the parts of the log file that relate to the debugging session.
2020-12-01 07:11:15,569 [ 113815] WARN - tions.ex.ConfigurableCardPanel - auto-dispose 'Plugins' id=preferences.pluginManager
2020-12-01 07:22:51,304 [ 809550] INFO - idea.execution.PerlCommandLine - Executing: /usr/bin/perl5.28 -d:Camelcadedb /Users/berniesnoek/Development/McLane/QuickAttachateToTTWin.pl
2020-12-01 07:22:51,305 [ 809551] INFO - idea.execution.PerlCommandLine - environment: {PERL5_DEBUG_HOST=0.0.0.0, PERL5_DEBUG_ROLE=server, PERL5_DEBUG_PORT=58861} (+CONSOLE)
2020-12-01 07:22:51,305 [ 809551] INFO - idea.execution.PerlCommandLine - working dir: /Users/berniesnoek/Development/McLane
2020-12-01 07:22:51,312 [ 809558] INFO - idea.execution.PerlCommandLine - host = local; vm = system; pty = true; charset: UTF-8
Idea is from one of the telegram chats. And I stuck on such thing myself twice.
Sometimes in the large project something changes value of variable or array/hash. And you can't say - who do this.
Solution is to tie variable and die on necessary operation.
But this looks like a proper job for debugger.
Probably there are better low-level solutions.
Pretty silly in the scheme of things, but..
cpan -u
will try to keep "upgrading" to 2019.100, by (re)installing v2019.1.
$ sudo cpan -u
Upgrading all modules
Reading '/home/henk/.cpan/Metadata'
Database was generated on Wed, 09 Sep 2020 11:55:41 GMT
Package namespace installed latest in CPAN file
Net::Ping 2.72 2.74 RURBAN/Net-Ping-2.74.tar.gz
Devel::Camelcadedb v2019.1 2019.100 HURRICUP/Devel-Camelcadedb-v2019.1.tar.gz
$ cpan -D Devel::Camelcadedb
Reading '/home/henk/.cpan/Metadata'
Database was generated on Wed, 09 Sep 2020 11:55:41 GMT
Devel::Camelcadedb
-------------------------------------------------------------------------
(no description)
H/HU/HURRICUP/Devel-Camelcadedb-v2019.1.tar.gz
/usr/local/lib/perl5/site_perl/5.32.0/Devel/Camelcadedb.pm
Installed: v2019.1
CPAN: 2019.100 Not up to date
Alexandr Evstigneev (HURRICUP)
[email protected]
$ perl -v
This is perl 5, version 32, subversion 0 (v5.32.0) built for x86_64-linux
Copyright 1987-2020, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
$ cpan --version
/usr/local/bin/cpan version 1.64 calling Getopt::Std::getopts (version 1.12 [paranoid]),
running under Perl version 5.32.0.
[Now continuing due to backward compatibility and excessive paranoia.
See 'perldoc Getopt::Std' about $Getopt::Std::STANDARD_HELP_VERSION.]
Nothing to install!
$ uname -a
Linux DESKTOP-LGADNUE 4.4.0-19041-Microsoft #488-Microsoft Mon Sep 01 13:43:00 PST 2020 x86_64 x86_64 x86_64 GNU/Linux
Trying to connect to remote Perl Debugger and receiving:
Incorrect Devel::Camelcadedb version: Current plugin version requires Devel::Camelcadedb version 2017.1x, but weve got {1}. Please install appropriate version from CPAN.
Running netcat indicates that the remote debug server is running as expected:
nc -v 192.168.10.10 12345
Connection to 192.168.10.10 port 12345 [tcp/italk] succeeded!
{"version":"v2017.100.3","event":"READY"}
Double-checked with tcpdump that IDEA was reaching out to the correct IP.
Client side:
macOS High Sierra 10.13.3
IntelliJ IDEA Community 2017.3.4 (#IC-173.4548.28)
Perl Plugin 2017.5
Java 1.8.0_152-release-1024-b11 x86_64 (bundled with IDEA)
Server Side:
Devel::Camelcadedb v2017.100.3
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.