一个内存转储文件的分析调试过程
一个内存转储文件的分析调试过程
内核符号表
http://msdn.microsoft.com/zh-cn/windows/hardware/gg463028
《SQL2012实施与管理指南》P583 十三章 任务调度和CPU问题
当SQL产生重大意外时(服务不响应、崩溃等),会自动产生一个或者几个内存转储文件,这些文件
被称为“dump”。分析SQL产生的DUMP文件,可以帮助我们解决很多关于SQL OS的棘手问题
在很多场合都会有所使用。
为了调试一个SQLSERVER,需要做一些准备工作
1、安装调试器,使用微软提供的windbg
下载地址:https://files.cnblogs.com/lyhabc/winsdk_web.rar
http://msdn.microsoft.com/en-us/windows/hardware/hh852365
安装完debugging tools for Windows之后,windbg就已经被安装了
所谓dump(内存转储),其实就是当时内存状态的一个快照。如果不做任何配置,里面就是一些0101的二进制值,一般是无法读懂的。
为了能够将某个内存地址和某个函数或者变量对应起来,还需要一种东西,叫做符号表(symbol)
大家编译自己写的程序时,可以获得两种符号表,共有符号表和私有符号表。出于知识产权保护的原因,微软只是提供了公有符号表供大家下载
对于私有符号表,一般被看作是微软的知识产权和源代码一起被严格保护起来。
今天这里的这些实例只是用微软提供的公有符号表。微软的公有符号表可以在下面的链接下载到:
http://msdl.microsoft.com/download/symbols
1、打开windbg,在file菜单选择open crash dump,打开sqlserver产生的一个dump文件。这些文件会跟errorlog保存在同一个目录下,
一般叫SQLDMPR####.MDMP
1
2
3
4
5
6
7
8
9
10
11
12
13