How the heck is JavaScript debugging supposed to work?

I am trying the JavaScript debugging feature.
I managed to create a remote JavaScript debugging configuration.
It took me a while to figure out that the dialog asking for a "Profiles.ini" was asking for the Firefox profiles file.
After that I wondered why I can't just paste "D:\Users\stephen\AppData\Roaming\Mozilla\Firefox" into the file chooser (intermediate folder is hidden) - I think pasting a path with hidden files should either enable the display of hidden files or at least "unhide" the folder on the particular path.

So... this is where I am stuck right now:

I start the debug configuration => Hm, fi`refox starts up, but no page loads, even though "http://localhost:4426/m-progress-engine-teardown" is configured as "URL to open" in the debug configuration.
Strange. Let's try and enter the URL manually. Ok, page loads.

Next, I configure the remote URL for one specific JS file and set a breakpoint there.

Unfortunately the debugger never stops at that breakpoint.

The "Scripts" tab of the "JS Debug" tool window says "No scripts loaded by Firefox", even though my ExtJS app is runnning fine in the browser window.

What now?

All scripts are loaded in <script> tags in the HTML's body (which is not really kosher, but works on all browsers), so that I can display a "loading" throbber while the browser loads my JS app.
Can these cause this?

9 comments
Comment actions Permalink

Could you please check whether the JetBrains Extension is installed correctly? It should be listed in Firefox Addons dialog. Does it help if you close
Firefox before starting debugger from IDEA?

I am trying the JavaScript debugging feature.
I managed to create a remote JavaScript debugging configuration.
It took me a while to figure out that the dialog asking for a "Profiles.ini" was asking for the Firefox profiles file.
After that I wondered why I can't just paste "D:\Users\stephen\AppData\Roaming\Mozilla\Firefox" into the file chooser (intermediate folder is hidden) - I think pasting a path with hidden files should either enable the display of hidden files or at least "unhide" the folder on the particular path.

>

So... this is where I am stuck right now:

>

I start the debug configuration =>  Hm, fi`refox starts up, but no page loads, even though "http://localhost:4426/m-progress-engine-teardown" is configured as "URL to open" in the debug configuration.
Strange. Let's try and enter the URL manually. Ok, page loads.

>

Next, I configure the remote URL for one specific JS file and set a breakpoint there.

>

Unfortunately the debugger never stops at that breakpoint.

>

The "Scripts" tab of the "JS Debug" tool window says "No scripts loaded by Firefox", even though my ExtJS app is runnning fine in the browser window.

>

What now?

>

All scripts are loaded in<script>  tags in the HTML's body (which is not really kosher, but works on all browsers), so that I can display a "loading" throbber while the browser loads my JS app.
Can these cause this?

>

---
Original message URL: http://devnet.jetbrains.net/message/5268885#5268885



--
Nikolay Chashnikov
Software Developer
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

0
Comment actions Permalink

Thanks, I tried again in IDEA X EAP.
I noticed that IDEA tries to start Firefox 2 (which I also have installed to check my own web apps for compatibility).
I configured the path to Firefox 3.6 (in the Browsers settings panel), IDEA installed a new plugin, and things start to look better.

