2014-11-10 08:09:13 +00:00
|
|
|
# Setting up symbol server in debugger
|
|
|
|
|
|
|
|
Debug symbols allow you to have better debugging sessions. They have information
|
|
|
|
about the functions contained in executables and dynamic libraries and provide
|
|
|
|
you with information to get clean call stacks. A Symbol Server allows the
|
|
|
|
debugger to load the correct symbols, binaries and sources automatically without
|
|
|
|
forcing users to download large debugging files. The server functions like
|
|
|
|
[Microsoft's symbol server](http://support.microsoft.com/kb/311503) so the
|
|
|
|
documentation there can be useful.
|
|
|
|
|
2015-04-16 03:31:12 +00:00
|
|
|
Note that because released Electron builds are heavily optimized, debugging is
|
2014-11-10 08:09:13 +00:00
|
|
|
not always easy. The debugger will not be able to show you the content of all
|
|
|
|
variables and the execution path can seem strange because of inlining, tail
|
|
|
|
calls, and other compiler optimizations. The only workaround is to build an
|
|
|
|
unoptimized local build.
|
|
|
|
|
2015-04-16 03:31:12 +00:00
|
|
|
The official symbol server URL for Electron is
|
2014-11-10 15:24:13 +00:00
|
|
|
http://54.249.141.255:8086/atom-shell/symbols.
|
2014-11-10 08:09:13 +00:00
|
|
|
You cannot visit this URL directly: you must add it to the symbol path of your
|
|
|
|
debugging tool. In the examples below, a local cache directory is used to avoid
|
|
|
|
repeatedly fetching the PDB from the server. Replace `c:\code\symbols` with an
|
|
|
|
appropriate cache directory on your machine.
|
|
|
|
|
|
|
|
## Using the symbol server in Windbg
|
|
|
|
|
|
|
|
The Windbg symbol path is configured with a string value delimited with asterisk
|
2015-04-16 03:31:12 +00:00
|
|
|
characters. To use only the Electron symbol server, add the following entry to
|
2014-11-10 08:09:13 +00:00
|
|
|
your symbol path (__note:__ you can replace `c:\code\symbols` with any writable
|
|
|
|
directory on your computer, if you'd prefer a different location for downloaded
|
|
|
|
symbols):
|
|
|
|
|
|
|
|
```
|
2014-11-10 15:24:13 +00:00
|
|
|
SRV*c:\code\symbols\*http://54.249.141.255:8086/atom-shell/symbols
|
2014-11-10 08:09:13 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
Set this string as `_NT_SYMBOL_PATH` in the environment, using the Windbg menus,
|
|
|
|
or by typing the `.sympath` command. If you would like to get symbols from
|
|
|
|
Microsoft's symbol server as well, you should list that first:
|
|
|
|
|
|
|
|
```
|
2014-11-10 15:24:13 +00:00
|
|
|
SRV*c:\code\symbols\*http://msdl.microsoft.com/download/symbols;SRV*c:\code\symbols\*http://54.249.141.255:8086/atom-shell/symbols
|
2014-11-10 08:09:13 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
## Using the symbol server in Visual Studio
|
|
|
|
|
|
|
|
<img src='http://mdn.mozillademos.org/files/733/symbol-server-vc8express-menu.jpg'>
|
|
|
|
<img src='http://mdn.mozillademos.org/files/2497/2005_options.gif'>
|
|
|
|
|
|
|
|
## Troubleshooting: Symbols will not load
|
|
|
|
|
|
|
|
Type the following commands in Windbg to print why symbols are not loading:
|
|
|
|
|
|
|
|
```
|
|
|
|
> !sym noisy
|
|
|
|
> .reload /f chromiumcontent.dll
|
|
|
|
```
|