使用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



本文转自 donjuan 博客园博客,原文链接: http://www.cnblogs.com/killmyday/archive/2010/05/24/1743097.html  ,如需转载请自行联系原作者

相关文章
|
16天前
|
测试技术 C# 图形学
掌握Unity调试与测试的终极指南:从内置调试工具到自动化测试框架,全方位保障游戏品质不踩坑,打造流畅游戏体验的必备技能大揭秘!
【9月更文挑战第1天】在开发游戏时,Unity 引擎让创意变为现实。但软件开发中难免遇到 Bug,若不解决,将严重影响用户体验。调试与测试成为确保游戏质量的最后一道防线。本文介绍如何利用 Unity 的调试工具高效排查问题,并通过 Profiler 分析性能瓶颈。此外,Unity Test Framework 支持自动化测试,提高开发效率。结合单元测试与集成测试,确保游戏逻辑正确无误。对于在线游戏,还需进行压力测试以验证服务器稳定性。总之,调试与测试贯穿游戏开发全流程,确保最终作品既好玩又稳定。
40 4
|
Web App开发 JavaScript 前端开发
Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示
Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示
690 0
Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示
|
Web App开发 存储
Python+selenium 自动化-操作已启用的chrome浏览器实例演示,chrome启用调试端口方法
Python+selenium 自动化-操作已启用的chrome浏览器实例演示,chrome启用调试端口方法
565 0
Python+selenium 自动化-操作已启用的chrome浏览器实例演示,chrome启用调试端口方法
|
11天前
|
运维 Ubuntu Devops
自动化运维工具的魅力:Ansible入门
【9月更文挑战第5天】在快速变化的IT世界里,自动化运维不再是可选项,而是必需品。Ansible,一款简单却强大的自动化工具,正成为众多DevOps工程师的首选。本文将带你了解Ansible的基本概念、安装步骤以及如何编写简单的Playbook,从而开启你的自动化之旅。
58 35
|
8天前
|
存储 弹性计算 运维
自动化监控和响应ECS系统事件
阿里云提供的ECS系统事件用于记录云资源信息,如实例启停、到期通知等。为实现自动化运维,如故障处理与动态调度,可使用云助手插件`ecs-tool-event`。该插件定时获取并转化ECS事件为日志存储,便于监控与响应,无需额外开发,适用于大规模集群管理。详情及示例可见链接文档。
|
1天前
|
机器学习/深度学习 运维 安全
构建高效运维体系:从自动化到智能化的演进之路
在数字化转型的浪潮中,运维管理作为信息技术基础设施的重要支柱,正经历着从传统手工操作向自动化、智能化的深刻变革。本文将探讨如何通过引入自动化工具和平台,实现运维流程的标准化与效率提升;进而利用大数据分析和人工智能技术,迈向预测性维护和智能决策支持的高级阶段。通过案例分析,揭示成功转型的关键因素,为运维专业人士提供一套可借鉴的升级路径。
|
4天前
|
机器学习/深度学习 运维 监控
构建高效运维体系:从自动化到智能化的演进
在当今信息技术飞速发展的时代,运维领域正经历着从传统手动操作向高度自动化和智能化转变。本文旨在探讨如何通过集成自动化工具、实施持续集成与持续部署(CI/CD)、采用容器化技术和探索AIOps实践,构建一个高效、可靠的运维体系。我们将分析这些技术如何相互配合,提升运维效率,降低系统故障率,并实现快速响应市场变化的能力。通过案例分析和最佳实践的分享,本文将为IT专业人员提供一套实用的指南,帮助他们在数字化转型的浪潮中,保持运维工作的前瞻性和竞争力。
|
5天前
|
机器学习/深度学习 数据采集 人工智能
智能化运维的探索之旅:从自动化到人工智能
在数字化浪潮中,运维领域正经历一场革命。本文将带你领略从传统手动操作到自动化脚本,再到集成人工智能的智能运维平台的演变之路。我们将探讨如何通过技术创新提升效率、降低成本并增强系统的可靠性和安全性。文章不仅分享技术演进的故事,还提供了实现智能化运维的实践策略和未来趋势的展望。

热门文章

最新文章