However I can't edit the JS Debug configuration. I get this exception which I can't directly post because the "Blame JavaScript Debugger" button is disabled:
Error during dispatching of java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=com.intellij.execution.impl.RunConfigurable$4@1878f13,notifier=null,catchExceptions=false,when=1280504825955] on sun.awt.windows.WToolkit@16fd757: null keys not supported
java.lang.NullPointerException: null keys not supported
    at gnu.trove.THashMap.put(THashMap.java:162)
    at com.intellij.javascript.debugger.execution.RemoteJavaScriptDebugSettingsEditor.resetEditorFrom(RemoteJavaScriptDebugSettingsEditor.java:40)
    at com.intellij.javascript.debugger.execution.RemoteJavaScriptDebugSettingsEditor.resetEditorFrom(RemoteJavaScriptDebugSettingsEditor.java:22)
    at com.intellij.openapi.options.SettingsEditor.resetFrom(SettingsEditor.java:85)
    at com.intellij.execution.impl.ConfigurationSettingsEditor$ConfigToSettingsWrapper.resetEditorFrom(ConfigurationSettingsEditor.java:229)
    at com.intellij.execution.impl.ConfigurationSettingsEditor$ConfigToSettingsWrapper.resetEditorFrom(ConfigurationSettingsEditor.java:221)
    at com.intellij.openapi.options.CompositeSettingsEditor.resetEditorFrom(CompositeSettingsEditor.java:47)
    at com.intellij.execution.impl.ConfigurationSettingsEditorWrapper.resetEditorFrom(ConfigurationSettingsEditorWrapper.java:134)
    at com.intellij.execution.impl.ConfigurationSettingsEditorWrapper.resetEditorFrom(ConfigurationSettingsEditorWrapper.java:51)
    at com.intellij.openapi.options.SettingsEditor.resetFrom(SettingsEditor.java:85)
    at com.intellij.openapi.options.SettingsEditorConfigurable.reset(SettingsEditorConfigurable.java:50)
    at com.intellij.execution.impl.SingleConfigurationConfigurable.reset(SingleConfigurationConfigurable.java:92)
    at com.intellij.execution.impl.SingleConfigurationConfigurable.editSettings(SingleConfigurationConfigurable.java:78)
    at com.intellij.execution.impl.RunConfigurable$2.valueChanged(RunConfigurable.java:176)
    at javax.swing.JTree.fireValueChanged(JTree.java:2820)
    at javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java:3191)
    at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTreeSelectionModel.java:629)
    at com.intellij.ui.treeStructure.Tree$MySelectionModel.fireValueChanged(Tree.java:497)
    at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTreeSelectionModel.java:1078)
    at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(DefaultTreeSelectionModel.java:287)
    at javax.swing.JTree.setSelectionPaths(JTree.java:1611)
    at javax.swing.JTree.setSelectionRows(JTree.java:1684)
    at javax.swing.JTree.setSelectionRow(JTree.java:1659)
    at com.intellij.util.ui.tree.TreeUtil$1.run(TreeUtil.java:466)
    at com.intellij.util.ui.tree.TreeUtil.showAndSelect(TreeUtil.java:517)
    at com.intellij.util.ui.tree.TreeUtil.showRowCentered(TreeUtil.java:417)
    at com.intellij.util.ui.tree.TreeUtil.showRowCentered(TreeUtil.java:409)
    at com.intellij.util.ui.tree.TreeUtil.showRowCentred(TreeUtil.java:405)
    at com.intellij.util.ui.tree.TreeUtil.selectPath(TreeUtil.java:343)
    at com.intellij.util.ui.tree.TreeUtil.selectInTree(TreeUtil.java:737)
    at com.intellij.util.ui.tree.TreeUtil.selectInTree(TreeUtil.java:726)
    at com.intellij.execution.impl.RunConfigurable$4.run(RunConfigurable.java:212)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at com.intellij.ide.IdeEventQueue.f(IdeEventQueue.java:628)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:509)
    at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:406)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:370)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
    at java.awt.Dialog$1.run(Dialog.java:1046)
    at java.awt.Dialog$3.run(Dialog.java:1098)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Dialog.show(Dialog.java:1096)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:671)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:410)
    at com.intellij.openapi.ui.DialogWrapper.showAndGetOk(DialogWrapper.java:1043)
    at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1028)
    at com.intellij.execution.actions.EditRunConfigurationsAction.actionPerformed(EditRunConfigurationsAction.java:39)
    at com.intellij.ui.popup.PopupFactoryImpl$ActionPopupStep$1.run(PopupFactoryImpl.java:482)
    at com.intellij.openapi.wm.impl.FocusManagerImpl.c(FocusManagerImpl.java:406)
    at com.intellij.openapi.wm.impl.FocusManagerImpl.access$200(FocusManagerImpl.java:47)
    at com.intellij.openapi.wm.impl.FocusManagerImpl$1.runEdt(FocusManagerImpl.java:76)
    at com.intellij.openapi.util.EdtRunnable$1.run(EdtRunnable.java:25)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at com.intellij.ide.IdeEventQueue.f(IdeEventQueue.java:628)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:509)
    at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:406)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:370)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Also to really be usable I would need a more flexible way to associate my JS files to a URL:
I have a servlet/JSP tag combination that dynamically creates script tags and adds the MD5 checksum to the end of the URL for each file (to avoid caching problems).
(In non-debug mode it also dynamically concatenates and minifies all JS files.)

So for example my JS files is js/RolesGrid.js and the URL is /m-progress-engine-teardown/js/RolesGrid.js;5-v_7t7HVVglt7nyUY-0Eg where the checksum part changes each time after the file is modified and re-packaged.

