Windbg妙用

计算器

当你在调试,需要做一些从十六进制到十进制的简单转换,一些整数计算你不需要切换到calc.exe,你可以只使用windbg的表达式计算器。
假设你得到了一个十六进制的大小,比如说2e903000,您可以转换并执行如下计算:

0:000> ?2e903000
Evaluate expression: 781201408 = 2e903000

所以0x2e903000字节是781201408字节

获取MB数,你只要运行

0:000> ?2e903000/0n1024/0n1024
Evaluate expression: 745 = 000002e9

即除以0n1024两次(十进制数字以0n为前缀),得到745 MB。

聊天客户端

好吧,它不是一个真正的聊天客户端,但是,当您处于远程会话中时,即当有人用.server远程退出了调试会话,并且您想向他们指出一些东西时,您可以用*开始注释,调试器不会解析它,但是连接到远程的其他方会看到它。

0:000>***嘿,看看这个奇怪的东西。。。

与其他应用程序交互

如果需要对命令的输出进行一些处理,并且不想执行将结果复制到记事本、运行外部应用程序等过程,.shell命令是必须尝试的。如果您需要在调试器中对返回的结果进行一些处理,这将特别有用。

0:000> .shell -i - -ci "~* kb 2000" FIND /c "mscorwks!ThreadpoolMgr::WorkerThreadStart"
7
.shell: Process exited
 

该示例运行~*kb 2000,将输出发送到DOS命令FIND,并返回字符串的出现次数,因此它告诉我们有多少线程正在执行函数WorkerThreadStart。可以将命令传递给自己的应用程序,也可以使用标准输入和标准输出来读取命令结果并将结果打印回调试器。

保存调试会话

.logopen打开一个日志文件,其中存储所有命令及其输出,直到调用.logclose。使用/t开关,它会附加当前日期和时间以及正在调试的进程的PID。

0:000> .logopen /t g:debugginglog.txt
Opened log file 'g:debugginglog_1498_2006-01-18_17-12-13-766.txt'
原文地址:https://www.cnblogs.com/yilang/p/11950198.html