How to get a stacktrace with WinDbg

  • Revision slug: How_to_get_a_stacktrace_with_WinDbg
  • Revision title: How to get a stacktrace with WinDbg
  • Revision id: 59678
  • Created:
  • Creator: Nickolay
  • Is current revision? No
  • Comment add [[Category:Developing Mozilla:Articles]]

Revision Content

Introduction

Sometimes you need to get a stacktrace (call stack) for a Firefox crash or hang but Talkback fails because it's a special crasher or a hang. This article describes how to get a stacktrace in those cases with WinDbg on Windows.

Requirements

To get such a stacktrace you need to install the following software:

Debugging Tools for Windows

Microsoft distributes the Debugging Tools for Windows for free, those include WinDbg which you will need here. Download it from for 32-bit versions of Windows (if you own a 64-bit version of Windows, follow the link on that page to the 64-bit version). Then install it, the standard settings in the installation process are fine.

A Firefox version for developers

You need a special Firefox version with which you can get good results from WinDbg. It is a current version built by a developer from the official source code with no official branding enabled. Such a current trunk version can be found under . Download that file and unzip it somewhere.

Debugging

First you have to start WinDbg via Start->Programs->Debugging Tools for Windows->WinDbg. Now open the firefox.exe executable you downloaded before via File->Open Executable... You should now see a text window with some output in it and a input field below it. Enter in the input field these lines
.sympath SRV*c:\symbols*http://www.mcsmurf.de/mozilla/ff-symbols/
.symfix+ c:\symbols
.reload /f

Now wait for the symbols to download. This may take some time. Now run Firefox via Debug->Go and try to reproduce the crasher or hang you are seeing. Switch back to WinDbg and look if there is some new text in the WinDbg Command window saying "Access violation" or similar. If there is not, click on Debug->Break (most likely you have to do this when you want to debug a hang). You should now see a input field again, enter <tt>kp</tt> there, this will give you the so-called stacktrace. Now it might take a while until you get some output, it needs to download between 10 and 20MB from the internet. Wait until it is done, then mark the text in that window and copy it into your clipboard with Ctrl+C so you can paste the stacktrace as a bug comment if needed.

Revision Source

<p>
</p>
<h3 name="Introduction"> Introduction </h3>
<p>Sometimes you need to get a stacktrace (call stack) for a Firefox crash or hang but Talkback fails because it's a special crasher or a hang. This article describes how to get a stacktrace in those cases with WinDbg on Windows.
</p>
<h3 name="Requirements"> Requirements </h3>
<p>To get such a stacktrace you need to install the following software:
</p>
<h4 name="Debugging_Tools_for_Windows"> Debugging Tools for Windows </h4>
<p>Microsoft distributes the Debugging Tools for Windows for free, those include WinDbg which you will need here. Download it from <a class="external" href="http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx"> for 32-bit versions of Windows (if you own a 64-bit version of Windows, follow the link on that page to the 64-bit version). Then install it, the standard settings in the installation process are fine.
</a></p><a class="external" href="http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx">
<h4 name="A_Firefox_version_for_developers"> A Firefox version for developers </h4>
</a><p><a class="external" href="http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx">You need a special Firefox version with which you can get good results from WinDbg. It is a current version built by a developer from the official source code with no official branding enabled. Such a current trunk version can be found under </a><a class="external" href="http://www.mcsmurf.de/mozilla/firefox-trunk-20060119.zip">. Download that file and unzip it somewhere.
</a></p><a class="external" href="http://www.mcsmurf.de/mozilla/firefox-trunk-20060119.zip">
<h3 name="Debugging"> Debugging </h3>
First you have to start WinDbg via Start-&gt;Programs-&gt;Debugging Tools for Windows-&gt;WinDbg. Now open the firefox.exe executable you downloaded before via File-&gt;Open Executable... You should now see a text window with some output in it and a input field below it. Enter in the input field these lines<pre>.sympath SRV*c:\symbols*http://www.mcsmurf.de/mozilla/ff-symbols/
.symfix+ c:\symbols
.reload /f</pre>
<p>Now wait for the symbols to download. This may take some time. Now run Firefox via Debug-&gt;Go and try to reproduce the crasher or hang you are seeing. Switch back to WinDbg and look if there is some new text in the WinDbg Command window saying "Access violation" or similar. If there is not, click on Debug-&gt;Break (most likely you have to do this when you want to debug a hang). You should now see a input field again, enter <tt>kp</tt> there, this will give you the so-called stacktrace. Now it might take a while until you get some output, it needs to download between 10 and 20MB from the internet. Wait until it is done, then mark the text in that window and copy it into your clipboard with Ctrl+C so you can paste the stacktrace as a bug comment if needed.
</p></a>
Revert to this revision