以下以skinhgy为例,windbg附加运行 1. bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction . 对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点. 但是使用bp的问题在于: 1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效: 2)WinDBG 不会把bp断点保存工作空间中 bp  Address或bp 伪寄存器或bp符号名称: 0:000> x Si…
3.进程与线程: 既可以显示进程和线程列表,又可以显示指定进程或线程的详细信息.调试命令可以提供比taskmgr更详尽的进程资料,在调试过程中不可或缺. 3.1. 进程命令 进程命令包括以下:显示进程列表.进程环境块.设置进程环境. 多个命令可显示进程列表,但一般只能在特定情况下使用,它们是:|..tlist.!process和!dml_proc |  [进程号] 请注意这里的定语:被调试进程列表.大多数情况下调试器中只有一个被调试进程,但可以通过.attach或者.create命令同时挂载或创…
一.windbg查看内存命令: 当我们在调试器中分析问题时, 经常需要查看不同内存块的内容以分析产生的原因, 并且在随后验证所做出的假设是否正确. 由于各个对象的状态都是保存在内存中的, 因此内存的内容也就相当于对象的状态. d命令最常见的格式就是根据指定的类型信息来显示存储在某地址中的数据. 调试器并不会去猜测这个地址上存储的是什么数据, 因为在大多数情况下猜测都是错误的. 所以需要用户显式地制定按照何种格式来解析数据. 命令格式如下: 语法:d [type][address range] /…
4.查看调用栈 k命令:显示的是一定数量的栈帧, 其中帧的数量是由.kframes命令来控制的, 默认值是256. 我们如何来判断函数的栈指针,参数地址和局部变量地址呢? 举一个简单的windbg的kv命令输出:ChildEBP RetAddr  Args to Child              03b1f9c4 0032549e 00e1b5f0 00e259f8 7c900059 如上所示,ebp是栈的指针,其中ebp+4保存的是函数返回地址,因此ebp+8(00e1b5f0 )开始就是…
一.windbg 常用知识: 1. Windbg中的调试命令,分为三种:基本命令,元命令和扩展命令.基本命令和元命令是调试器自带的,元命令总是以“.”开头,而扩展命令是外部加入的,总是以感叹号“!”开头 基本命令最少了,大概40个左右.列举所有的基本命令,使用如下命令: ? 元命令有一百多个,使用下面命令列举所有元命令: .help  [/D] 小技巧: 标准命令帮助 ? ? /D 元命令帮助 .help .help /D .help /D a* 扩展命令帮助 !help !help savem…
http://blog.csdn.net/wesley2005/article/details/51501514 目录: (1) u命令(反汇编) (2) dt命令(查看数据结构) (3) ln命令(查找就近的符号) (4) x命令(显示模块的符号) (5) k命令(显示调用栈) (6) d命令(以数据方式显示) (7) b命令(断点) (8) lm lmvm (显示模块信息) (9) .reload (重加载模块) (10) !process !thread .process .thread…
本篇基于redis 4.0.11版本,学习列表(list)和集合(set)和有序集合(sorted set)相关命令. 列表按照插入顺序排序,可重复,可以添加一个元素到列表的头部(左边)或者尾部(右边). 集合是 String 类型的无序集合,不能出现重复的数据. 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员,但分数(score)却可以重复.不同的是每个元素都会关联一个double类型的分数.redis正是通过分数权重来为集合中的成员进行从小到大的排序. 列表相关命令:…
本篇基于redis 4.0.11版本,学习哈希(hash)相关命令. hash 是一个string类型的field和value的映射表,特别适合用于存储对象. 序号 命令 描述 实例 返回 HSET key field value  将哈希表 key 中的字段 field 的值设为 value .如果有值会覆盖. HSET myhash field1 "foo1" (integer) 1 2 HDEL key field1 [field2]  删除一个或多个哈希表字段 删除键为myha…
//断点相关 bp + 地址 设置断点bl  显示已经设定的断点bu + 地址 设置断点,但是这种类型断点再下一次启动时被记录bc 清除断点对于断点范围,可以用*匹配,-表示一个范围,表达多个可用,号隔开 程序入口伪寄存器WinDbg里有个伪寄存器叫$exentry,里面记录了程序的入口点.所以我们只要在命令输入栏里输入bp $exentry(bp就是用来下断点的命令,详细用法可以参考WinDbg的帮助文档) //调试符号 ld kernerl32 //加载kernerl32模块的符号lm   …
五.源文件行语法 可以将源文件行号指定为MASM表达式的全部或部分.这些数字计算出与该源代码行对应的可执行代码的偏移量.不能使用源代码行作为C++表达式的一部分.必须用重音符(`)将源文件和行号表达式括起来.以下示例显示源文件行号的完整格式. `[[Module!]Filename][:LineNumber]` 如果有多个文件具有相同的文件名,则文件名应包括整个目录路径和文件名.此目录路径应该是编译时使用的路径.如果只提供文件名或路径的一部分,并且存在多个匹配项,则调试器将使用找到的第一个匹配项…