Craig A. Berry wrote:
> $ type script_for_pvp.dbg
> set module vms
> set break Perl_cando_by_name\%line 80727 do (exam/asciz *namdsc.dsc$a_pointer; go)
> go
> go
> $ MCR Sys$Disk:[]dbgminiperl.exe "-I[.lib]" [.VMS]Writemain.pl "DynaLoader Socket"
>
> OpenVMS Alpha DEBUG Version V7.1-000
>
> %DEBUG-I-INITIAL, Language: C, Module: MINIPERLMAIN
> %DEBUG-I-NOTATMAIN, Type GO to reach MAIN program
>
> DBG> @script_for_pvp.dbg
> break at routine MINIPERLMAIN\main
> 44319: PERL_SYS_INIT3(&argc,&argv,&env);
> break at VMS\Perl_cando_by_name\%LINE 80727
> 80727: retsts = sys$check_access(&objtyp,&namdsc,&usrdsc,armlst);
> *VMS\Perl_cando_by_name\namdsc.dsc$a_pointer:
>"DISK8:[BERRYC.VMSPERL.VMS]WRITEMAIN.PL;1"
> break at VMS\Perl_cando_by_name\%LINE 80727
> 80727: retsts = sys$check_access(&objtyp,&namdsc,&usrdsc,armlst);
> *VMS\Perl_cando_by_name\namdsc.dsc$a_pointer:
>"DISK8:[BERRYC.VMSPERL.VMS]WRITEMAIN.PL;1"
> Adding DynaLoader . . .
> Adding Socket . . .
> %DEBUG-I-EXITSTATUS, is '%SYSTEM-S-NORMAL, normal successful completion'
> DBG>
Wow Craig - thanks this helped. I managed to do a fully configured debug
build and I now know that the vmsname has an incorrect device.
I have so far traced this back up to the call to
retsts = lib$fid_to_name(&devdsc,&(((Stat_t *)statbufp)->st_ino),
&namdsc,&namdsc.dsc$w_length,0,0);
in VMS.C Perl_cando().
The problem that I am seeing is that fname turns
into "USER:[VMSPERL.VMS]WRITEMAIN.PL;1" which is wrong. This is
odd because on this machine my sys$login is USER:[PVHP] and:
$ sho log user
"USER" = "DKB100:[U.]" (LNM$SYSTEM_TABLE)
However, I am building perl in DKB100:[VMSPERL] hence the fname returned
by lib$fid_to_name() ought to be "DKB100:[VMSPERL.VMS]WRITEMAIN.PL;1", rather
than what it is. I am not yet sure where this incorrect device name is coming
from, but perhaps something is defaulting to $parse(SYS$LOGIN,,,"DEVICE",) for
some as yet unknown reason (???).
But again thanks I wouldn't be this far without your handy debug script.
I'll try to pick this up maybe tomorrow.
Peter Prymmer