Is there any way to make this work, for example with a regular expression for URL matching?

0
Comment actions Permalink

The exception and problem with exception reporting will be fixed in the next EAP build, thank you.
IDEA doesn't support url matching with regular expressions. However before matching an url it trims the end of url after ';' character so in your case
it should trim the url to /m-progress-engine-teardown/js/RolesGrid.js and then match it to a local file using the run configuration settings.

Thanks, I tried again in IDEA X EAP.
I noticed that IDEA tries to start Firefox 2 (which I also have installed to check my own web apps for compatibility).
I configured the path to Firefox 3.6 (in the Browsers settings panel), IDEA installed a new plugin, and things start to look better.

>

However I can't edit the JS Debug configuration. I get this exception which I can't directly post "Blame JavaScript Debugger" button is disabled:
Error during dispatching of java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=com.intellij.execution.impl.RunConfigurable$4@1878f13,notifier=null,catchExceptions=false,when=1280504825955] on sun.awt.windows.WToolkit@16fd757: null keys not supported
java.lang.NullPointerException: null keys not supported
     at gnu.trove.THashMap.put(THashMap.java:162)
     at com.intellij.javascript.debugger.execution.RemoteJavaScriptDebugSettingsEditor.resetEditorFrom(RemoteJavaScriptDebugSettingsEditor.java:40)
     at com.intellij.javascript.debugger.execution.RemoteJavaScriptDebugSettingsEditor.resetEditorFrom(RemoteJavaScriptDebugSettingsEditor.java:22)
     at com.intellij.openapi.options.SettingsEditor.resetFrom(SettingsEditor.java:85)
     at com.intellij.execution.impl.ConfigurationSettingsEditor$ConfigToSettingsWrapper.resetEditorFrom(ConfigurationSettingsEditor.java:229)
     at com.intellij.execution.impl.ConfigurationSettingsEditor$ConfigToSettingsWrapper.resetEditorFrom(ConfigurationSettingsEditor.java:221)
     at com.intellij.openapi.options.CompositeSettingsEditor.resetEditorFrom(CompositeSettingsEditor.java:47)
     at com.intellij.execution.impl.ConfigurationSettingsEditorWrapper.resetEditorFrom(ConfigurationSettingsEditorWrapper.java:134)
     at com.intellij.execution.impl.ConfigurationSettingsEditorWrapper.resetEditorFrom(ConfigurationSettingsEditorWrapper.java:51)
     at com.intellij.openapi.options.SettingsEditor.resetFrom(SettingsEditor.java:85)
     at com.intellij.openapi.options.SettingsEditorConfigurable.reset(SettingsEditorConfigurable.java:50)
     at com.intellij.execution.impl.SingleConfigurationConfigurable.reset(SingleConfigurationConfigurable.java:92)
     at com.intellij.execution.impl.SingleConfigurationConfigurable.editSettings(SingleConfigurationConfigurable.java:78)
     at com.intellij.execution.impl.RunConfigurable$2.valueChanged(RunConfigurable.java:176)
     at javax.swing.JTree.fireValueChanged(JTree.java:2820)
     at javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java:3191)
     at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTreeSelectionModel.java:629)
     at com.intellij.ui.treeStructure.Tree$MySelectionModel.fireValueChanged(Tree.java:497)
     at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTreeSelectionModel.java:1078)
     at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(DefaultTreeSelectionModel.java:287)
     at javax.swing.JTree.setSelectionPaths(JTree.java:1611)
     at javax.swing.JTree.setSelectionRows(JTree.java:1684)
     at javax.swing.JTree.setSelectionRow(JTree.java:1659)
     at com.intellij.util.ui.tree.TreeUtil$1.run(TreeUtil.java:466)
     at com.intellij.util.ui.tree.TreeUtil.showAndSelect(TreeUtil.java:517)
     at com.intellij.util.ui.tree.TreeUtil.showRowCentered(TreeUtil.java:417)
     at com.intellij.util.ui.tree.TreeUtil.showRowCentered(TreeUtil.java:409)
     at com.intellij.util.ui.tree.TreeUtil.showRowCentred(TreeUtil.java:405)
     at com.intellij.util.ui.tree.TreeUtil.selectPath(TreeUtil.java:343)
     at com.intellij.util.ui.tree.TreeUtil.selectInTree(TreeUtil.java:737)
     at com.intellij.util.ui.tree.TreeUtil.selectInTree(TreeUtil.java:726)
     at com.intellij.execution.impl.RunConfigurable$4.run(RunConfigurable.java:212)
     at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
     at com.intellij.ide.IdeEventQueue.f(IdeEventQueue.java:628)
     at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:509)
     at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:406)
     at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:370)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
     at java.awt.Dialog$1.run(Dialog.java:1046)
     at java.awt.Dialog$3.run(Dialog.java:1098)
     at java.security.AccessController.doPrivileged(Native Method)
     at java.awt.Dialog.show(Dialog.java:1096)
     at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:671)
     at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:410)
     at com.intellij.openapi.ui.DialogWrapper.showAndGetOk(DialogWrapper.java:1043)
     at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1028)
     at com.intellij.execution.actions.EditRunConfigurationsAction.actionPerformed(EditRunConfigurationsAction.java:39)
     at com.intellij.ui.popup.PopupFactoryImpl$ActionPopupStep$1.run(PopupFactoryImpl.java:482)
     at com.intellij.openapi.wm.impl.FocusManagerImpl.c(FocusManagerImpl.java:406)
     at com.intellij.openapi.wm.impl.FocusManagerImpl.access$200(FocusManagerImpl.java:47)
     at com.intellij.openapi.wm.impl.FocusManagerImpl$1.runEdt(FocusManagerImpl.java:76)
     at com.intellij.openapi.util.EdtRunnable$1.run(EdtRunnable.java:25)
     at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
     at com.intellij.ide.IdeEventQueue.f(IdeEventQueue.java:628)
     at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:509)
     at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:406)
     at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:370)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

