Epic Error : Could not connect to debug port!

Help
2008-02-08
2013-05-20
  • Maxime Levesque

    Maxime Levesque - 2008-02-08

    I am trying to use the debugger for a perl CGI application,
    I have a Perl CGI lauch config :
    html root :
      /home/maxime/workspace/www/mona/
    startup html file (If I use a .pl file as a startup, it get's sent 'as is' to the browser)
      /home/maxime/workspace/www/mona/cgi-bin/dummy.html
    cgi-bin root :
      /home/maxime/workspace/www/mona/

    When I launch the debug config, I get my dummy html page shown, about 10 seconds
    later I get an eclipse error dialog saying :

       Could not connect to debug port!

    I have seen this problem in previous forum posts, but
    none of the solutions worked form me.

    Note that I can debug normal perl scripts, the problem is only
    with cgi scripts.

    I have PadWalker 1.7

    I am willing to spend some time trying to debug this, for
    I will be needing to debug perl cgi's pretty intensly
    (bad karma I guess ! ;))

    To verify my understanding,
    - epic launches a java webserver (wich one?)
    - the server launches the perl interpreter (in debug mode) with the cgi script,
       passes it the http request parameters
    - the perl debuger tries listens on a port,

    - epic tries to talk to the debugger on a given port
    ---------OR----------
    - the debugger on tries to talp to epic on a given port
       (in this case epic would have lauched the debuger specifying  a port)

    I would love to see the full (java) stack trace of this socket read failure....

      Anyways, I need to get this working, I have pretty extensive java experience
    but little perl experience.

    Found default config file
    Server started on 5004
    LOG: 5 5004-server: main.: starting handler: cgi
    LOG: 5 5004-server: main.: starting handler: file
    LOG: 4 5004-server: 127.0.0.1: new connection
    LOG: 3 5004-127.0.0.1-0: Request 24 GET /cgi-bin/bidon.html HTTP/1.1
    LOG: 5 5004-127.0.0.1-0: main.: invoking handler: cgi
    LOG: 5 5004-127.0.0.1-0: suffix=.cgi,.pl root=/home/maxime/workspace/www/mona/ url: /cgi-bin/bidon.html
    LOG: 5 5004-127.0.0.1-0: Checking for suffix: .cgi
    LOG: 5 5004-127.0.0.1-0: looking for: /home/maxime/workspace/www/mona/cgi-bin.cgi
    LOG: 5 5004-127.0.0.1-0: looking for: /home/maxime/workspace/www/mona/cgi-bin/bidon.html.cgi
    LOG: 5 5004-127.0.0.1-0: Checking for suffix: .pl
    LOG: 5 5004-127.0.0.1-0: looking for: /home/maxime/workspace/www/mona/cgi-bin.pl
    LOG: 5 5004-127.0.0.1-0: looking for: /home/maxime/workspace/www/mona/cgi-bin/bidon.html.pl
    LOG: 5 5004-127.0.0.1-0: main.: invoking handler: file
    LOG: 5 5004-127.0.0.1-0: file.: Looking for file: (/home/maxime/workspace/www/mona/)(/cgi-bin/bidon.html)
    LOG: 3 5004-127.0.0.1-0: request done

    Eclipse config :
    *** Platform Details:

    *** System properties:
    eclipse.buildId=M20070212-1330
    eclipse.commands=-os
    linux
    -ws
    gtk
    -arch
    x86
    -launcher
    /usr/lib/eclipse/eclipse
    -name
    Eclipse
    -showsplash
    600
    -exitdata
    1fd8001
    -install
    /usr/lib/eclipse
    -vm
    /usr/lib/jvm/java-6-sun/bin/java
    eclipse.ee.install.verify=false
    eclipse.product=org.eclipse.sdk.ide
    eclipse.startTime=1202483604776
    eclipse.vm=/usr/lib/jvm/java-6-sun/bin/java
    eclipse.vmargs=-Djava.library.path=/usr/lib/jni
    -Dgnu.gcj.precompiled.db.path=/var/lib/gcj-4.2/classmap.db
    -Dgnu.gcj.runtime.VMClassLoader.library_control=never
    -Dosgi.locking=none
    -jar
    /usr/lib/eclipse/startup.jar
    eof=eof
    file.encoding=UTF-8
    file.encoding.pkg=sun.io
    file.separator=/
    gnu.gcj.precompiled.db.path=/var/lib/gcj-4.2/classmap.db
    gnu.gcj.runtime.VMClassLoader.library_control=never
    java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
    java.awt.printerjob=sun.print.PSPrinterJob
    java.class.path=/usr/lib/eclipse/startup.jar
    java.class.version=50.0
    java.endorsed.dirs=/usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/endorsed
    java.ext.dirs=/usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/ext:/usr/java/packages/lib/ext
    java.home=/usr/lib/jvm/java-6-sun-1.6.0.03/jre
    java.io.tmpdir=/tmp
    java.library.path=/usr/lib/jni
    java.runtime.name=Java(TM) SE Runtime Environment
    java.runtime.version=1.6.0_03-b05
    java.specification.name=Java Platform API Specification
    java.specification.vendor=Sun Microsystems Inc.
    java.specification.version=1.6
    java.vendor=Sun Microsystems Inc.
    java.vendor.url=http://java.sun.com/
    java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi
    java.version=1.6.0_03
    java.vm.info=mixed mode, sharing
    java.vm.name=Java HotSpot(TM) Client VM
    java.vm.specification.name=Java Virtual Machine Specification
    java.vm.specification.vendor=Sun Microsystems Inc.
    java.vm.specification.version=1.0
    java.vm.vendor=Sun Microsystems Inc.
    java.vm.version=1.6.0_03-b05
    line.separator=

    org.osgi.framework.bootdelegation=*
    org.osgi.framework.executionenvironment=OSGi/Minimum-1.0,OSGi/Minimum-1.1,JRE-1.1,J2SE-1.2,J2SE-1.3,J2SE-1.4,J2SE-1.5,JavaSE-1.6
    org.osgi.framework.language=en
    org.osgi.framework.os.name=Linux
    org.osgi.framework.os.version=2.6.22-14-generic
    org.osgi.framework.processor=i386
    org.osgi.framework.system.packages=javax.accessibility,javax.activity,javax.crypto,javax.crypto.interfaces,javax.crypto.spec,javax.imageio,javax.imageio.event,javax.imageio.metadata,javax.imageio.plugins.bmp,javax.imageio.plugins.jpeg,javax.imageio.spi,javax.imageio.stream,javax.management,javax.management.loading,javax.management.modelmbean,javax.management.monitor,javax.management.openmbean,javax.management.relation,javax.management.remote,javax.management.remote.rmi,javax.management.timer,javax.naming,javax.naming.directory,javax.naming.event,javax.naming.ldap,javax.naming.spi,javax.net,javax.net.ssl,javax.print,javax.print.attribute,javax.print.attribute.standard,javax.print.event,javax.rmi,javax.rmi.CORBA,javax.rmi.ssl,javax.security.auth,javax.security.auth.callback,javax.security.auth.kerberos,javax.security.auth.login,javax.security.auth.spi,javax.security.auth.x500,javax.security.cert,javax.security.sasl,javax.sound.midi,javax.sound.midi.spi,javax.sound.sampled,javax.sound.sampled.spi,javax.sql,javax.sql.rowset,javax.sql.rowset.serial,javax.sql.rowset.spi,javax.swing,javax.swing.border,javax.swing.colorchooser,javax.swing.event,javax.swing.filechooser,javax.swing.plaf,javax.swing.plaf.basic,javax.swing.plaf.metal,javax.swing.plaf.multi,javax.swing.plaf.synth,javax.swing.table,javax.swing.text,javax.swing.text.html,javax.swing.text.html.parser,javax.swing.text.rtf,javax.swing.tree,javax.swing.undo,javax.transaction,javax.transaction.xa,javax.xml,javax.xml.datatype,javax.xml.namespace,javax.xml.parsers,javax.xml.transform,javax.xml.transform.dom,javax.xml.transform.sax,javax.xml.transform.stream,javax.xml.validation,javax.xml.xpath,org.ietf.jgss,org.omg.CORBA,org.omg.CORBA_2_3,org.omg.CORBA_2_3.portable,org.omg.CORBA.DynAnyPackage,org.omg.CORBA.ORBPackage,org.omg.CORBA.portable,org.omg.CORBA.TypeCodePackage,org.omg.CosNaming,org.omg.CosNaming.NamingContextExtPackage,org.omg.CosNaming.NamingContextPackage,org.omg.Dynamic,org.omg.DynamicAny,org.omg.DynamicAny.DynAnyFactoryPackage,org.omg.DynamicAny.DynAnyPackage,org.omg.IOP,org.omg.IOP.CodecFactoryPackage,org.omg.IOP.CodecPackage,org.omg.Messaging,org.omg.PortableInterceptor,org.omg.PortableInterceptor.ORBInitInfoPackage,org.omg.PortableServer,org.omg.PortableServer.CurrentPackage,org.omg.PortableServer.POAManagerPackage,org.omg.PortableServer.POAPackage,org.omg.PortableServer.portable,org.omg.PortableServer.ServantLocatorPackage,org.omg.SendingContext,org.omg.stub.java.rmi,org.w3c.dom,org.w3c.dom.bootstrap,org.w3c.dom.events,org.w3c.dom.ls,org.xml.sax,org.xml.sax.ext,org.xml.sax.helpers
    org.osgi.framework.vendor=Eclipse
    org.osgi.framework.version=1.3.0
    org.osgi.supports.framework.extension=true
    os.arch=i386
    os.name=Linux
    os.version=2.6.22-14-generic
    osgi.arch=x86
    osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@3:start, org.eclipse.core.runtime@start
    osgi.bundlestore=/home/maxime/.eclipse/org.eclipse.platform_3.2.0/configuration/org.eclipse.osgi/bundles
    osgi.configuration.area=file:/home/maxime/.eclipse/org.eclipse.platform_3.2.0/configuration/
    osgi.framework=file:/usr/lib/eclipse/plugins/org.eclipse.osgi_3.2.2.R32x_v20070118.jar
    osgi.framework.beginningstartlevel=1
    osgi.framework.shape=jar
    osgi.framework.version=3.2.2.R32x_v20070118
    osgi.install.area=file:/usr/lib/eclipse/
    osgi.instance.area=file:/home/maxime/workspace/
    osgi.instance.area.default=file:/home/maxime/workspace/
    osgi.locking=none
    osgi.logfile=/home/maxime/workspace/.metadata/.log
    osgi.manifest.cache=/home/maxime/.eclipse/org.eclipse.platform_3.2.0/configuration/org.eclipse.osgi/manifests
    osgi.nl=en_CA
    osgi.os=linux
    osgi.sharedConfiguration.area=file:/usr/lib/eclipse/configuration/
    osgi.splashLocation=/usr/lib/eclipse/plugins/org.eclipse.platform_3.2.2.r322_v20070117b/splash.bmp
    osgi.splashPath=platform:/base/plugins/org.eclipse.platform
    osgi.syspath=/usr/lib/eclipse/plugins
    osgi.ws=gtk
    path.separator=:
    sourceCriticEnabled=true
    sun.arch.data.model=32
    sun.boot.class.path=/usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/resources.jar:/usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/rt.jar:/usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/jsse.jar:/usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/jce.jar:/usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/charsets.jar:/usr/lib/jvm/java-6-sun-1.6.0.03/jre/classes
    sun.boot.library.path=/usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386
    sun.cpu.endian=little
    sun.cpu.isalist=
    sun.io.unicode.encoding=UnicodeLittle
    sun.java.launcher=SUN_STANDARD
    sun.jnu.encoding=UTF-8
    sun.management.compiler=HotSpot Client Compiler
    sun.os.patch.level=unknown
    user.country=CA
    user.dir=/home/maxime
    user.home=/home/maxime
    user.language=en
    user.name=maxime
    user.timezone=America/Montreal

     
    • Maxime Levesque

      Maxime Levesque - 2008-02-08

      Forgot to mention, I am using the latest 0.6.18 epic version

       
    • Jan Ploski

      Jan Ploski - 2008-02-08

      Here is how it works:

      - epic launches a java webserver called 'Brazil' from Sun; quite an old version of it; it uses an epic-provided "handler" to process the requests
      - the server launches the perl interpreter (in debug mode) with the cgi script,
      passes it the http request parameters
      - the debugger tries to talk to epic on a given port (in this case epic would have launched the debuger specifying a port); furthermore stdout/stderr are redirected via tcp sockets from the running script to epic (this can be suppressed by an option in the launch configuration)

      For testing, create a new project with a single CGI script and create a launch configuration with
      root directory = absolute path to the project
      html startup file = absolute path to the CGI script
      cgi root directory = absolute path to the project

      If you wish to hack EPIC to see what's going on, follow the instructions at http://e-p-i-c.sf.net/devguide/devguide.html

      Note that debugging the embedded web server will be a bit tricky because it runs in its own JVM. So the JVM would have to be started with appropriate debug flags by epic, or you would have to start it manually.

      P.S. Switch from gcj to Sun's Java for greatly improved performance of Eclipse/epic.

       
    • Maxime Levesque

      Maxime Levesque - 2008-02-11

        Ok, I got it to work, I started a single file project that worked,
      than mimicked the config for my real project,

      web root :
      /home/maxime/workspace/www/mona/cgi-bin/
      html start :
      /home/maxime/workspace/www/mona/cgi-bin/index.pl
      cgi root :
      /home/maxime/workspace/www/mona/cgi-bin/

      Thanks !

       

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks