编辑澄清,我的意思是Jonathan Kehayias描述了扩展的存在的环形调试器堆栈跟踪。 SQL Server能够通过扩展事件捕获其自己的调用跟踪。 Traceflag 3656使您可以使用符号文件解码这些堆栈跟踪。根据Paul Randal的博客,您实际上需要将符号文件放在sql server binn文件夹中,并且它不会使用符号服务器。我决定进行调查,以了解这是多么真实。使用RohitABs API Monitor,我可以看到对DbgHelp.dll进行了以下调用:

已添加到SymInitialize()的搜索路径中。如果是这样,为什么不从符号服务器下载符号?

#1 楼

我对您的问题的标题感到有些困惑

SQL Server或就此而言,除WinDbg或特殊符号检索器之外的任何其他应用程序都无法从ms符号服务器下载符号

您的意思是您所链接的博客中提到的在symchk上使用了sqlserver.exe

获取任何应用程序符号的一种简单方法是



设置_NT_SYMBOL_PATH

_NT_SYMBOL_PATH=SRV*F:\symbols*http://msdl.microsoft.com/download/symbols


在Internet连接有效的WinDbg中打开可执行文件

windbg SqlServer.exe

一旦WinDbg打开了应用程序

问题.reload /f,WinDbg将获取所有符号文件并将它们缓存在下游存储中(在上述情况下为F:\Symbols

一旦相关的.pdb文件在缓存中可用,symsrv.dll将使用缓存的符号文件,并且不会寻找有效的Internet连接

不要将任何.pdb文件复制到任何本地文件夹中

只需使用_NT_SYMBOL_PATH即可满足您的所有符号需求

评论


请正确使用格式。到目前为止,您的两个答案均以其原始形式出现了可怕的格式化问题。

– 0xC0000022L♦
13年5月5日在2:07

抱歉,我的意思是说扩展事件使您可以访问的环形缓冲区堆栈跟踪。

–贾斯汀·迪林(Justin Dearing)
13年5月5日14:38

@Justin Iam对SqlServer不太熟悉,我读了这篇文章,看到他提到SqlServer.pdb必须与sqlserver.exe位于同一目录中,任何显示调用堆栈的exe都应具有设置符号路径的选项,例如procmon来自sysinternals的将显示没有符号的原始堆栈,或者如果您填充符号路径选项,它将显示已解析符号的堆栈跟踪,我认为sqlserver可能也有这样的选项

– blabb
13年5月6日在19:33