windbg解决线程死锁

               

1、打开将要被检测的软件A,同时打开windbg

2、windbg,File->attach to process ,附加到进程A

3、F5运行或DEBUG->GO

4、等待进程A进入死锁状态,然后DEBUG->Break,在下面的输入栏中输入   ~*kb,然后查看各线程信息,分析死锁原因


PS: 常用命令

0、!analyze -v 分析

1、清屏:.cls(注意前面有个 . 号)

2、d

命令显示esp寄存器指向的内存
如下


用dd命令直接指定054efc14地址

3、~ 用来切换目标线程:~显示线程信息;~0s把当前线程切换到0号线程

4、~* 列出当前进程中所有线程的详细信息

5、k 显示当前线程的堆栈

6、~*kb 显示当前进程所有线程的堆栈,同理~1kb显示一号线程堆栈

7、使用!locks命令列出当前被锁住的资源

8、

!cs Address 指定要显示的临界区地址。如果省略该参数,调试器显示当前进程中所有临界区。

!cs -s 如果可能的话,显示每个临界区的初始堆栈回溯。 !cs -l  仅显示锁定的临界区。



0614fd4c 7c92df5a 7c939b23 00000604 00000000 ntdll!KiFastSystemCallRet
0614fd50 7c939b23 00000604 00000000 00000000 ntdll!NtWaitForSingleObject+0xc
0614fdd8 7c921046 0012fe08 5f401b5f 0012fe08 ntdll!RtlpWaitForCriticalSection+0x132
这里的第一个是ebp,第二个是返回函数地址,接下来才是你的参数。
具体要看handle是多少,要看下比如 ntdll!NtWaitForSingleObject参数定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值