>

Also to really be usable I would need a more flexible way to associate my JS files to a URL:
I have a servlet/JSP tag combination that dynamically creates script tags and adds the MD5 checksum to the end of the URL for each file (to avoid caching problems).
(In non-debug mode it also dynamically concatenates and minifies all JS files.)

>

So for example my JS files is in js/RolesGrid and the URL is /m-progress-engine-teardown/js/RolesGrid.js;5-v_7t7HVVglt7nyUY-0Eg where the checksum part changes for after the file is modified and re-packaged.

>

Is there any way to make this work, for example with a regular expression for URL matching?

>

---
Original message URL: http://devnet.jetbrains.net/message/5269003#5269003



--
Nikolay Chashnikov
Software Developer
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

0
Comment actions Permalink

Thanks, Nikolay, for the answer.
I tried again in 96.852: The exception is gone, but I still can't get the file matching to work.
See screenshot for the configuration. IDEA correctly detected all the scripts on the page (see JS Debug toolwindow which I moved top the right).
I configured the "URL to open" plus I configured a "Remote URL" that is relative to the "URL to open" (like the doc/help says) on a folder.
Breakpoints simply do not work.

Also I noticed that IDEA on other occasions is too eager to strip the part after the ";": I double clicked on a file in the list of loaded files (in the "Scripts" tab of the "JS Debug" toolwindow. IDEA tried to load it without the ";..." suffix, which fails. See file/editor panel in the background.

Any ideas?



Attachment(s):
jsdebug.png
0
Comment actions Permalink

Actually it's a mistake in our help, you need to specify an absolute URL (http://localhost...) in the "Remote URL" column. We'll fix the help page.
Also I've fixed loading URLs with ';', thank you for reporting.

Thanks, Nikolay, for the answer.
I tried again in 96.852: The exception is gone, but I still can't get the file matching to work.
See screenshot for the configuration. IDEA correctly detected all the scripts on the page (see JS Debug toolwindow which I moved top the right).
I configured the "URL to open" plus I configured a "Remote URL" that is relative to the "URL to open" (like the doc/help says) on a folder.
Breakpoints simply do not work.

>

Also I noticed that IDEA on other occasions is too eager to strip the part after the ";": I double clicked on a file in the list of loaded files (in the "Scripts" tab of the "JS Debug" toolwindow. IDEA tried to load it without the ";..." suffix, which fails. See file/editor panel in the background.

>

Any ideas?

>

---
Original message URL: http://devnet.jetbrains.net/message/5269183#5269183



--
Nikolay Chashnikov
Software Developer
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

0
Comment actions Permalink

Still no luck :-(
See screenshot. I tried to configure the Remote URL for the "app" folder with or without trailing slash, but that makes no difference.
Breakpoints do not work in files in the folder (for example Application.js).

For testing I also assigned to Remote URLs explicitly to files:
CompaniesGrid.js is the only file where breakpoints work: I configured a full URL here including the MD5 checksum. (I would need to manually change the Remote URL on each file each time anything is changed in the file...)
CompanyDialog.js does not work - I stripped the MD5 part here.

Anyway it should be possible to simply configure an URL on the parent folder to make it work. Anything else is so impractical that the JS debug feature is useless (easier to just use firebug).



Attachment(s):
jsdebug2.png
0
Comment actions Permalink

I think the problem will be fixed in the next build.

Still no luck :(
See screenshot. I tried to configure the Remote URL for the "app" folder with or without trailing slash, but that makes no difference.
Breakpoints do not work in files in the folder (for example Application.js).

>

For testing I also assigned to Remote URLs explicitly to files:
CompaniesGrid.js is the only file where breakpoints work: I configured a full URL here including the MD5 checksum. (I would need to manually change the Remote URL on each file each time anything is changed in the file...)
CompanyDialog.js does not work - I stripped the MD5 part here.

>

Anyway it should be possible to simply configure an URL on the parent folder to make it work. Anything else is so impractical that the JS debug feature is useless (easier to just use firebug).

>

---
Original message URL: http://devnet.jetbrains.net/message/5269264#5269264



--
Nikolay Chashnikov
Software Developer
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

0
Comment actions Permalink

Breakpoints work fine now in 96.863.
Thanks a lot! That's a big timesaver (no more manually navigating sources in both Firebug and IDEA).

I hope you are open to some new feature requests ;-)
For example I'd very much like to have something more useful than "Object" and "Array" displayed for variable values. Maybe the first characters from a JSON representation with properties "id" and "name" moved to the front. That way I would not need to expand/collapse so many nodes just to see actuial values. It would be great if the list of "important" properties were configurable. For example ExtJS components have an important attribute "xtype" that specifies the component type.
Alternatively the result of toString() if it is defined/overridden for the object.
I am going to open a Jira issue for this, right?

One or two small busg are still present:
If I try to open a JS file from the scripts tab of the JS debug toolwindow, I get an exception (see below).
If I then try to navigate to the local file (using the toolbar button), then I only get an error dialog saying "Cannot find local file for 'http://localhost:4426/m-progress-engine-teardown/js/1_11_window-debug.js;Ix4GS_YriGq4NYRYC7hn_A'".

Assertion failed:
java.lang.Throwable
    at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:92)
    at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:99)
    at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorProvider.createEditor(PsiAwareTextEditorProvider.java:47)
    at com.intellij.openapi.fileEditor.impl.http.RemoteFilePanel$4.run(RemoteFilePanel.java:132)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:319)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at com.intellij.ide.IdeEventQueue.f(IdeEventQueue.java:628)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:509)
    at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:406)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:370)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)



