EDIT Clarified, I meant the extended exent ringbugger stacktraces described by Jonathan Kehayias.
I recently discovered it was possible to get link.exe, dumpbin.exe, etc to download symbols from a symbol server. SQL Server has the ability to capture its own call traces through extended events. Traceflag 3656 lets you decode these stack traces with symbol files. As per Paul Randal's blog, you need to actually put the symbol files in the sql server binn folder, and it wouldn't use the symbol server. I decided to investigate to see how true this is. Using RohitABs API Monitor, I was able to see the following calls being made to DbgHelp.dll:
ImagehlpApiVersion ( ) SymSetOptions ( SYMOPT_DEFERRED_LOADS | SYMOPT_LOAD_LINES | SYMOPT_UNDNAME ) SymInitialize ( GetCurrentProcess(), "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER2012\MSSQL\Binn\;C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER2012\MSSQL\BINN;symsrv*symsrv.dll*c:\symbols*http://msdl.microsoft.com/download/symbols;C:\Windows;C:\Windows\system32", TRUE ) SymRegisterCallback64 ( GetCurrentProcess(), 0x000007fec5a77810, 0 ) /* The following SymGetSymFromAddr() calls happen because fInvadeProcess was set to true */ SymGetSymFromAddr ( GetCurrentProcess(), 3313710117, 0x000000001b06c060, 0x000000001b06b348 ) SymGetSymFromAddr ( GetCurrentProcess(), 3313710116, 0x000000001b06c060, 0x000000001b06b348 ) . . . . . . . . . SymCleanup ( GetCurrentProcess() )
So it looks like my
_NT_SYMBOL_PATH, with the symbol server is being added to the search path of SymInitialize(). If that is the case, why aren't symbols being downloaded from the symbol server?