12 2016 档案
摘要:在c++11中,一个callable object(可调用对象)可以是函数指针、lambda表达式、重载()的某类对象、bind包裹的某对象等等,有时需要统一管理一些这几类对象,新增的function就是为此而生。function位于functional头文件,可以看做是那几类callable ob
阅读全文
摘要:std::bind 用于绑定一个函数,返回另外一种调用方式的函数对象 ,可以改变参数顺序 和个数,特别是在多线程的程序中,经常用它将函数进行包装,然后打包发送给工作线程,让工作线程去执行我们的任务。 std::function 用于构建一个函数特别是 回调函数 ,用于替代 函数指针/*常和匿名函数一
阅读全文
摘要:"typename"是一个C++程序设计语言中的关键字。相当用于泛型编程时是另一术语"class"的同义词。这个关键字用于指出模板声明(或定义)中的非独立名称(dependent names)是类型名,而非变量名。 学习C++的人对class这个关键字都非常明白,class用于定义类。在模板引入c+
阅读全文
摘要:std::bind1st 和 std::bind2nd将二元函数转换为一元函数,具体用法参加下面的代码。 代码介绍了两种使用方式,第一种是使用std::less和std::greater,第二种是使用自定义的仿函数。 copy_if: std::bind1st std::binder1st std:
阅读全文
摘要:简单来将,仿函数(functor)就是一个重载了"()"运算符的struct或class,利用对象支持operator()的特性,来达到模拟函数调用效果的技术。 我们平时对一个集合类遍历的时候,例如vector,是这样做的: for(vector<int>::const_iterator iter
阅读全文
摘要:我们直接看定义: 一元函数:接受一个参数的函数,如f(x)。 一元谓词函数:如果一元函数返回一个BOOL类型的值,则该函数称为谓词。 二元函数:接受2个参数的函数,如f(x,y)。 二元谓词函数:如果二元函数返回一个BOOL值,则该函数称为二元谓词。 之所以给返回布尔类型的函数对象专门命名,是因为谓
阅读全文
摘要:Technical Report 1不是正式的库只是一个草案,作为C++ 2003标准的附加库被大多数编译器厂商所支持,它是个过渡性质的库,其实现将会作为C++11标准的一部分。很多编译器对C++11的支持在其内部实现中对相关功能的处理实际上就是用的之前其对Technical Report 1的实现
阅读全文
摘要:固定别名($u0~$u9) 有10个固定别名。他们是$u0, $u1, ..., $u9。他们的等价字符串可以是不包含ENTER键的任意字符串。使用r (Registers)命令为固定别明指定等价字符串。定义固定别名时,必须在字母"u"之前插入点号(.)。等号(=)之后的文本是等价字符串。等价字符串
阅读全文
摘要:Windbg工作空间 WinDbg使用工作空间来描述和存储调试项目的属性、参数及调试器设置等信息。工作空间与vc中的项目文件很相似。WinDbg定义了两种工作空间,一种为默认工作空间,另一种为命名的工作空间。当没有明确使用某个命名空间时,WinDbg总是使用默认工作空间。 WinDbg在安装后就有预
阅读全文
摘要:bp bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。 对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点。 但是使用bp的问题在于: 1)当代码修改之后,函数地址改变,该断点仍然保持在相
阅读全文
摘要:!gle !gle 扩展显示当前线程的最后一个错误码。这个太好记了,getlasterror取首字母: -all 显示目标系统中每个用户模式线程的最终错误。如果在用户模式下省略该参数,调试器显示当前线程的最终错误。如果内核模式下省略该参数,调试器显示当前的寄存器上下文指定的线程的最终错误。 g g(
阅读全文
摘要:A.利用工具umdh(user-mode dump heap)分析:此处以程序MemoryLeak.exe为例子 1、开启cmd 键入要定位内存泄露的程序gflags.exe /i memroyleak.exe +ust,如图成功后,开启memoryleak.exe程序。 2、利用UMDH创建Hea
阅读全文
摘要:Logexts.dll windbgth自带了跟进API的功能,这样我们可以方便的跟踪整个API的调用具体的示意图如下: !logexts.logi 将Logger注入目标程序,初始化监控,但是并不开启它。 !logexts.loge 开启监控,如果之前没有调用logexts.logi,这个扩展命令
阅读全文
摘要:!cs 扩展显示一个或多个临界区(critical section)或者整个临界区树 !cs Address 指定要显示的临界区地址。如果省略该参数,调试器显示当前进程中所有临界区。 0:003> !cs 00403370 Critical section = 0x00403370 (test2+0
阅读全文
摘要:dds、dps和dqs命令显示给定范围内存的内容,它们是把内存区域转储出来,并把内存中每个元素都视为一个符号对其进行解析,dds是四字节视为一个符号,dqs是每8字节视为一个符号,dps是根据当前处理器架构来选择最合适的长度。 比如要看看当前stack 中保存了哪些函数地址,就可以检查ebp 指向的
阅读全文
摘要:以下内容是转自 http://www.cnblogs.com/fbird/p/5889596.html 以前做项目碰到过一个问题,在客户的站点上面发现有严重的内存泄漏。幸运的是我们找到了重现的步骤,一轮下来大概有几十兆的泄漏,但是以下常规方法却没啥用。 用windbg把heap上面的object全部
阅读全文