java.lang.Throwable
    at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:92)
    at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:99)
    at com.intellij.openapi.fileEditor.impl.text.TextEditorComponent.<init>(TextEditorComponent.java:100)
    at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl$PsiAwareTextEditorComponent.<init>(PsiAwareTextEditorImpl.java:63)
    at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl$PsiAwareTextEditorComponent.<init>(PsiAwareTextEditorImpl.java:56)
    at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl.createEditorComponent(PsiAwareTextEditorImpl.java:42)
    at com.intellij.openapi.fileEditor.impl.text.TextEditorImpl.<init>(TextEditorImpl.java:46)
    at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl.<init>(PsiAwareTextEditorImpl.java:38)
    at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorProvider.createEditor(PsiAwareTextEditorProvider.java:48)
    at com.intellij.openapi.fileEditor.impl.http.RemoteFilePanel$4.run(RemoteFilePanel.java:132)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:319)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at com.intellij.ide.IdeEventQueue.f(IdeEventQueue.java:628)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:509)
    at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:406)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:370)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)



java.lang.NullPointerException
    at com.intellij.openapi.fileEditor.impl.text.TextEditorComponent.<init>(TextEditorComponent.java:102)
    at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl$PsiAwareTextEditorComponent.<init>(PsiAwareTextEditorImpl.java:63)
    at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl$PsiAwareTextEditorComponent.<init>(PsiAwareTextEditorImpl.java:56)
    at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl.createEditorComponent(PsiAwareTextEditorImpl.java:42)
    at com.intellij.openapi.fileEditor.impl.text.TextEditorImpl.<init>(TextEditorImpl.java:46)
    at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl.<init>(PsiAwareTextEditorImpl.java:38)
    at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorProvider.createEditor(PsiAwareTextEditorProvider.java:48)
    at com.intellij.openapi.fileEditor.impl.http.RemoteFilePanel$4.run(RemoteFilePanel.java:132)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:319)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at com.intellij.ide.IdeEventQueue.f(IdeEventQueue.java:628)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:509)
    at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:406)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:370)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

