如何debug lsass.exe
这两天需要调试lsass.exe, 昨天baidu竟然都查不到什么信息。lsass有它的一些特点。首先它是运行在user mode, 因此一般来讲应该用user mode的调试工具来调试。可是,如果用debuuger直接跟它相连,计算机就会自动重启,使得调试无法进行下去。其次,如果我们想在机器启动的时候调试lsass也比较麻烦,因为user mode debugger那个时候还不能工作。再次,调试lsass的时候,网络的访问不能进行,因此从网络上访问symbols and source code 也成为了不可能。经过认真研究,发现有三种方法可以用来调试lsass,并且各有优缺点。下面就一一讲解一下。1. ntsd piped through KD
a. 修改注册表
HKLM\Software\Microsoft\Windows NT\CurrenVersion\Image File Execution Options\lsass.exe debugger = REG_SZ c:\debuggers\ntsd.exe -d -g -G
b. 用另一台机器通过kernal debugger和测试机相连
c.重起测试机
这样的话,在启动阶段,当系统调起lsass的时候,测试机的ntsd就开始工作,并且将输入,输出传送到kernal debugger上。这个属于在kernal debugger里进行user mode的调试。
优点:可以在启动的时候调试lsass。
缺点:symbols and source files 必须要copy在测试机上。(不太方便)
2.Debugging LSA via dbgsrv.exe
a.Find the PID for LSA via tlist.exe
b. C:\Program Files\Debugging Tools for Windows>dbgsrv.exe -t tcp:port=1234,password=spat
c.Run this command to attach to LSA on the remote machine.
I:\debugger>windbg.exe -premote tcp:server=192.168.1.102,port=1234,password=spat -p 596-- where 596 = PID of LSASS
优点:symbols and source files 可以在调试机上
缺点:不能在启动的时候进行调试
3.Debugging LSA from Kernel
a. Get the process address for LSASS
0: kd> !process 0 0 lsass.exe
PROCESS 815196c0 SessionId: 0 Cid: 010c Peb: 7ffdf000 ParentCid: 00e4
DirBase: 042d2000 ObjectTable: 81519aa8 TableSize: 859.
Image: LSASS.EXE
b. Switch to the process context:
Either
.process /p /r 815196c0
Or
.process –i 815196c0 ;g;.reload /user
优点:symbols and source files 可以在调试机上,可以进行log out/ log on 过程的调试
缺点:不能在启动的时候进行调试
因此,如果想在启动的时候调试,就必然要选方法1。如果想在log on的时候调试,选择方法3。其他情况,可以选择方法2,或者方法3。 微软中国有很多专门的Debugger 原帖由 xiaoshancom 于 2007-8-3 09:49 发表 http://bbs.51testing.com/images/common/back.gif
微软中国有很多专门的Debugger
什么意思?什么专门的debugger? 专职Debug的,完后找到合适Owner。 什么title? SDET
或
SDE/T LEAD 专门做debugging的SDET?
如果发现bug的时候已经就知道谁是owner了,还需要debugging吗?
还有就是是不是他们只是debugging无法确定owner的bug?
有SDET lead专职做这个?那他们的手下做什么?
如果他们专职做这个,那么必定有其他SDET进行通常的测试。那么专职debugging的和通常SDET的比例是多少?
每个项目都是有PM,DEV,SDET组成的,那么这种专职debugging的SDET是存在于任何一个项目中,还是专门有一个team来解决任何项目的bug呢?
谢谢回答。
页:
[1]