调试SQLSERVER生成dump文件的方法.docx

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
调试SQLSERVER生成dump文件的方法

调试SQLSERVER生成dump文件的方法?我们知道调试程序主要有两种方法一种是:live debugging (附加进程使进程hang住)生产环境最好不要live debugging?一种是:post-mortem debugging or reading dump files (生成dump文件然后进行分析)?现在介绍一下如何生成dump文件,以及各种方法的差异第一步:确定SQLSERVER的进程ID由于我的机器安装了四个SQLSERVER实例,所以看到会有四个进程方法1:在cmd窗口输入下面命令tasklist | find /i "sqlservr"?方法2:打开任务管理进行查看?方法3:在SSMS里执行下面sql语句SELECT SERVERPROPERTY('PROCESSID') AS sqlpid?方法4:从SQL errorlog里获取进程IDEXEC[sys].[sp_readerrorlog]第二步:生成DUMP文件方法1:使用SqlDumper最一般的方法就是使用SQLSERVER内部的SqlDumper程序,如果使用默认安装路径default installation path 会是C:\Program Files\Microsoft SQL Server\100\Shared??语法如下:SqlDumper <process id (PID)><thread id (TID)><Flags:Minidump Flags><SQLInfoPtr><Dump Directory>如果对语法不太熟悉,可以使用/? 查看帮助一般我们会使用到的flag如下:0x0120 – Minidump(只会dump出栈和所加载的模块,是最小的dump类型,并且这是sqlserver正常情况下自动生成的dump类型)0x01100 – Full Dump(这种dump类型包含整个进程空间,如果是64位系统并且SQLSERVER占用大量内存那么dump出来的文件将会非常大)0x8100 – Filtered Dump(Filtered Dump 会dump出?Stolen Memory和buffer pool部分)?SqlDumper这个工具不但只可以dump出sqlserver,也可以dump出其他软件,进而生成dump文件?示例:Minidump: sqldumper 311600x01200 C:\TempFullDump: sqldumper 311600x011000 C:\TempFiltered Dump: sqldumper 311600x81000 C:\Temp?SQL进程里当前有45个线程生成的minidump文件dump文件的命名规则一般是:SQLDmpr####.mdmp??方法2:使用debugger tools例如使用WINDBG或其他debugger工具,将debugger附加到进程(使用PID)里面WINDBG的下载地址:/en-us/windows/hardware/hh852365下载下来进行安装,当然这时候可以同时下载公有符号包下载地址:/zh-cn/windows/hardware/gg463028#Download_windows安装好之后,就可以开始菜单看到WINDBG程序,点击他启动选择Attach to a Process。。。?我们附加到进程ID为2168的这个sqlserver进程一旦连接上,我们只需要使用.dump命令就能生成dump文件,语法如下:Options are: /a -Create dumps forall processes (requires -u) 创建所有进程的dump文件需要-u 选项/b[a]- Package dumpin a CAB anddeletedump包装dump文件为CAB格式然后删除dump文件/c <comment>-Add a comment (not supported inall formats) 添加注释,不支持所有格式/j <addr>- Provide a JIT_DEBUG_INFO address 提供一个JIT_DEBUG_INFO地址/f -Create a legacy style fulldump创建一个历史full dump/m[acdfFhiprRtuw]-Create a minidump (default) 创建一个mini dump文件(默认选项)/o - Overwrite any existing file覆盖任何已经存在的文件/u - Append unique identifier todump name 追加唯一标识符到dump文件名“.dump /ma”命令对于创建一

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档