windbg --sqlserver 实例 转
http://blog.csdn.net/obuntu/article/details/5962378
SQLSERVER DUMP 调试
在下面的对话框输入 ~ 会出现线程的信息
0:000> ~
. 0 Id: 384.608 Suspend: 1 Teb: 7ffdd000 Unfrozen
1 Id: 384.698 Suspend: 1 Teb: 7ffda000 Unfrozen
2 Id: 384.6a8 Suspend: 1 Teb: 7ffd9000 Unfrozen
3 Id: 384.6a4 Suspend: 1 Teb: 7ffd8000 Unfrozen
4 Id: 384.6b0 Suspend: 1 Teb: 7ffd7000 Unfrozen
5 Id: 384.6ac Suspend: 1 Teb: 7ffd6000 Unfrozen
6 Id: 384.6c8 Suspend: 1 Teb: 7ffd5000 Unfrozen
7 Id: 384.6dc Suspend: 1 Teb: 7ffd4000 Unfrozen
8 Id: 384.6e0 Suspend: 1 Teb: 7ffd3000 Unfrozen
9 Id: 384.108 Suspend: 1 Teb: 7ff9f000 Unfrozen
10 Id: 384.6e8 Suspend: 1 Teb: 7ff9e000 Unfrozen
11 Id: 384.6e4 Suspend: 1 Teb: 7ff9d000 Unfrozen
12 Id: 384.604 Suspend: 1 Teb: 7ff9c000 Unfrozen
13 Id: 384.714 Suspend: 1 Teb: 7ff9b000 Unfrozen
14 Id: 384.718 Suspend: 1 Teb: 7ff9a000 Unfrozen
15 Id: 384.71c Suspend: 1 Teb: 7ff99000 Unfrozen
16 Id: 384.720 Suspend: 1 Teb: 7ff98000 Unfrozen
17 Id: 384.728 Suspend: 1 Teb: 7ffdc000 Unfrozen
18 Id: 384.730 Suspend: 1 Teb: 7ff97000 Unfrozen
19 Id: 384.74c Suspend: 1 Teb: 7ff96000 Unfrozen
20 Id: 384.784 Suspend: 1 Teb: 7ff95000 Unfrozen
21 Id: 384.788 Suspend: 1 Teb: 7ff94000 Unfrozen
22 Id: 384.1e0 Suspend: 1 Teb: 7ff93000 Unfrozen
23 Id: 384.284 Suspend: 1 Teb: 7ff92000 Unfrozen
24 Id: 384.280 Suspend: 1 Teb: 7ff91000 Unfrozen
25 Id: 384.23c Suspend: 1 Teb: 7ff8f000 Unfrozen
26 Id: 384.3d0 Suspend: 1 Teb: 7ff8e000 Unfrozen
27 Id: 384.3d4 Suspend: 1 Teb: 7ff8d000 Unfrozen
28 Id: 384.3d8 Suspend: 1 Teb: 7ff8c000 Unfrozen
29 Id: 384.204 Suspend: 1 Teb: 7ff8b000 Unfrozen
30 Id: 384.43c Suspend: 1 Teb: 7ff8a000 Unfrozen
31 Id: 384.450 Suspend: 1 Teb: 7ff89000 Unfrozen
32 Id: 384.454 Suspend: 1 Teb: 7ff88000 Unfrozen
33 Id: 384.458 Suspend: 1 Teb: 7ff87000 Unfrozen
34 Id: 384.45c Suspend: 1 Teb: 7ff86000 Unfrozen
35 Id: 384.464 Suspend: 1 Teb: 7ff84000 Unfrozen
36 Id: 384.44c Suspend: 1 Teb: 7ff83000 Unfrozen
37 Id: 384.1e8 Suspend: 1 Teb: 7ffdb000 Unfrozen
38 Id: 384.1cc Suspend: 1 Teb: 7ff82000 Unfrozen
39 Id: 384.1684 Suspend: 1 Teb: 7ff80000 Unfrozen
40 Id: 384.c38 Suspend: 1 Teb: 7ff90000 Unfrozen
41 Id: 384.1048 Suspend: 1 Teb: 7ff85000 Unfrozen
42 Id: 384.140c Suspend: 1 Teb: 7ff7f000 Unfrozen
43 Id: 384.a18 Suspend: 1 Teb: 7ff81000 Unfrozen
在我的这个例子中,我的spid在循环运行一个select命令,从sysprocesses中,可以看到spid对应的kpid是488
spid kpid
51 0
52 488
488转化为16进制刚好为1e8 ,对应的序号是37。
那我们如果想看线程37的内容,可以先使用 ~37s命令切换到线程37的上下文中
0:000> ~37s
eax=00000000 ebx=3f20f344 ecx=1f8dcf08 edx=00000001 esi=000009b5 edi=00000000
eip=7c92e514 esp=3f20f238 ebp=3f20f29c iopl=0 nv up ei ng nz ac pe cy
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000297
ntdll!KiFastSystemCallRet:
7c92e514 c3 ret
看起来是CPU的寄存器信息,可惜这些还看不太懂,不然可以更深入了。
接着用k命令,查看具体的函数调用信息
0:037> k
ChildEBP RetAddr
3f20f234 7c92df5a ntdll!KiFastSystemCallRet
3f20f238 7c8025db ntdll!ZwWaitForSingleObject+0xc
3f20f29c 7c802542 kernel32!WaitForSingleObjectEx+0xa8
3f20f2b0 011e7ced kernel32!WaitForSingleObject+0x12
3f20f324 011e7ddb sqlservr!Np::StatusWriteNoComplPort+0x9f
3f20f354 011e7ea2 sqlservr!SNIStatusWriteNoComplPort+0x82
3f20f374 012a8ae0 sqlservr!TDSSNIClient::WriteStatus+0x6a
3f20f4a0 0153d30c sqlservr!write_data+0x1a6
3f20f4d0 0117492e sqlservr!flush_buffer+0xdf
3f20f6a0 015490b6 sqlservr!CKatmaiTds::SendRowImpl+0x2faf
3f20f6ac 01532f0d sqlservr!CValOdsRow::SetDataX+0x29
3f20f6bc 01532d8b sqlservr!SetMultData+0x1e
3f20f734 0154962f sqlservr!CEs::GeneralEval4+0xd0
3f20f740 01547825 sqlservr!CEs::Eval+0x13
3f20f7f8 015499af sqlservr!CXStmtQuery::ErsqExecuteQuery+0x409
3f20f85c 015401c3 sqlservr!CXStmtSelect::XretExecute+0x268
3f20f8f8 01540cc0 sqlservr!CMsqlExecContext::ExecuteStmts<1,1>+0x28d
3f20f9e0 01540686 sqlservr!CMsqlExecContext::FExecute+0x70e
3f20fa84 0153cf8c sqlservr!CSQLSource::Execute+0x598
3f20fc08 01539f79 sqlservr!process_request+0x2f0
从下面的内容,可以看出几点(个人观点:) )
3f20f354 011e7ea2 sqlservr!SNIStatusWriteNoComplPort+0x82
3f20f374 012a8ae0 sqlservr!TDSSNIClient::WriteStatus+0x6a
3f20f4a0 0153d30c sqlservr!write_data+0x1a6
3f20f4d0 0117492e sqlservr!flush_buffer+0xdf
3f20f7f8 015499af sqlservr!CXStmtQuery::ErsqExecuteQuery+0x409
3f20f85c 015401c3 sqlservr!CXStmtSelect::XretExecute+0x268
3f20f8f8 01540cc0 sqlservr!CMsqlExecContext::ExecuteStmts<1,1>+0x28d
3f20f9e0 01540686 sqlservr!CMsqlExecContext::FExecute+0x70e
从底往上看,可以看到这是一个select动作,进行select时,先对内存的一些缓存进行清除(flush_buffer),接着便是写入数据(write_data),然后再发送写状态(TDSSNIClient::WriteStatus),由于一直循环所以会有写未完成的提示(SNIStatusWriteNoComplPort)。这也基本符合一个select的动作。
如果遇到错误时,在函数调用中一般会抛出raiseerror等内容,类似如下:
00000000`220ce2d0 00000000`013a3d41 sqlservr!ex_raise2+0xcdd8bf
00000000`220ce630 00000000`02deb8ce sqlservr!ex_raise+0x51
这时,基本可以判断出现问题的原因了。
windbg --sqlserver 实例 转的更多相关文章
- (转)SQLServer实例讲解
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- SqlServer nvarchar中的中文字符匹配,更改SqlServer实例和数据库排序规则的办法
我们都知道在SqlServer中的nvarchar类型可以完美的存储诸如中文这种unicode字符,但是我们会发现有时候查询语句去查询nvarchar列的时候查不出来. 为什么nvarchar类型有时 ...
- 第十七章——配置SQLServer(4)——优化SQLServer实例的配置
原文:第十七章--配置SQLServer(4)--优化SQLServer实例的配置 前言: Sp_configure 可以用于管理和优化SQLServer资源,而且绝大部分配置都可以使用SQLServ ...
- 恢复SQLServer实例连接
原文:恢复SQLServer实例连接 译自: http://www.mssqltips.com/sqlservertip/2682/recover-access-to-a-sql-server-ins ...
- 修改Sqlserver实例默认排序规则
1.将sqlserver安装盘加载到虚拟光驱,这里加载到F:盘跟目录 2.cmd进入命令 3.输入命令: F:/Setup /QUIET /ACTION=REBUILDDATABASE /INSTAN ...
- Eclipse集成Hibernate操作Sqlserver实例
Eclipse搭建Hibernate开发环境,使用的数据库是Sqlserver2008 1.需要成功安装Eclipse,如果没有安装可以上网查资料. 2.Eclipse安装成功后,点击Help--&g ...
- VM环境下,快速复制多个SQLServer实例,环境调整
--windows机器名 sysprep.exe 勾选通用,并关机 --实例名 SELECT @@SERVERNAME ,serverproperty('servername') if server ...
- 转:更改SQLServer实例默认字符集
需求 安装数据库时,将字符集安装成了“SQL_Latin1_General_CP1_CI_AS”,现在需要将其更改为“Chinese_PRC_CI_AS”. 方法 重新生成系统数据库 ,然后还原配 ...
- 更改SQLServer实例默认字符集
转自http://www.cnblogs.com/fygh/archive/2012/05/15/2501598.html 需求 安装数据库时,将字符集安装成了“SQL_Latin1_General_ ...
随机推荐
- java迭代map
java迭代map: import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.ut ...
- oracle数据库cmd导出数据和导入数据
一:前言 每次我自己来导出oracle数据的数据进行备份的时候都是要看一遍记载的语句,还别说自己敲多了,也熟练了,但是还是不是很放心,所以就记载下来吧. 二:内容 (1).最简单,最直接的导入方式(这 ...
- linux认证上网
公司上网需要认证,linux命令行模式:curl -d "opr=pwdLogin&userName=用户名&pwd=密码&rememberPwd=1" h ...
- [bzoj1798][Ahoi2009]Seq——线段树+多重标记下传
题意 请你写一个数据结构,支持: 子序列同加 子序列同乘 统计子序列和 题目 线段树裸题,但对于我这种初学者还是非常难写. 我们维护两个标记,一个是在这个节点上作过的所有乘法操作,一个是加法操作,始终 ...
- [转]在树莓派上搭建LAMP服务
之前介绍过树莓派上LNMP环境的搭建方法,本文将详细介绍如何在树莓派上配置LAMP服务. 为LAMP,是最流行的服务器配置之一,LAMP的含义是: Linux - 操作系统 Apache - 网络服务 ...
- linux内核同步之每CPU变量、原子操作、内存屏障、自旋锁【转】
转自:http://blog.csdn.net/goodluckwhh/article/details/9005585 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 一每 ...
- Linux设备模型(3)_Uevent【转】
转自:http://www.wowotech.net/device_model/uevent.html 1. Uevent的功能 Uevent是Kobject的一部分,用于在Kobject状态发生改变 ...
- Python学习笔记 chapter 2基础
程序输入 >>> print('%s is number %d'%('Python', 1))Python is number 1 输出重定向有问题(待定) 文本输入>> ...
- python进程池pool的starmap的使用
#!/usr/bin/env python3 from functools import partial from itertools import repeat from multiprocessi ...
- OpenCV 3.0中IplImage* 转cv::Mat
在OpenCV 2.0中使用: IplImage * ipl1, *ipl2; // ... const cv::Mat m = cv::Mat(ipl,false); cv::Mat m2 = ip ...