Unfortunately,
Devel::Cover
does not yet work with threads.
它也不适用于prefork.
在startup.pl中使用,Devel :: Cover问题
Not a CODE reference. END Failed--call queue aborted.
perl 5.8.9,Apache 2.2.13.我的操作系统是FreeBSD,如果重要.同样的问题是reported for win32
.
更新:PerlTrace全部输出
copying config restarting apache mod_perl trace flags dump: a On (Apache API interaction) c On (configuration for directive handlers) d On (directive processing) e On (environment variables) f On (filters) g On (globals management) h On (handlers) i On (interpreter pool management) m On (memory allocations) o On (I/O) r On (Perl runtime interaction) s On (Perl sections) t On (benchmark-ish timings) modperl_cmd_requires: push PerlRequire /usr/local/www/apache22/data/startup.pl modperl_cmd_switches: arg = -I/usr/local/www/apache22/data/PMs modperl_cmd_switches: arg = -I/usr/local/www/apache22/data/project/lib_core modperl_cmd_modules: push PerlModule Apache::DBI modperl_config_dir_new: new dcfg: 0x284d3d48 modperl_config_dir_create: dir \.(cgi|pl)$ modperl_cmd_response_handlers: push @PerlResponseHandler,ModPerl::Registry modperl_handler_new: [47836] new handler ModPerl::Registry modperl_cmd_push_handlers: created handler stack modperl_cmd_push_handlers: pushed handler: ModPerl::Registry modperl_cmd_options: arg = +ParseHeaders httpd not running,trying to start modperl_hook_init: mod_perl hook init modperl_sys_init: mod_perl sys init MpSrv flags dump (cdev01.project.local): Access On Authen On Authz On Autoload Off ChildExit On ChildInit On Cleanup On Clone Off Enable On Fixup On HeaderParser On InheritSwitches Off InputFilter On Log On MapToStorage On MergeHandlers Off OpenLogs On OutputFilter On Parent Off PostConfig On PostReadRequest On PreConnection On ProcessConnection On Response On Trans On Type On Unset On modperl_startup: starting the parent perl for the base server modperl_config_srv_argv_init => 0 = /usr/local/sbin/httpd 1 = -I/usr/local/www/apache22/data/PMs 2 = -I/usr/local/www/apache22/data/project/lib_core 3 = -e;0 modperl_env_clear: [0x28f2a000] %ENV = (); modperl_env_default_populate: $ENV{MOD_PERL} = "mod_perl/2.0.4"; modperl_env_default_populate: $ENV{MOD_PERL_API_VERSION} = "2"; modperl_env_configure_server: [47836/0x28f2a000/cdev01.project.local:80] @ENV{keys scfg->SetEnv} = values scfg->SetEnv; modperl_env_configure_server: [47836/0x28f2a000/cdev01.project.local:80] @ENV{keys scfg->PassEnv} = values scfg->PassEnv; modperl_env_table_populate: $ENV{PATH} = "/usr/local/www/apache22/data/testing/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"; modperl_interp_init: server=cdev01.project.local:80 modperl_interp_new: 0x28f47480 / perl: 0x0 / parent perl: 0x0 modperl_startup: constructed interpreter=0x28f2a000 modperl_handler_anon_init: init $PL_modglobal{ANONSUB} = [] Devel::Cover 0.65: Collecting coverage data for branch,condition,pod,statement,subroutine and time. Collecting under mod_perl/2.0.4 Selecting packages matching: Ignoring packages matching: /Devel/Cover[./] /Net/OpenSSH[./] Ignoring packages in: . /usr/local/lib/perl5/5.8.9 /usr/local/lib/perl5/5.8.9/BSDPAN /usr/local/lib/perl5/5.8.9/mach /usr/local/lib/perl5/site_perl/5.8.9 /usr/local/lib/perl5/site_perl/5.8.9/mach modperl_config_apply_PerlRequire: loaded Perl file: /usr/local/www/apache22/data/startup.pl for server cdev01.project.local:80 modperl_config_apply_PerlModule: loaded Perl module Apache::DBI for server cdev01.project.local:80 modperl_init_vhost: Init vhost cdev01.project.local:4443: s=0x284d8500,base_s=0x28413a40 modperl_init_vhost: server cdev01.project.local:4443 already initialized modperl_init_vhost: Init vhost cdev01.project.local:443: s=0x284d5c78,base_s=0x28413a40 modperl_init_vhost: server cdev01.project.local:443 already initialized modperl_callback_run_handlers: no PerlOpenLogsHandler handlers configured () modperl_callback_run_handlers: no PerlPostConfigHandler handlers configured () modperl_env_hash_keys: [0x28f2a000] PERL_HASH: MOD_PERL (len: 8) modperl_env_hash_keys: [0x28f2a000] PERL_HASH: MOD_PERL_API_VERSION (len: 20) modperl_init_clones: no clones created for non-threaded mpm modperl_interp_pool_destroy: parent == 0x28f47480 modperl_interp_destroy: interp == 0x28f47480 / perl: 0x28f2a000 modperl_xs_dl_handles_get: B dl handle == 0x28ca9600 modperl_xs_dl_handles_get: Cwd dl handle == 0x28ca9800 modperl_xs_dl_handles_get: List::Util dl handle == 0x28ca9a00 modperl_xs_dl_handles_get: Digest::MD5 dl handle == 0x28ca9c00 modperl_xs_dl_handles_get: IO dl handle == 0x28ca9e00 modperl_xs_dl_handles_get: Fcntl dl handle == 0x28caa000 modperl_xs_dl_handles_get: Storable dl handle == 0x28caa200 modperl_xs_dl_handles_get: File::Glob dl handle == 0x28caa400 modperl_xs_dl_handles_get: Data::Dumper dl handle == 0x28caa600 modperl_xs_dl_handles_get: Devel::Cover dl handle == 0x28caa800 modperl_xs_dl_handles_get: Apache2::Module dl handle == 0x28caaa00 modperl_xs_dl_handles_get: Apache2::RequestUtil dl handle == 0x28caac00 modperl_xs_dl_handles_get: Apache2::ServerUtil dl handle == 0x28caae00 modperl_xs_dl_handles_get: DBI dl handle == 0x28cac000 modperl_perl_call_list: pid 47836/tid 0x28401040/perl id 0x28f2a000 running 4 END subs Not a CODE reference. END Failed--call queue aborted.
解决方法
邪恶之源似乎是Apache :: DBI.我从配置文件中注释出来,httpd开始.
不幸的是,更多的障碍来了(No coverage for runtime with Devel::Cover and ModPerl::Registry