0
Comment actions Permalink

I cannot reproduce that exception so I've added more detailed assertion. Feel free to fill YouTrack issues for your suggestions.

Breakpoints work fine now in 96.863.
Thanks a lot! That's a big timesaver (no more manually navigating sources in both Firebug and IDEA).

>

I hope you are open to some new feature requests ;)
For example I'd very much like to have something more useful than "Object" and "Array" displayed for variable values. Maybe the first characters from a JSON representation with properties "id" and "name" moved to the front. That way I would not need to expand/collapse so many nodes just to see actuial values. It would be great if the list of "important" properties were configurable. For example ExtJS components have an important attribute "xtype" that specifies the component type.
Alternatively the result of toString() if it is defined/overridden for the object.
I am going to open a Jira issue for this, right?

>

One or two small busg are still present:
If I try to open a JS file from the scripts tab of the JS debug toolwindow, I get an exception (see below).
If I then try to navigate to the local file (using the toolbar button), then I only get an error dialog saying "Cannot find local file for 'http://localhost:4426/m-progress-engine-teardown/js/1_11_window-debug.js;Ix4GS_YriGq4NYRYC7hn_A'".

>

Assertion failed:
java.lang.Throwable
     at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:92)
     at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:99)
     at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorProvider.createEditor(PsiAwareTextEditorProvider.java:47)
     at com.intellij.openapi.fileEditor.impl.http.RemoteFilePanel$4.run(RemoteFilePanel.java:132)
     at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:319)
     at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
     at com.intellij.ide.IdeEventQueue.f(IdeEventQueue.java:628)
     at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:509)
     at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:406)
     at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:370)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

>
>
>

java.lang.Throwable
     at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:92)
     at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:99)
     at com.intellij.openapi.fileEditor.impl.text.TextEditorComponent.<init>(TextEditorComponent.java:100)
     at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl$PsiAwareTextEditorComponent.<init>(PsiAwareTextEditorImpl.java:63)
     at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl$PsiAwareTextEditorComponent.<init>(PsiAwareTextEditorImpl.java:56)
     at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl.createEditorComponent(PsiAwareTextEditorImpl.java:42)
     at com.intellij.openapi.fileEditor.impl.text.TextEditorImpl.<init>(TextEditorImpl.java:46)
     at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl.<init>(PsiAwareTextEditorImpl.java:38)
     at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorProvider.createEditor(PsiAwareTextEditorProvider.java:48)
     at com.intellij.openapi.fileEditor.impl.http.RemoteFilePanel$4.run(RemoteFilePanel.java:132)
     at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:319)
     at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
     at com.intellij.ide.IdeEventQueue.f(IdeEventQueue.java:628)
     at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:509)
     at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:406)
     at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:370)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

>
>
>

java.lang.NullPointerException
     at com.intellij.openapi.fileEditor.impl.text.TextEditorComponent.<init>(TextEditorComponent.java:102)
     at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl$PsiAwareTextEditorComponent.<init>(PsiAwareTextEditorImpl.java:63)
     at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl$PsiAwareTextEditorComponent.<init>(PsiAwareTextEditorImpl.java:56)
     at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl.createEditorComponent(PsiAwareTextEditorImpl.java:42)
     at com.intellij.openapi.fileEditor.impl.text.TextEditorImpl.<init>(TextEditorImpl.java:46)
     at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl.<init>(PsiAwareTextEditorImpl.java:38)
     at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorProvider.createEditor(PsiAwareTextEditorProvider.java:48)
     at com.intellij.openapi.fileEditor.impl.http.RemoteFilePanel$4.run(RemoteFilePanel.java:132)
     at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:319)
     at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
     at com.intellij.ide.IdeEventQueue.f(IdeEventQueue.java:628)
     at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:509)
     at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:406)
     at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:370)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

>

---
Original message URL: http://devnet.jetbrains.net/message/5269301#5269301



--
Nikolay Chashnikov
Software Developer
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

0

Please sign in to leave a comment.