mozilla

Compare Revisions

How to get a stacktrace with WinDbg

Change Revisions

Revision 338317:

Revision 338317 by teoli on

Revision 339795:

Revision 339795 by ethertank on

Title:
How to get a stacktrace with WinDbg
How to get a stacktrace with WinDbg
Slug:
How_to_get_a_stacktrace_with_WinDbg
How_to_get_a_stacktrace_with_WinDbg
Tags:
"Developing Mozilla"
"Developing Mozilla"
Content:

Revision 338317
Revision 339795
n7    <h3>n7    <h2 id="Introduction">
n9    </h3>n9    </h2>
n11      Sometimes you need to get a stacktrace (call stack) for a cn11      Sometimes you need to get a stacktrace (call stack) for a c
>rash or hang but <a class="external" href="http://kb.mozillazine.>rash or hang but <a class="external" href="http://kb.mozillazine.
>org/Talkback">Talkback</a> or <a class="external" href="http://kb>org/Talkback">Talkback</a> or <a class="external" href="http://kb
>.mozillazine.org/Breakpad" title="http://kb.mozillazine.org/Break>.mozillazine.org/Breakpad" title="http://kb.mozillazine.org/Break
>pad">Breakpad</a> fail because it's a special crasher or a hang. >pad">Breakpad</a> fail because it's a special crasher or a hang. 
>This article describes how to get a stacktrace in those cases wit>This article describes how to get a stacktrace in those cases wit
>h WinDbg on Windows.&nbsp; (To get a stacktrace for Thunderbird o>h WinDbg on Windows. (To get a stacktrace for Thunderbird or some
>r some other product, substitute the product name where ever you > other product, substitute the product name where ever you see Fi
>see Firefox in this instructions.)>refox in this instructions.)
n13    <h3 id="Requirements" name="Requirements">n13    <h2 id="Requirements" name="Requirements">
n15    </h3>n15    </h2>
n19    <h4 id="Debugging_Tools_for_Windows" name="Debugging_Tools_fon19    <h3 id="Debugging_Tools_for_Windows" name="Debugging_Tools_fo
>r_Windows">>r_Windows">
n21    </h4>n
22    <p>
23      Microsoft distributes the Debugging Tools for Windows for f
>ree, those include WinDbg which you will need here. Download it f 
>rom <a class="external" href="http://www.microsoft.com/whdc/devto 
>ols/debugging/installx86.mspx">Install Debugging Tools for Window 
>s</a> <strong><a class="external" href="http://www.microsoft.com/ 
>whdc/devtools/debugging/installx86.mspx">32-bit Version</a></stro 
>ng> .&nbsp; (<em>You'll want the 32-bit version</em>, even if you 
> are using a 64-bit version of Windows)&nbsp; Then install it, th 
>e standard settings in the installation process are fine. 
24    </p>
25    <h4 id="A_Firefox_nightly_or_release" name="A_Firefox_nightly
>_or_release"> 
26      A Firefox nightly or release
27    </h4>
28    <p>
29      You need a Firefox version for which symbols are availables
> from the <a href="/en/Using_the_Mozilla_symbol_server" title="en 
>/Using_the_Mozilla_symbol_server">Mozilla symbol server</a> to us 
>e with WinDbg. You can use any <a class="external" href="http://f 
>tp.mozilla.org/pub/mozilla.org/firefox/nightly/">official nightly 
> build</a> or released version of Firefox from Mozilla. You can f 
>ind the latest trunk nightly builds under <a class="external" hre 
>f="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest- 
>trunk/" rel="freelink">http://ftp.mozilla.org/pub/mozilla.o.../la 
>test-trunk/</a>. 
30    </p>
31    <h3 id="Debugging" name="Debugging">
32      Debugging
nn23      Microsoft distributes the Debugging Tools for Windows for f
 >ree, those include WinDbg which you will need here. Download it f
 >rom <a class="external" href="http://www.microsoft.com/whdc/devto
 >ols/debugging/installx86.mspx">Install Debugging Tools for Window
 >s</a> <strong><a class="external" href="http://www.microsoft.com/
 >whdc/devtools/debugging/installx86.mspx">32-bit Version</a></stro
 >ng> . (<em>You'll want the 32-bit version</em>, even if you are u
 >sing a 64-bit version of Windows) Then install it, the standard s
 >ettings in the installation process are fine.
24    </p>
25    <h3 id="A_Firefox_nightly_or_release" name="A_Firefox_nightly
 >_or_release">
26      A Firefox nightly or release
27    </h3>
28    <p>
29      You need a Firefox version for which symbols are availables
 > from the <a href="/en-US/docs/Using_the_Mozilla_symbol_server" t
 >itle="Using_the_Mozilla_symbol_server">Mozilla symbol server</a> 
 >to use with WinDbg. You can use any <a class="external" href="htt
 >p://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/">official ni
 >ghtly build</a> or released version of Firefox from Mozilla. You 
 >can find the latest trunk nightly builds under <a class="external
 >" href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/la
 >test-trunk/" rel="freelink">http://ftp.mozilla.org/pub/mozilla.o.
 >../latest-trunk/</a>.
