ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> tdk
tdk
Re: [TDK] [Komodo-discuss] Tcl remote debugger and spawnpoints
by Andreas Kupries other posts by this author
Nov 19 2008 2:00PM messages near this date
view in the new Beta List Site
Re: [TDK] [Komodo-discuss] Tcl remote debugger and spawnpoints | Re: [TDK] [Komodo-discuss] Tcl remote debugger and spawnpoints
I finally managed to repro it here, overcoming a different bug in Komodo
itself too.

It is a bug in the spawn handling of dbgp_tcldebug ...

*	Using Tcl 8.5, and snit 2 the command resolution changed subtly.

*	This caused an [eval] in the spawn processing to not be the
	core ::eval, but an app internal command.

*	This is turn caused the port number for the new session to be
	some Tcl command string instead of a number, and appLaunch.tcl
	then threw an error on that, exiting silently.

I will rebuild the dbgp_tcldebug(.exe).

--
	Andreas Kupries <andreask@[...].com> 
	Developer @ http://www.ActiveState.com
	Tel: +1 778-786-1122


>  -----Original Message-----
>  From: tdk-bounces@[...].com
>  [mailto:tdk-bounces@[...].com]On Behalf Of Andreas
>  Kupries
>  Sent: Wednesday, November 19, 2008 12:19 PM
>  To: Hemang Lavana; Alex Panchenko
>  Cc: Jeff Hobbs; dbgp@listserv.activestate.com;
>  komodo-discuss@listserv.ActiveState.com; tdk@[...].com
>  Subject: Re: [TDK] [Komodo-discuss] Tcl remote debugger and spawnpoints
> 
> 
> 
>  > -----Original Message-----
>  > From: tdk-bounces@[...].com
>  > [mailto:tdk-bounces@[...].com]On Behalf Of Hemang Lavana
>  > Sent: Tuesday, November 18, 2008 1:53 PM
>  > To: Alex Panchenko
>  > Cc: Jeff Hobbs; dbgp@listserv.activestate.com;
>  > komodo-discuss@listserv.ActiveState.com; tdk@[...].com
>  > Subject: Re: [TDK] [Komodo-discuss] Tcl remote debugger and spawnpoints
>  >
>  >
>  > Hi all,
>  >
>  > Any updates on whether this issue has been resolved or not?
>  >
>  > Thanks,
>  > Hemang.
>  > Alex Panchenko wrote:
>  > > Hi,
>  > >
>  > > Here is the detailed information.
> 
>  Reading closely
> 
>  > > There are to files: parent.tcl and child.tcl
>  > >
>  > > === parent.tcl ===
>  > > proc spawn {cmd args} {
>  > >     puts [exec [info nameofexecutable] $cmd $args]
>  > > }
>  > >
>  > > puts "PARENT STARTED"
>  > > spawn child.tcl
>  > > puts "PARENT FINISHED"
>  > > === child.tcl ====
>  > > puts "CHILD STARTED"
>  > > puts "CHILD FINISHED"
>  > > ==================
> 
>  Looking ok.
> 
>  > > The contents of the files is based on the
>  > > http://docs.activestate.com/tdk/5.0/Debugger.html#mult_processes
> 
>  > > The command line used to start debugger is (all on the same line):
>  > > C:\TCL-Debug\5\dbgp_tcldebug.exe
>  > >  -dbgp 192.168.3.135:10000
>  > >  -app-shell C:\Tcl85\bin\tclsh85.exe
>  > >  -ide-key dbgp_1225872443074
>  > >  -log -logfile C:\TCL-Debug\log
>  > >  -app-file C:\home\tcl-spawnpoints\parent.tcl --
> 
>  Looks ok as well, knows where to find Komodo, or rather your frontend app.
> 
>  > > DBGP request:
>  > > spawnpoint_set -s enabled -n 6 -i 68 -f
>  > > file:///C:/home/tcl-spawnpoints/parent.tcl
> 
>  Looks ok as well
> 
>  > > DBGP response:
>  > > <?xml version="1.0" encoding="UTF-8" ?>
>  > > <response xmlns="urn:debugger_protocol" command="spawnpoint_set"
>  > > transaction_id="68" state="enabled" id="0" />
> 
> 
>  And is accepted. So, dbgp_tcldebug, and the application under debug agree
>  that this is a spawnpoint.
> 
> 
>  > > After that:
>  > > run -i 70
>  > >
>  > > response:
>  > > - a few stream/OUTPUT packets, followed by
>  > > <?xml version="1.0" encoding="UTF-8" ?>
>  > > <response xmlns="urn:debugger_protocol" command="run"
>  > > transaction_id="70" status="stopping" reason="ok" />
>  > >
>  > > Debuggger log:
>  > > The whole log file size is about 200kb, the spawnpoint
>  handling part is:
>  > >
>  > > ...
>  > > LOG(timing,3271527680): HandleNubEvent ENTER
>  > > LOG(message,3271527680): reading 105 bytes
>  > > LOG(message,3271527680): got (105): 'SPAWN_RQ {{0 {} global} {0
>  > {1 6 {97
>  > > 16}} source C:/home/tcl-spawnpoints/parent.tcl}} {} {spawn child.tcl}'
>  > > LOG(timing,3271527680): HandleNubEvent SPAWN_RQ
>  > > debug     | appState = stopped (traced, sync'd)
>  > > LOG(timing,3271527680): DeliverEvent stdin ()
>  > > debug     | appState = running (traced, sync'd)
> 
>  The application under debug recognizes the spawnpoint, has invoked the
>  internal replacement for 'spawn' and asks dbgp_tcldebug for the relevant
>  info (SPAWN_RQ).
> 
> 
>  > > LOG(message,3271527680): sent: len=117 'SPAWN_ACK alex
>  > > {::dbgp::client::Spawn request {spawn child.tcl} ::client}
> 
>  The debugged application has received the spawn info from dbgp_tcldebug
>  (SPAWN_ACK)
>  Per the attached spawn.pdx is will run the child process, except
>  if no port
>  was specified (= denied). I do not see that.
> 
> 
>  > > C:/TCL-Debug/5/appLaunch.tcl {} tcldbgp2472'
>  > > LOG(timing,3271542680): HandleNubEvent ENTER
>  > > ...
>  > >
>  > > Output:
>  > > PARENT STARTED
>  > > PARENT FINISHED
>  > >
>  > > Output if there is no spanwpoint or if spawnpoint is disabled:
>  > > PARENT STARTED
>  > > CHILD STARTED
>  > > CHILD FINISHED
>  > > PARENT FINISHED
>  > >
>  > > So it looks like the new process is not started if there is a
>  > spawnpoint.
> 
> 
>  Which, according to the spawn.pdx code  can happen only if there is a Tcl
>  error before the exec.
> 
>  The other possibility is that the child process is launched, but something
>  in its initialization fails before the user code is reached, and then it
>  silently exits. Like for example, does
> 
>   	C:/TCL-Debug/5/appLaunch.tcl
> 
>  exist ? That is the actual entrypoint for the child, to initialize the
>  debugger nub in the child, before child.tcl is run.
> 
>  One thing which could be done would be to add 'puts' statements to the
>  appLaunch file which writes to a fixed log file on the box. After the
>  failing run check how much of that file is executed per these puts. If
>  something happens there before child.tcl is run ... Well, as said above,
>  that would be a very silent exit.
> 
> 
> 
> 
>  > > Also, it should made subsequent DBGP connection from the
>  child process,
>  > > but it also does not happen.
> 
> 
>  If something goes wrong with the child process startup the dbgp_tcldebug
>  will not open a connection, as it has no new session to open it for. I.e.
>  this is likely a follow-on behaviour to the original problem.
> 
> 
>  > > It should be enough information to reproduce the issue. If you
>  > need more
>  > > information - please let me know.
>  > >
>  > > Thanks,
>  > > Alex
>  > >
>  > >
>  > > Jeff Hobbs wrote:
>  > >
>  > >> Alex Panchenko wrote:
>  > >>
>  > >>> I am not sure what mailing list should be used for my question, so I
>  > >>> will post to all related ones.
>  > >>>
>  > >>> I am interested in the DBGP support of the spawnpoints. Does tcl
>  > >>> remote debugger support spawnpoints?
>  > >>>
>  > >>> At the moment Komodo IDE does not allow me even to setup spawnpoints
>  > >>> when remote debugger is attached.
>  > >>> I can debug the same code with spawnpoint using Tcl Dev Kit
>  Debugger,
>  > >>> but it looks like it uses proprietary protocol to communicate with
>  > >>> the launched process.
>  > >>>
>  > >> Yes, the TDK Debugger uses a different Tcl-oriented protocol as it
>  > >> preceded dbgp and was designed just for Tcl.  The debugger backends
>  > >> between TDK and Komodo use the same debugging core for Tcl though.
>  > >> There handling of spawnpoints will vary as the protocol
>  allows, but as
>  > >> it is the debugging core with the support, it should be "the same".
>  > >>
>  > >>
>  > >>> Back to the DBGP: I can send spawnpoint_set command (and verify the
>  > >>> result with spawnpoint_list), but when the process reaches the
>  > >>> specified line nothing happens. Should I use some undocumented
>  > >>> commands to make it work, is it a bug or a missing feature?
>  > >>>
>  > >>> My configuration is
>  > >>> - Windows XP
>  > >>> - Tcl 8.4
>  > >>> - latest tcl remote debugger
>  > >>>
>  > >> In my testing, one obvious variation that I noted was that TDK will
>  > >> report invalid spawnpoint lines (lines not recognized by the debugger
>  > >> as allowable spawn points).  In TDK, a dialog will show to indicate
>  > >> this, but I received no such feedback from Komodo.
>  > >>
>  > >> Currently only [exec], [spawn] and [thread::create] are recognized
>  > >> spawn point generators.  This is a hardcoded core list (unless you
>  > >> extend with .pdx files), and I noticed one quirk about this ...
>  > >> exp_spawn was not recognized, whereas spawn was.  This is
>  something we
>  > >> need to correct.
>  > >>
>  > >> In any case, that may be what you hit.  You are using the
>  correct dbgp
>  > >> commands though.  Can you describe in more detail the tests you are
>  > >> using?  Have you tried running dbgp_tcldebug with -log (activate
>  > >> logging) and -logfile myfile.txt (redirect log from stdout to file)?
>  > >> That should provide more detailed information.
>  > >>
>  > >> Regards,
>  > >>
>  > >> Jeff
>  > >>
>  > > _______________________________________________
>  > > TDK mailing list
>  > > TDK@[...].com
>  > > http://listserv.ActiveState.com/mailman/listinfo/tdk
>  > >
>  >
>  > _______________________________________________
>  > TDK mailing list
>  > TDK@[...].com
>  > http://listserv.ActiveState.com/mailman/listinfo/tdk
> 
> 
>  --
>  	Andreas Kupries <andreask@[...].com>
>  	Developer @ http://www.ActiveState.com
>  	Tel: +1 778-786-1122
> 
> 

_______________________________________________
TDK mailing list
TDK@[...].com
http://listserv.ActiveState.com/mailman/listinfo/tdk
Thread:
Alex Panchenko
Jeff Hobbs
Alex Panchenko
Hemang Lavana
Andreas Kupries
Andreas Kupries
Hemang Lavana

Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved