| 
									
										
										
										
											2015-08-30 22:31:25 -07:00
										 |  |  | # Setting Up Symbol Server in Debugger
 | 
					
						
							| 
									
										
										
										
											2014-11-10 16:09:13 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 11:31:12 +08:00
										 |  |  | Note that because released Electron builds are heavily optimized, debugging is | 
					
						
							| 
									
										
										
										
											2014-11-10 16:09:13 +08: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 11:31:12 +08:00
										 |  |  | The official symbol server URL for Electron is | 
					
						
							| 
									
										
										
										
											2014-11-10 23:24:13 +08:00
										 |  |  | http://54.249.141.255:8086/atom-shell/symbols. | 
					
						
							| 
									
										
										
										
											2015-08-30 22:31:25 -07:00
										 |  |  | You cannot visit this URL directly, you must add it to the symbol path of your | 
					
						
							| 
									
										
										
										
											2014-11-10 16:09:13 +08:00
										 |  |  | debugging tool. In the examples below, a local cache directory is used to avoid | 
					
						
							| 
									
										
										
										
											2015-08-30 22:31:25 -07:00
										 |  |  | repeatedly fetching the PDB from the server. Replace `c:\code\symbols` with an | 
					
						
							| 
									
										
										
										
											2014-11-10 16:09:13 +08:00
										 |  |  | appropriate cache directory on your machine. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-30 22:31:25 -07:00
										 |  |  | ## Using the Symbol Server in Windbg
 | 
					
						
							| 
									
										
										
										
											2014-11-10 16:09:13 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | The Windbg symbol path is configured with a string value delimited with asterisk | 
					
						
							| 
									
										
										
										
											2015-04-16 11:31:12 +08:00
										 |  |  | characters. To use only the Electron symbol server, add the following entry to | 
					
						
							| 
									
										
										
										
											2015-08-30 22:31:25 -07:00
										 |  |  | your symbol path (__Note:__ you can replace `c:\code\symbols` with any writable | 
					
						
							| 
									
										
										
										
											2014-11-10 16:09:13 +08:00
										 |  |  | directory on your computer, if you'd prefer a different location for downloaded | 
					
						
							|  |  |  | symbols): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2014-11-10 23:24:13 +08:00
										 |  |  | SRV*c:\code\symbols\*http://54.249.141.255:8086/atom-shell/symbols | 
					
						
							| 
									
										
										
										
											2014-11-10 16:09:13 +08: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 23:24:13 +08: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 16:09:13 +08: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
 | 
					
						
							|  |  |  | ``` |