30    </p>
31    <h2 id="Debugging" name="Debugging">
32      Debugging
33    </h2>
34    <p>
35      To begin debugging, ensure that Firefox is not already runn35      To begin debugging, ensure that Firefox is not already runn
>ing and open WinDbg from the Start menu.&nbsp; (Start-&gt;All Pro>ing and open WinDbg from the Start menu. (Start-&gt;All Programs-
>grams-&gt;Debugging Tools for Windows-&gt;WinDbg)&nbsp; Next, ope>&gt;Debugging Tools for Windows-&gt;WinDbg) Next, open the <stron
>n the <strong>"File"</strong> menu and choose <strong>"Open Execu>g>"File"</strong> menu and choose <strong>"Open Executable..."</s
>table..."</strong>.&nbsp; In the file chooser window that appears>trong>. In the file chooser window that appears, open the firefox
>, open the firefox.exe executable in your Firefox program folder >.exe executable in your Firefox program folder (C:\Program Files\
>(C:\Program Files\Mozilla Firefox).>Mozilla Firefox).
n38      You should now see a "Command" text window with debug outpun38      You should now see a "Command" text window with debug outpu
>t at the top and an input box at the bottom.&nbsp; Before debuggi>t at the top and an input box at the bottom. Before debugging can
>ng can start, several commands must be entered into the one-line > start, several commands must be entered into the one-line input 
>input box at the bottom of the Command window.>box at the bottom of the Command window.
39    </p>
40    <p>
41      &nbsp;
n50        <li>Some commands start with a period (.) or a pipe charan47        <li>Some commands start with a period (.) or a pipe chara
>cter (|), which is required.&nbsp; (The keystroke for a pipe char>cter (|), which is required. (The keystroke for a pipe character 
>acter on US&nbsp;keyboards is SHIFT+\)>on US keyboards is SHIFT+\)
n56    <h4 id="Start_debugging">n53    <h3 id="Start_debugging">
n58    </h4>n55    </h3>
n60      Now that Firefox is opened in the debugger, you need to conn57      Now that Firefox is opened in the debugger, you need to con
>figure your WinDbg to download symbols from the Mozilla symbol se>figure your WinDbg to download symbols from the Mozilla symbol se
>rver.&nbsp; To load the symbols, enter the three commands below, >rver. To load the symbols, enter the three commands below, pressi
>pressing enter after each one.&nbsp; (More details are available >ng enter after each one. (More details are available at <a href="
>at <a href="/en/Using_the_Mozilla_symbol_server" title="en/Using_>/en-US/docs/Using_the_Mozilla_symbol_server" title="Using_the_Moz
>the_Mozilla_symbol_server">Using the Mozilla symbol server</a>.)>illa_symbol_server">Using the Mozilla symbol server</a>.)
n68      Now wait for the symbols to download.&nbsp; This may take sn65      Now wait for the symbols to download. This may take some ti
>ome time depending on your connection speed; the total size of th>me depending on your connection speed; the total size of the down
>e download is around 70MB.&nbsp;&nbsp; WinDbg will show "Busy"&nb>load is around 70MB. WinDbg will show "Busy" at the bottom of the
>sp;at the bottom of the application window until the download is > application window until the download is complete.
>complete. 
n71      Once the download is complete, you need to configure WinDbgn68      Once the download is complete, you need to configure WinDbg
> to examine child processes, ignore a specific event caused by Fl> to examine child processes, ignore a specific event caused by Fl
>ash Player, and record a log of loaded modules.&nbsp; You will al>ash Player, and record a log of loaded modules. You will also wan
>so want to open a log file to save data you collect.&nbsp; To do >t to open a log file to save data you collect. To do this, enter 
>this, enter these four commands, pressing enter after each one.>these four commands, pressing enter after each one.
n84      Now run Firefox by opening the <strong>Debug</strong> menu n81      Now run Firefox by opening the <strong>Debug</strong> menu 
>and clicking <strong>Go</strong>.&nbsp; <strong>While Firefox is >and clicking <strong>Go</strong>. <strong>While Firefox is runnin
>running, you will not be able to type any commands into the debug>g, you will not be able to type any commands into the debugger.</
>ger.</strong>&nbsp; After it starts, try to reproduce the crash o>strong> After it starts, try to reproduce the crash or hanging is
>r hanging issue that you are seeing.>sue that you are seeing.
n87      If Firefox fails to start, and you see lines of text follown84      If Firefox fails to start, and you see lines of text follow
>ed by a command prompt in the debugger, a "breakpoint" may have b>ed by a command prompt in the debugger, a "breakpoint" may have b
>een triggered. &nbsp;If you are prompted for a command but don't >een triggered. If you are prompted for a command but don't see an
>see an error about a crash, go back to the <strong>Debug</strong>> error about a crash, go back to the <strong>Debug</strong> menu 
> menu and press <strong>Go</strong>.>and press <strong>Go</strong>.
n90      Once the browser crashes, you will see an error (such as "An87      Once the browser crashes, you will see an error (such as "A
>ccess violation") in the WinDbg Command window.&nbsp; If&nbsp;Fir>ccess violation") in the WinDbg Command window. If Firefox hangs 
>efox hangs and there is no command prompt available in the debugg>and there is no command prompt available in the debugger, open th
>er, open the <strong>Debug</strong> menu and choose <strong>Break>e <strong>Debug</strong> menu and choose <strong>Break.</strong> 
>.</strong>&nbsp; Once the browser has crashed or been stopped, co>Once the browser has crashed or been stopped, continue with the s
>ntinue with the steps below.>teps below.
n92    <h4 id="After_the_crash_or_hang">n89    <h3 id="After_the_crash_or_hang">
n94    </h4>n91    </h3>
n96      You need to capture the debug information to include in a bn93      You need to capture the debug information to include in a b
>ug comment or support request.&nbsp; Enter these three commands, >ug comment or support request. Enter these three commands, one at
>one at a time, to get the stacktrace, crash/hang analysis and log> a time, to get the stacktrace, crash/hang analysis and log of lo
> of loaded modules.&nbsp; (Again, press Enter after each command.>aded modules. (Again, press Enter after each command.)
>) 
n104      After these steps are completed, find the file <strong>c:\fn101      After these steps are completed, find the file <strong>c:\f
>irefox-debug-(Today's Date).txt</strong> on your hard drive.&nbsp>irefox-debug-(Today's Date).txt</strong> on your hard drive. To p
>; To provide the information to the development community, submit>rovide the information to the development community, submit this 
> this file with a <a class="external" href="http://support.mozill>file with a <a class="external" href="http://support.mozilla.com/
>a.com/" title="http://support.mozilla.com/">support request</a> o>" title="http://support.mozilla.com/">support request</a> or atta
>r attach it to a related bug on <a class="link-https" href="https>ch it to a related bug on <a class="link-https" href="https://bug
>://bugzilla.mozilla.org/" title="https://bugzilla.mozilla.org/">B>zilla.mozilla.org/" title="https://bugzilla.mozilla.org/">Bugzill
>ugzilla</a>.>a</a>.
n106    <h4 id="Producing_a_minidump">n103    <h3 id="Producing_a_minidump">
n108    </h4>n105    </h3>
n110      Sometimes the stacktrace alone is not enough information fon107      Sometimes the stacktrace alone is not enough information fo
>r a developer to figure out what went wrong. A developer may ask >r a developer to figure out what went wrong. A developer may ask 
>you for a "minidump"&nbsp;or a "full memory dump", which are file>you for a "minidump" or a "full memory dump", which are files con
>s containing more information about the process. <a href="/en/Cap>taining more information about the process. <a href="/en-US/docs/
>turing_a_minidump" title="en/Capturing a minidump">You can easily>Capturing_a_minidump" title="Capturing a minidump">You can easily
> produce minidumps from WinDBG and provide them to developers</a>> produce minidumps from WinDBG and provide them to developers</a>
>.>.
n116      Q: I am running Windows 7 (32-bit or 64-bit) and I&nbsp;seen113      Q: I am running Windows 7 (32-bit or 64-bit) and I see an e
> an exception in the WinDbg command window that says 'ntdll32!Ldr>xception in the WinDbg command window that says 'ntdll32!LdrpDoDe
>pDoDebuggerBreak+0x2c' or 'ntdll32!LdrpDoDebuggerBreak+0x30'. Wha>buggerBreak+0x2c' or 'ntdll32!LdrpDoDebuggerBreak+0x30'. What do 
>t do I&nbsp;do now?>I do now?
n128      Make sure you enter them one at a time and press enter aften125      Make sure you enter them one at a time and press enter afte
>r each one.&nbsp; If you use the 64-bit version of Windows, you n>r each one. If you use the 64-bit version of Windows, you need to
>eed to replace "ntdll" in these commands with "ntdll32".<br>> replace "ntdll" in these commands with "ntdll32".<br>
nn133 
n151      Q: Should I&nbsp;click yes or no when WinDbg asks me to "San149      Q: Should I click yes or no when WinDbg asks me to "Save in
>ve information for workspace?">formation for workspace?"
n162    <h3 id="See_Also" name="See_Also">n160    <h2 id="See_also" name="See_also">
163      See Also161      See also
164    </h3>162    </h2>
n167        <a href="/en/Using_the_Mozilla_symbol_server" title="en/Un165        <a href="/en-US/docs/Using_the_Mozilla_symbol_server" tit
>sing_the_Mozilla_symbol_server">symbol server</a> Maps addresses >le="Using_the_Mozilla_symbol_server">symbol server</a> Maps addre
>to human readable strings.>sses to human readable strings.
t170        <a href="/en/Using_the_Mozilla_source_server" title="en/Ut168        <a href="/en-US/docs/Using_the_Mozilla_source_server" tit
>sing_the_Mozilla_source_server">source server</a> Maps addresses >le="Using_the_Mozilla_source_server">source server</a> Maps addre
>to source code lines>sses to source code lines

Back to History