- 博客(30)
- 资源 (15)
- 收藏
- 关注
原创 安装与配置windbg的symbol(符号)
本篇是新手自己写的一点心得.建议新手看看.同时希望前辈多多指教.写这篇的动机:在网上找了一上午的windbg配置符号教程.楞是没找到详细的,都讲的太模糊而且互相抄袭.不适合新手看.终于靠自己的努力弄懂了一点,呵呵写出来新手们分享.安装与配置windbg的symbol(符号)第一步 是从 http://www.microsoft.com/ddk/debugging 下载最新版本的
2013-04-15 15:36:12 2907
原创 设计模式(18)-Command Pattern
一、 命令(Command)模式命令(Command)模式属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派
2013-04-15 11:06:24 1293
原创 WinDBG教程
什么是WinDBG?WinDbg是微软开发的免费源码级调试工具。下载地址为:http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx.Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。由于大部分程序员不需要做Kernel模式调试, 我在这篇文章中不会介绍Kernel模式调试。Kern
2013-04-12 17:48:24 1640
原创 windbg调试命令9(dt、d)
dt命令显示局部变量、全局变量或数据类型的信息。它也可以仅显示数据类型。即结构和联合(union)的信息。 0: kd> dt _PEB nt!_PEB +0x000 InheritedAddressSpace : UChar +0x001 ReadImageFileExecOptions : UChar +0x002 BeingDebugged : U
2013-04-12 16:47:56 3965
原创 windbg调试命令8(bp、bu、bm、bl、bc、ba、be、bd)
以下以skinhgy为例,windbg附加运行1.bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点。 但是使用bp的问题在于:1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效; 2)Win
2013-04-12 16:46:58 2826
原创 windbg调试命令7(!runaway、~)
1.!runaway!runaway命令显示每个线程消费的时间Bit 0 (0x1) 让调试器显示每个线程消耗的用户模式时间(user time),默认不加就是0x1Bit 1 (0x2) 显示每个线程消耗的内核时间(kernel time)。Bit 2 (0x4) 显示每个线程从创建开始经历了多少时间。就是三者的组合:1 2 3 4 5 6 70:002> !runaway Us
2013-04-12 16:41:03 1533
原创 windbg调试命令6(!peb、!teb)
PEB(Process Environment Block,进程环境块)存放进程信息,每个进程都有自己的PEB信息。位于用户地址空间。TEB(Thread Environment Block,线程环境块)系统在此TEB中保存频繁使用的线程相关的数据。位于用户地址空间,在比 PEB 所在地址低的地方。进程中的每个线程都有自己的一个TEB。调试的程序的时候,了解PEB和TEB往往对分析很有帮助
2013-04-12 16:39:45 1418
原创 windbg调试命令5(ln、伪寄存器)
1.lnln 命令显示给定地址处的或者最近的符号。ln表示list near,ln命令将尽可能地给出与特定地址相关的符号,如果没有符号能够精确地与这个地址匹配,那么调试器将通过指针算法对靠近这地址的符号进行运逄,并返回运算结果符号0:000> ln 01012475(01012475) calc!WinMainCRTStartup | (0101263c) c
2013-04-12 16:38:33 1505
原创 windbg调试命令4(用户层.dump)
Windbg生成dump文件的方法:程序崩溃(crash)的时候, 为了以后能够调试分析问题, 可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件。 步骤:1) 打开WinDBG并将之Attach 到crash的程序进程2) 输入产生dump 文件的命令WinDBG产生dump 文件的命令是 .dump ,可以选择不同的参数来生成不同类型的dump
2013-04-12 16:35:20 1276
原创 windbg调试命令3(sx、ld)
1.sxsx* 命令用来控制被调试的程序发生某个异常或特定事件时,调试器要采取的动作sx 命令显示当前进程的异常列表和所有非异常的事件列表,并且显示调试器遇到每个异常和事件时的行为。sxr 命令将所有异常和事件过滤器的状态重设为默认值。命令被清除、中断和继续选项被重设为默认值,等等。sx这个命令的输出信息可以分为三个部分:第一部分是事件处理与相应处理模式的交互,第二部分是标准的
2013-04-12 16:32:48 3721
原创 windbg调试命令2(!gle、g、p)
!gle 扩展显示当前线程的最后一个错误码。这个太好记了,getlasterror取首字母:0:002> !gle LastErrorValue: (Win32) 0 (0) - LastStatusValue: (NTSTATUS) 0 - STATUS_WAIT_0 0:002> !gleLastErrorValue: (Win32) 0 (0) -
2013-04-12 16:21:56 2303
原创 windbg调试命令1(k、u、x)
k*命令显示给定线程的调用堆栈,以及其他相关信息~0 k表示打印0号线程的调用堆栈,直接用k表示打印当前线程的调用堆栈kd> ~0k ChildEBP RetAddr 0007fddc 77d191be ntdll!KiFastSystemCallRet 0007fdfc 010021b0 USER32!NtUserGetMessage+0xc 0007ff1c 0
2013-04-12 16:04:12 2667
原创 windbg调试命令4(用户层.dump)
Windbg生成dump文件的方法:程序崩溃(crash)的时候, 为了以后能够调试分析问题, 可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件。 步骤:1) 打开WinDBG并将之Attach 到crash的程序进程2) 输入产生dump 文件的命令WinDBG产生dump 文件的命令是 .dump ,可以选择不同的参数来生成不同类型的dump
2013-04-12 16:02:29 2168
原创 利用windbg分析dump文件
windbg是windows下一个分析调试的工具,功能非常强大。这里主要记录利用windbg来分析windows蓝屏时所产生的内存转储文件*.dmp。1,下载:http://www.microsoft.com/whdc/devtools/debugging/default.mspx2,配置symbol path:windows程序在编译生成后,会产生一些.exe,dll文件。同
2013-04-12 14:54:28 21597
原创 使用gtest对类进行白盒测试
gtest是一个很好用的测试框架,可以很方便地对函数进行单元测试。主页:http://code.google.com/p/googletest/一篇好文章,《玩转Google开源C++单元测试框架Google Test系列》:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html在使用gtest的过程中,我发现使
2013-04-11 14:33:09 2190
原创 Visual Leak Detector (VLD)使用
Visual Leak Detector (VLD) 1.9h (Beta),点这里开始下载!Visual C++内置内存泄露检测工具,但是功能十分有限。VLD就相当强大,可以定位文件、行号,可以非常准确地找到内存泄漏的位置,而且还免费、开源!在使用的时候只要将VLD的头文件和lib文件放在工程文件中即可。也可以一次设置,新工程就不用重新设置了。只介绍在Visual Studio
2013-04-10 14:57:20 1980
原创 gtest使用
首先#include ,当然工程的头文件路径要设置正确1.简单测试TESTCpp代码#include int Factorial(int n ) { if(n==2)return 100;//故意出个错,嘻嘻 return n} //用TEST做简单测试 TEST(TestFactorial, ZeroInput)
2013-04-10 10:51:40 10862 1
原创 gtest框架的介绍与应用
【摘要】在本文中,作者根据之前使用gtest框架进行测试的经验,总结了一些使用方式和案例。 在这些案例中,我们可以了解到gtest框架的基本使用方法以及在我们日常测试中的应用,同时也能促进我们对于百度的btest的了解。在我们之后的测试工作中,可以根据各个项目的特点以及gtest、btest等测试框架的功用,进行协调和因势利导,将更多框架产品用于我们的测试工作中,使我们的测试工作更加正规、更加高效
2013-04-10 10:49:28 2906 1
原创 Gtest使用笔记
项目主页:http://code.google.com/p/googletest/详细教程:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html几点说明:1. vs2010可参考http://www.cnblogs.com/SelaSelah/archive/2012/04/11/2442525.htm
2013-04-10 10:29:50 1956
原创 使用 Boost 的 IPC 和 MPI 库进行并发编程
使用非常流行的 Boost 库进行并发编程非常有意思。Boost 有几个用于并发编程领域的库:Interprocess (IPC) 库用于实现共享内存、内存映射的 I/O 和消息队列;Thread 库用于实现可移植的多线程;Message Passing Interface (MPI) 库用于分布式计算中的消息传递;Asio 库用于使用套接字和其他低层功能实现可移植的连网功能。本文介绍 IPC 和
2013-04-09 16:04:28 1589
原创 Boost.Interprocess翻译-快速入门
Quick Guide for the Impatient入门指南Using shared memory as a pool of unnamed memory blocksCreating named shared memory objectsUsing an offset smart pointer for shared memoryCreati
2013-04-09 15:49:16 1691
原创 读《Boost程序库完全开发指南》
第1章 Boost程序库总论使用Boost,将大大增强C++的功能和表现力 第2章 时间与日期timer提供毫秒级的计时精度,内部是通过std::clock取时间的progress_timer自动打印某生命周期的执行时间原则上程序库的代码是不应该被用户修改的progress_display可以在控制台上显示程序的执行进度date_time库
2013-04-09 15:41:17 2624
原创 boost::asio一个简单的echo服务器
以前使用ACE实现Server框架,但是觉得太笨重,决定采用boost.asio来写服务器程序: 1.服务器构建在linux上面;当然也可以在windows下运行 2.io部分采用非阻塞模式、业务逻辑部分采用同步线程池实现 3.封装io操作及状态,用户应用程序无需关心io详细操作所以决定采用boost::asio框架来写服务器:boost::asio::io_service提供
2013-04-08 14:46:41 1392
原创 Boost::asio范例分析 客户端
为了方便描述,这里只分析一下同步实现,异步实现方式和同步方式的流程是一致的,只是在函数调用的方式上有些区别.分析清楚了同步方式,在看异步实现,也很容易. 这个HTTP范例实现了客户端向服务端请求文件内容的功能,客户端给出一个文件名称,服务端在本地寻找文件,并将文件内容(文本文件)返回给客户端. main函数首先检查传递给exe执行文件的参数,第一个参数是服务端的IP地址,第二个参数是请
2013-04-08 14:41:11 1254
原创 Boost::asio范例分析 服务端
main函数要求程序调用者传递3个参数:服务器IP地址,端口号和文档根目录.其中IP地址可以是IPv4或IPv6格式.接着创建server对象实例,将传递进来的IP地址,端口号,文档根目录作为server对象的构造函数参数传递到处理程序中.最后调用server的run成员函数启动服务端处理例程. http::server::server s(argv[1], argv[2], argv[
2013-04-08 14:39:07 1573
原创 Boost::asio io_service 实现分析
io_service的作用io_servie 实现了一个任务队列,这里的任务就是void(void)的函数。Io_servie最常用的两个接口是post和run,post向任务队列中投递任务,run是执行队列中的任务,直到全部执行完毕,并且run可以被N个线程调用。Io_service是完全线程安全的队列。Io_servie的接口提供的接口有run、run_one、poll、poll_
2013-04-08 14:00:30 919
原创 Vs中使用dump文件调试程序崩溃
Vs中使用dump文件调试程序崩溃 1. Dump文件的生成在vs中要生成dump文件需要加入一些代码,这些代码在debug或release代码下均有效果。首先定义异常类:class CSE_Exception { public: CSE_Exception() : m_nSENumber(0) {}
2013-04-08 09:13:48 2629
原创 SetConsoleCtrlHandler 处理控制台消息
SetConsoleCtrlHandler 处理控制台消息一、如何处理所有的控制台消息。 第一步,首先要安装一个事件钩子,也就是说要建立一个回调函数。调用Win32 API,原型如下:BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine, // 回调函数BOOL Add // 表示添加还
2013-04-08 09:02:20 21824 1
原创 怎样写英语日记
要学好写英语短文,就必须经常练习写作。记日记是提高书面表达能力的有效方法之一。日记是每日生活的记载,是一种记事文体。 一、日记的格式 英文日记通常由书端和正文两个部分组成。日记常以第一人称记下当天生活中的所见、所闻、所做或所想的事情。中、英文的日记三格式大致一样。英语日记的书端是专门写日记的日期、星期和天气的。左上角是日期(年、月、日)、星期。右上角写上当天的天
2013-04-02 16:56:22 1116 1
原创 boost::function用法详解
要开始使用 Boost.Function, 就要包含头文件 "boost/function.hpp", 或者某个带数字的版本,从"boost/function/function0.hpp" 到"boost/function/function10.hpp". 如果你知道你想保存在function 中的函数的参数数量,这样做可以让编译器仅包含需要的头文件。如果包含"boost/func
2013-04-02 15:50:23 1164
彗星小助手
2011-11-15
HttpWatchPro
2011-11-10
计算机基础知识考试宝典
2011-09-22
Vc中BSTR,char和CString的转换
2007-10-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人