Compare Revisions

Debugging a XULRunner Application

Revision 38905:

Revision 38905 by Kohei on

Revision 38906:

Revision 38906 by DougBTX on

Title:
Debugging a XULRunner Application
Debugging a XULRunner Application
Slug:
Debugging_a_XULRunner_Application
Debugging_a_XULRunner_Application
Tags:
Venkman, XUL, XULRunner
Venkman, XUL, XULRunner
Content:

Revision 38905
Revision 38906
n8      The easiest way to debug a <a href="en/XULRunner">XULRunnern8      The easiest way to debug a <a href="/en/XULRunner" title="e
></a> application is to get the system to tell you what's wrong! T>n/XULRunner">XULRunner</a> application is to get the system to te
>here are two different consoles available and various preferences>ll you what's wrong! There are two different consoles available a
> which will ensure that the information you need to know is displ>nd various preferences which will ensure that the information you
>ayed on them.> need to know is displayed on them.
n14      <a href="en/Debugging_JavaScript">Debugging JavaScript</a>n14      <a href="/en/Debugging_JavaScript" title="en/Debugging_Java
 >Script">Debugging JavaScript</a>
n23      Preferences should be in a .js file in the directory <tt>%an23      Preferences should be in a .js file in the directory <code>
>ppname%/defaults/preferences/</tt>. It doesn't matter what the fi>%appname%/defaults/preferences/</code>. It doesn't matter what th
>le is called (as long as the extension is <tt>.js</tt>), so <tt>d>e file is called (as long as the extension is <code>.js</code>), 
>ebug.js</tt> is as good as any!>so <code>debug.js</code> is as good as any!
n37      To enable a console on windows, start xulrunner with the <tn37      To enable a console on windows, start xulrunner with the <c
>t>-console</tt> argument. Note that <tt>-console</tt> goes after >ode>-console</code> argument. Note that <code>-console</code> goe
>the application.ini argument: e.g. <tt>xulrunner.exe /path/to/app>s after the application.ini argument: e.g. <code>xulrunner.exe /p
>lication.ini -console</tt>>ath/to/application.ini -console</code>
38    </p>
39    <p>38    </p>
39    <p>
40      To output text to the console, use <tt>dump("my text here\n40      To output text to the console, use <code>dump("my text here
>");</tt>. This will only work if the pref <tt>pref("browser.dom.w>\n");</code>. This will only work if the pref <code>pref("browser
>indow.dump.enabled", true)</tt> is enabled.>.dom.window.dump.enabled", true)</code> is enabled.
n46      To enable the JS console, start xulrunner with the -jsconson46      To enable the JS console, start xulrunner with the -jsconso
>le argument. Note: if you are not using the stub executable to la>le argument. Note: if you are not using the stub executable to la
>unch the application, the <tt>-jsconsole</tt> argument is after t>unch the application, the <code>-jsconsole</code> argument is aft
>he application.ini argument: e.g. <tt>xulrunner.exe /path/to/appl>er the application.ini argument: e.g. <code>xulrunner.exe /path/t
>ication.ini -jsconsole</tt>>o/application.ini -jsconsole</code>
47    </p>
48    <p>47    </p>
48    <p>
49      By default the JS console only shows errors from web conten49      By default the JS console only shows errors from web conten
>t. To show errors in chrome Javascript, the pref <tt>pref("javasc>t. To show errors in chrome Javascript, the pref <code>pref("java
>ript.options.showInConsole", true)</tt> must be set.>script.options.showInConsole", true)</code> must be set.
50    </p>
51    <p>50    </p>
51    <p>
52      To log JS errors to disk, set the environment variable "XRE52      To log JS errors to disk, set the environment variable "XRE
>_CONSOLE_LOG" to the path to the filename. i.e. <tt>export XRE_CO>_CONSOLE_LOG" to the path to the filename. i.e. <code>export XRE_
>NSOLE_LOG=/path/to/logfile</tt> or <tt>set XRE_CONSOLE_LOG=C:\pat>CONSOLE_LOG=/path/to/logfile</code> or <code>set XRE_CONSOLE_LOG=
>h\to\logfile</tt>.>C:\path\to\logfile</code>.
n62        <code><a href="en/Components.utils.reportError">Componentn62        <code><a href="/en/Components.utils.reportError" title="e
>s.utils.reportError</a>(str)</code> will output <code>str</code> >n/Components.utils.reportError">Components.utils.reportError</a>(
>as an "error" (i.e. with the red stop icon next to it).>str)</code> will output <code>str</code> as an "error" (i.e. with
 > the red stop icon next to it).
n72            .getService(Components.interfaces.<a href="en/NsIConsn72            .getService(Components.interfaces.<a href="/en/nsICon
>oleService">nsIConsoleService</a>)>soleService" title="en/nsIConsoleService">nsIConsoleService</a>)
n83      The easiest way to permanently add <a href="en/Venkman">Venn83      The easiest way to permanently add <a href="/en/Venkman" ti
>kman</a> to your XULRunner-based application is the following one>tle="en/Venkman">Venkman</a> to your XULRunner-based application 
> (successfully tested with XULRunner 1.8.0.1, xulrunner-1.9a7pre.>is the following one (successfully tested with XULRunner 1.8.0.1,
>en-US.win32):> xulrunner-1.9a7pre.en-US.win32):
n88      <li>Unzip the package and copy the file <tt>chrome/venkman.n88      <li>Unzip the package and copy the file <code>chrome/venkma
>jar</tt> to the <tt>chrome</tt> directory of your XULRunner-based>n.jar</code> to the <code>chrome</code> directory of your XULRunn
> application.>er-based application.
n90      <li>Copy <tt>components/venkman-service.js</tt> to the <tt>n90      <li>Copy <code>components/venkman-service.js</code> to the 
>components</tt> directory of your application.><code>components</code> directory of your application.
n92      <li>Add <code>&lt;script src="<a class=" external" href="chn92      <li>Add <code>&lt;script src="<a class=" external" href="ch
>rome://venkman/content/venkman-overlay.js" rel="freelink">chrome:>rome://venkman/content/venkman-overlay.js" rel="freelink">chrome:
>//venkman/content/venkman-overlay.js</a>"/&gt;</code> to one of y>//venkman/content/venkman-overlay.js</a>" /&gt;</code> to one of 
>our XUL windows.>your XUL windows.
n96      <li>Add the following lines to your <tt>chrome/chrome.manifn96      <li>Add the following lines to your <code>chrome/chrome.man
>est</tt>:>ifest</code>:
n138      <br>n138      &nbsp;
tt145    </p>
146    <p>
145    </p>{{ languages( { "ja": "ja/Debugging_a_XULRunner_Applicati147      {{ languages( { "ja": "ja/Debugging_a_XULRunner_Application
>on" } ) }}>" } ) }}
148    </p>
149    <p>
150      &nbsp;
151    </p>
152    <p>
153      I get errors about not being able to open&nbsp;contentAreaU
 >tils.js,&nbsp;contentAreaDD.js,&nbsp;findUtils.js, or&nbsp;conten
 >tAreaUtils.js...
154    </p>
155    <p>
156      Inspired by&nbsp;<a class=" external" href="http://article.
 >gmane.org/gmane.comp.mozilla.devel.jsdebugger/859">http://article
 >.gmane.org/gmane.comp.mozilla.devel.jsdebugger/859</a>&nbsp;I ext
 >racted&nbsp;venkman.jar, opened&nbsp;venkman\content\venkman\venk
 >man-scripts.xul and changed:
157    </p>
158    <p>
159      {{{
160    </p>
161    <p>
162      &nbsp;
163    </p>
164    <p>
165      @@ -54,11 +54,11 @@
166    </p>
167    <p>
168      &nbsp;&nbsp; &nbsp; &lt;script src="<a class=" external" hr
 >ef="chrome://global/content/nsTransferable.js" rel="freelink">chr
 >ome://global/content/nsTransferable.js</a>" /&gt;
169    </p>
170    <p>
171      &nbsp;&nbsp; &nbsp; &lt;script src="<a class=" external" hr
 >ef="chrome://global/content/nsClipboard.js" rel="freelink">chrome
 >://global/content/nsClipboard.js</a>" /&gt;
172    </p>
173    <p>
174      &nbsp;&nbsp; &nbsp; &lt;script src="<a class=" external" hr
 >ef="chrome://global/content/nsDragAndDrop.js" rel="freelink">chro
 >me://global/content/nsDragAndDrop.js</a>" /&gt;
175    </p>
176    <p>
177      - &nbsp; &nbsp;&lt;script src="<a class=" external" href="c
 >hrome://communicator/content/contentAreaUtils.js" rel="freelink">
 >chrome://communicator/content/contentAreaUtils.js</a>" /&gt;
178    </p>
179    <p>
180      - &nbsp; &nbsp;&lt;script src="<a class=" external" href="c
 >hrome://communicator/content/contentAreaDD.js" rel="freelink">chr
 >ome://communicator/content/contentAreaDD.js</a>" /&gt;
181    </p>
182    <p>
183      - &nbsp; &nbsp;&lt;script src="<a class=" external" href="c
 >hrome://communicator/content/findUtils.js" rel="freelink">chrome:
 >//communicator/content/findUtils.js</a>" /&gt;
184    </p>
185    <p>
186      - &nbsp; &nbsp;&lt;script src="<a class=" external" href="c
 >hrome://browser/content/contentAreaUtils.js" rel="freelink">chrom
 >e://browser/content/contentAreaUtils.js</a>" /&gt;
187    </p>
188    <p>
189      + &nbsp; &nbsp;&lt;script src="<a class=" external" href="c
 >hrome://global/content/contentAreaUtils.js" rel="freelink">chrome
 >://global/content/contentAreaUtils.js</a>" /&gt;
190    </p>
191    <p>
192      + &nbsp; &nbsp;&lt;script src="<a class=" external" href="c
 >hrome://global/content/contentAreaDD.js" rel="freelink">chrome://
 >global/content/contentAreaDD.js</a>" /&gt;
193    </p>
194    <p>
195      &nbsp;&nbsp; &nbsp; &lt;script src="<a class=" external" hr
 >ef="chrome://global/content/findUtils.js" rel="freelink">chrome:/
 >/global/content/findUtils.js</a>" /&gt;
196    </p>
197    <p>
198      + &nbsp; &nbsp;&lt;script src="<a class=" external" href="c
 >hrome://global/content/contentAreaUtils.js" rel="freelink">chrome
 >://global/content/contentAreaUtils.js</a>" /&gt;
199    </p>
200    <p>
201      + &nbsp; &nbsp;&lt;script src="<a class=" external" href="c
 >hrome://global/content/findUtils.js" rel="freelink">chrome://glob
 >al/content/findUtils.js</a>" /&gt;
202    </p>
203    <p>
204      &nbsp;&nbsp; &nbsp; &lt;script src="<a class=" external" hr
 >ef="chrome://global/content/strres.js" rel="freelink">chrome://gl
 >obal/content/strres.js</a>" /&gt;
205    </p>
206    <p>
207      }}}
208    </p>

Back to History