这是准备在每周技术分享会中分享的内容,但因为团队都忙于各种需求和服务器迁移,分享就一直搁置了。

这个ppt还是有用心做的,如ppt的背景,和debug流程的箭头都是使用photoshop偷下来的= =!

示例程序:Download Example


前一篇文章介绍了WinDbg入门,本篇主要介绍WinDbg常用命令和用法。

调试程序的CPU满载问题,关键是要知道程序当前正在进行什么操作。假如我们在cpu满载时创建了一个dump文件,使用下面几个命令可以查看当前程序正在进行什么处理: .time 运行.time命令会显示时间相关的信息,如系统运行时间,进程运行时间和CPU花费在内核态和用户态的时间。

0:000> .time
Debug session time: Tue Oct 23 08:38:35.000 2007 (GMT+1)
System Uptime: 4 days 17:48:01.906
Process Uptime: 0 days 0:24:37.000
  Kernel time: 0 days 0:04:23.000
  User time: 0 days 0:03:28.000

你可以看到系统已正常运行超过4天,进程运行了24分钟,CPU在内核态和用户态累积使用了8分钟。根据进程时间和CPU时间能大概估算出CPU使用率平均值是32.5%。

More

原文:http://blogs.msdn.com/b/kaevans/archive/2011/04/11/intro-to-windbg-for-net-developers.aspx  翻译:cxfksword

当你的代码发布为产品后,无论是在其他人的电脑中运行,还是部署到服务器中,你通常不再能访问到它的程序文件,也不能观察到代码的当前运行情况和运行环境。当你的代码在新的环境运行时,有很多因素会影响到程序的运行情况,如服务器系统打了更新补丁,网络策略改变,防火墙规则限制,磁盘权限配置等等。当代码运行不正常时,你可能只能靠代码中各处输出的日志来判断运行情况。但只靠输出日志,你有时还是不能判断故障出现的原因。

在不浪费客户时间的同时做故障排除对你是个很大的挑战,因为不会有客户喜欢被一个搞技术的家伙不断问是点了那个按钮操作了哪些步骤导致程序出错的。boss也不会给你几天甚至几周的时间让你慢慢排除故障,你必须现在就知道到底发生了什么。

理想情况下,你应该能看到堆栈跟踪,能查看到当前的变量值,能调试代码。事实证明你可以做到这点。。。而且不需要附加到客户环境中!

More

Page 1 / 1
Top