2013-11-14 22:54
⁄ 工业·编程
⁄ 共 373字
命令
==========
k
k命令显示的是一定数量的栈帧, 其中帧的数量是由.kframes命令来控制的, 默认值是256。
kp 5
显示调用栈中前5个函数以及他们的参数.
kb 5
显示调用栈中前五个函数以及他们的前三个参数.
kf 5
显示在调用栈中五个函数所使用的栈的大小.
每个栈帧所占的空间使用量的计算方法是: 将当前函数的栈基指针与在函数中调用的任何一个函数栈基指针相减.
举例:
手动构造栈的实践- 如何手工构造调用栈
============
首先...
WinDbg, 软件调试阅读全文
2013-11-14 22:54
⁄ 工业·编程
⁄ 共 1039字
命令
==========
~0 bp 02sample!KBTest::Fibonacci_stdcall "r esp"
在零号线程上的KBTest类的Fibonacci_stdcall函数上设置断点, 并且在触发断点时执行"r esp"命令.
bl
列出所有已经设置了的断点
bc *
清除所有断点
bp 02sample!KBTest::Fibonacci_stdcall “r esp;g”
在所有线程上设置断点, 并且在触发断点时执行"resp;g"两条命令.
bm 02sample!*kbtest*
命令bm可以在参数中指定一个符号模...
WinDbg, 软件调试阅读全文
2013-11-14 22:53
⁄ 工业·编程
⁄ 共 192字
命令
==========
u .
u $ip
上面的两个命令是效果是一样的, 反汇编当前$ip地址上的8条命令.
uf .
uf $ip
上面两个命令的效果是一样的, 反汇编当前$ip地址上的整个函数.
ub .
ub $ip
反汇编$ip之前的8条指令.
ub $ip L2a
反汇编$ip地址之前的42条指令.
u $ip $ip+a
反汇编地址$ip到地址$ip+10之间的指令. 注意, 这里包括$ip, 不包括$ip+10。
举例:
WinDbg, 软件调试阅读全文
2013-11-13 22:51
⁄ 工业·编程
⁄ 共 511字
几乎每个命令都会直接或者间接地使用符号信息. 进行符号检查的命令却不多.
查看符号的命令是x, 这个字符表示"查看符号". 语法如下所示:
0.00>x [options] module!symbols
module和symbols都可以包含通配符. 在调试陌生代码时, 通配符是一种功能强大的工具, 因为它使我们在阅读代码之前能够猜测函数的名字或者全局变量.
其中, 带有_imp前缀的函数说明了该模块是引入函数的模块. 不带_imp的函数是实现该函数的模块...
WinDbg, 软件调试阅读全文
2013-11-13 22:47
⁄ 工业·编程
⁄ 共 1578字
Procdump是一个轻量级的Sysinternal团队开发的命令行工具, 它的主要目的是监控应用程序的CPU异常动向, 并在此异常时生成crash dump文件, 供研发人员和管理员确定问题发生的原因. 你还可以把它作为生成dump的工具使用在其他的脚本中.
有了它, 就完全不需要在同一台服务器上使用诸如32位系统上的Debug Diag 1.1或是64位系统上的ADPlus了.
问题描述
===============
在任务管理器里发现w3wp.exe的CPU总在49%-60%左右, 间歇性地会下...
WinDbg, 软件调试阅读全文
2013-11-13 22:44
⁄ 工业·编程
⁄ 共 375字
假设有个应用程序, 一启动就崩溃, 根本就来不及让你用Visual Studio来Attach, 并且该应用程序在使用Visual Studio直接lunch的情况下又不会出现这样的问题, 该怎么办呢?
除了使用<<在进程崩溃的时候自动抓取一个DUMP文件>>中的方法, 还可以使用WinDBG直接加载应用程序的可执行文件, 然后在应用程序退出的系统函数上下断点, 从而得到退出时的call stack.
让我们用notepad.exe作为例子吧.
首先, 使用Open Executable来...
WinDbg, 软件调试阅读全文
2013-11-12 22:43
⁄ 工业·编程
⁄ 共 233字
比方说你抓了个full dump, 在debug一个很复杂的问题, 可能你已经有了结果, 或者还在研究当中, 这时你被别的事情打搅了, 回家了, 第二天来重开dump文件, 不记得昨天做到哪里了. 在或者说, 你的同事很牛, 他分析了dump文件并得出了结论. 你想学一下他的思路.
在这两种情况下, 让windbg把曾经输入过的命令按顺序写到文件里的功能就相当有帮助了.
命令举例如下:
.write_cmd_hist c:\WindbgCmdHistory.txt
参考资料:
WinDBG帮助文件.
WinDbg, 软件调试阅读全文
2013-11-12 22:42
⁄ 工业·编程
⁄ 共 112字
命令很简单:
~0s 切换到0号线程
~3s 切换到3号线程
一些其他命令:
~*e !clrstack 遍历每个线程, 依次输出它们的托管调用栈.
!threads 查看所有的托管线程
WinDbg, 软件调试阅读全文
2013-11-12 22:41
⁄ 工业·编程
⁄ 共 231字
在WinDBG的Command窗口中, 默认情况下, 你输入的命令很容易和该命令以及附近命令的输出混杂在一起. 在寻找之前命令的结果的时候, 眼睛看起来会很累.
WinDBG提供了一个选项, 通过这个选项, 你可以把命令输入与输出的颜色进行设置.
选项名:
Prompt level command window text
Prompt level command windows text background
点击菜单View->Options...
配置后的结果如下:
好了, 你的眼睛可以舒服一点了.
WinDbg, 软件调试阅读全文
2013-11-11 22:40
⁄ 工业·编程
⁄ 共 332字
从本质上说, 这个功能是WinDBG的日志功能的一个应用而已. WinDBG的log功能可以记录你在WinDBG中使用的每一个命令以及其对应的输出.
那么如何开启WinDBG的日志功能呢?
首先, 可以选择从命令行中启动WinDBG. 举例, 使用下面的带有-logo参数的命令:
windbg.exe -logo c:\logfile.txt
其次, 如果你已经在一个debug session里了, 你可以使用.logopen命令来开始记录.
回答本文标题中的问题, 步骤如下:
第一步, 开启日志记录:
...
WinDbg, 软件调试阅读全文