zoukankan      html  css  js  c++  java
  • 使用PowerDbg自动化Windbg调试过程

    PowerDbg是一个PowerShell脚本,使用这个脚本可以连接到windbg上面,远程控制windbg,可以通过编程的方式分析windbg输出;加之PowerDbg强大的编程能力,方便我们编写一些强大的调试脚本。

    使用方法比较简单,从http://www.codeplex.com/ 下载powerdbg,这是一个开源的程序—实际上下载下来的就是一个可以执行PowerShell脚本。

    PowerDbg的工作原理是,在Windbg里设置一个远程调试服务器,启动另一个调试器—通常是命令行的调试器(例如cdb.exe)作为客户端。然后PowerDbg使用进程重定向的功能将调试命令输入到cdb.exe,再由cdb.exe再输入到windbg远程调试服务器上远程执行。接着将windbg的命令重定向到PowerShell脚本,当然啦输出结果会被PowerShell处理以后再显示出来。

    简单介绍一下用法:

    1.       Windbg这一边,打开一个要调试的程序,接着打开远程调试服务器功能,通过下面这个命令可以做到:

    .server tcp:port=12345

     

    2.       将下载下来的PowerDbg源代码解压后,把文件夹Module里面的WinDbg拷贝到C:\Windows\System32\WindowsPowerShell\v1.0\Modules\。这里假定你的系统盘是C盘。

     

    3.       启动PowerShell,需要以管理员的权限启动(Vista以上需要以提升后的管理员权限启动)。

     

    4.       PowerShell里输入(Win 7里,PowerShell在附件菜单下面):

    set-executionpolicy unrestricted

     

    5.       接着输入下面的命令导入PowerDbg模块

    import-module WinDbg

     

    6.       输入下面的PowerDbg命令连接到远程Windbg服务器上(如果你的windbg.exe不是安装在C:\Debuggers目录下,那么你需要手工修改一下文件C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WinDbg\WinDbg.psm1里的$cdbPath变量的值):

    Connect-Windbg "tcp:Port=12345,Server=机器名"

     

    7.       这下就可以执行Windbg命令了,使用Send-PowerDbgCommand来发送命令(命令的参数就是你要发送的命令):

    Send-PowerDbgCommand "g"

     

    8.       Windbg触发到断点以后,你就可以执行一些操作,并且读取格式化过后的输出了。例如下面两个命令:

    Send-PowerDbgCommand ".loadby sos mscorwks"

    Analyze-PowerDbgThreads

    下面就是输出,你可以看到PowerDbg将各个线程的状态都用文字的形式描述出来了,而不象原来sos!Threads只是打印一些莫名其妙的数字:

    如果要取消与Windbg的连接,使用下面的命令就可以做到了:

    Disconnect-Windbg

  • 相关阅读:
    【产品干货】经典营销模型的产品化介绍
    阿里云力夺FewCLUE榜首!知识融入预训练+小样本学习的实战解析
    云上资源编排的思与悟
    储留香:一个智能运维系统就是一个中枢神经系统,我说的!
    企业网管软件之SOLARWINDS实战-制作拓扑图
    企业网管软件之SOLARWINDS实战-基于浏览器的网络流量监控
    企业网管软件实战之看视频学装Cisco Works 2000
    轻松学习Linux之Shell预定义变量
    oracle的监听日志太大,正确的删除步骤
    MVC 使用HandleErrorAttribute统一处理异常
  • 原文地址:https://www.cnblogs.com/killmyday/p/1743097.html
Copyright © 2011-2022 走看看