Remote Debugging Client Side GWT Code

A while ago I had to remotely debug client side code of a GWT application already compiled and deployed  onto a server. After searching around and reading this document a few times, I finally managed to do it following these steps:

  1. Compile and install the application on the server and write down the URL (like http://remote.host:8080/myapp/index.jsp).
  2. Create an Application launcher (Run->Edit Configurations->Applications in IntelliJ).
    • Set the main class to: com.google.gwt.dev.DevMode
    • Put this line in the program arguments: -noserver -war target/myapp -logLevel DEBUG -startupUrl http://remote.host:8080/myapp/index.jsp -port 8080 my.package.myapp.Module
  3. Debug this new run configuration. This will run the GWT Dev Mode and enable you to set breakpoints on the client side code.
  4. Copy and paste URL provided by Dev Mode into your browser (like http://remote.host:8080/myapp/indexjsp?gwt.codesvr=127.0.0.1:9997). You will need to modify Dev Mode extension options to allow this new combination (of app server and code server). On Chrome, for example, you can do this by clicking on the greyed out Dev Mode logo if you get an error.
  5. Remotely debug the server in the normal way (JDWP) to be able to debug server-side code as well.
Advertisements

5 thoughts on “Remote Debugging Client Side GWT Code

  1. Hi Norman,

    Thanks for posting this method, there is an issue I have encountered when debugging client code, it shows serialization problem when doing remote client debugging (works fine locally and server without remote client debugging).

    The error shows:
    Error getting to server – Type 'xxx.iface.request.GetTicketManagerPropertiesRequest' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field serializer. For security purposes, this type will not be deserialized.

    Seems all requests are rejected by serialization problem when doing client remote debugging, while they all have a default empty constructor.
    Not sure how to avoid this issue, any clue?

    Thanks a lot 🙂

    Cheers
    Chaplin

  2. Hello, thanks for your post. I have reproduced your steps, but it still does not work. IDEA have successfully connected to remote host, but breakpoints are not stopped at. I wonder if I should customize build process or it should just work with the production war/ear?

      • Well, the instructions might be a little outdated, things might have changed since then. When I did that, I didn’t touch anything in server side and I had to find the exact version deployed in server to load in my IDE.
        It is worth mentioning that this will enable debugging client side code only. To debug the server code, you will need a different debugger connection.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s