
VC++
blacet
这个作者很懒,什么都没留下…
展开
-
WinDBG常用断点命令
WinDBG常用断点命令WinDBG提供了多种设断点的命令:bp命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以bp MyApp!SomeFunction。 对于后者,WinDBG 会自动找到MyApp!SomeFunction对应的地址并设置断点。 但是使用bp的问题在于:1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效; 2)WinD...转载 2020-01-03 13:51:57 · 1583 阅读 · 1 评论 -
用windbg 中断系统api 函数查找和调试问题,实例总结
工作中,经常遇到因窗口焦点莫名丢失或转移的bug,我们知道设置焦点的系统API 函数是SetFocus,因此,我想断到调用这个函数的地方。所以,需要查看这个api 在哪个dll里,MSDN描述这个api在User32.dll里,而当尝试中断时,发现断点没用,用depends.exe查看user32.dll的导出函数,确实有这个api函数,可能真实的API函数可能另有一个,微软利用某...原创 2020-01-03 15:18:48 · 2229 阅读 · 0 评论 -
(转)Google-glog 日志库使用手记
(转)Google-glog 日志库使用手记作者:高张远瞩(HiLoveS)博客:http://www.cnblogs.com/hiloves/转载请保留该信息 Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ 风格的流操作和各种助手宏。试用了一下,感觉不错,试用过程出了不少插曲。1、开源项目首页已经从https://code.google.com/p/google-g...转载 2018-07-13 16:18:21 · 496 阅读 · 0 评论 -
Windows 中一个应用程序的启动过程
转载:Windows 中一个应用程序的启动过程1. Explorer.exe Windows 能够流行起来,很大一个原因是它有友好的用户图形界面,操作方便简单,容易上手。在Windows环境下打开一个程序,只要双击软件的图标就行了,那么它是如何启动起来的? 当我们启动电脑进入桌面时,系统会创建 Explorer.exe 进程。Explorer.exe是Windows程序...转载 2018-08-31 14:12:00 · 1700 阅读 · 0 评论 -
windbg检测句柄泄露(定位到具体代码)
转载:windbg检测句柄泄露(定位到具体代码)1.构造一个测试用例#include "stdafx.h"#include <Windows.h> void NormalFunc(){ HANDLE hEvent; hEvent = CreateEvent(NULL,TRUE,TRUE,NULL); CloseHandle(hEvent);} void H...转载 2018-09-10 20:19:03 · 757 阅读 · 0 评论 -
C/C++程序员必须熟练应用的开源项目 -- 转
C/C++程序员必须熟练应用的开源项目 -- 转 作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应用过, 但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用, 对于自己来说, 在不同的项目中应用, 只需要复...转载 2018-09-14 17:36:23 · 210 阅读 · 0 评论 -
Win32内存结构(转)
转载地址:Win32内存结构(1)在Win32中每一个进程的虚拟地址空间大小是4GB。32位的指针能从0x00000000到0xFFFFFFFF。这使得指针有4GB种值,既覆盖了4GB的空间。请注意该4GB的地址空间是私人地址空间,它只属于某个进程。当进程中的线程在运行时,它只能使用属于本进程的内存。也就是说,对于一个线程来说,别的进程的内存是不可访问的。这样也就是说,进程A可以有一个数据保存...转载 2018-09-25 16:06:42 · 846 阅读 · 0 评论 -
(转)使用windbg检测内存泄漏
转载地址:使用windbg检测内存泄漏缘起:作为C++程序员,检测内存泄漏是非常痛苦的事情。尤其是看着程序的内存在一直增长,你却无能为力。此时,windbg可以用来检测内存泄漏。配置windbg: 配置symbol文件路径: “SRV*d:\symbols*http://msdl.microsoft.com/download/symbols”. 增加测试程序test.exe的pdb 文件到symb...转载 2018-07-13 15:46:45 · 1645 阅读 · 0 评论 -
(转载)windows服务安装卸载
windows服务安装卸载转载地址:https://www.cnblogs.com/ITHomes/p/3467739.html#top到C盘下找到对应的开发VS的installutil.exe文件,复制到程序的执行文件(*.exe)相同目录下在开始程序中找到VS命令提示工具转到程序的执行文件(*.exe)目录下C:\>cd C:\Documents and Settings\Adminis...转载 2018-07-09 14:36:20 · 544 阅读 · 0 评论 -
extern "C"在DLL导出函数时有什么作用?
extern "C"在DLL导出函数时有什么作用?2017年08月14日 22:43:30阅读数:606extern是c/c++语言中表明函数和全局变量作用范围的关键字。该关键字告诉编译器,其声明的函数和变量可以在本模块或其他模块中使用。通常,在模块的头文件中对本模块提供给其他模块引用的函数和全局变量以关键字extern声明。例如,你写了一个DLL,在导出接口中可以声明extern "C"修饰的函...转载 2018-06-01 17:08:28 · 961 阅读 · 0 评论 -
使用Windbg分析程序死锁小结
使用Windbg分析程序死锁小结2014年12月02日 09:04:17阅读数:1837死锁场景描述: 针对之前一个版本反馈回来的问题,对数据通讯模块升级,做了精简和重构 因为ABA问题的存在,将之前以Socket为key改为以只增的Int为key。使用的锁为临界区锁。 修改完成,联调后进行压力测试,发现当后台的线程池满的时候会必然发生死锁。死锁定位过程...转载 2018-06-01 17:05:13 · 1591 阅读 · 0 评论 -
Windbg调试命令详解
Windbg调试命令详解发表于2013 年 8 月 23 日由张佩转载注明>> 【作者:张佩】【原文:http://www.yiiyee.cn/Blog】1. 概述用户成功安装微软Windows调试工具集后,能够在安装目录下发现四个调试器程序,分别是:cdb.exe、ntsd.exe、kd.exe和Windbg.exe。其中cdb.exe和ntsd.exe只能调试用户程序,Kd.exe...转载 2018-05-24 16:05:14 · 929 阅读 · 0 评论 -
客户端启动性能优化实践
https://blog.youkuaiyun.com/yujiankk/article/details/17251529https://blog.youkuaiyun.com/jsutluo/article/details/6725461https://blog.youkuaiyun.com/suhuaiqiang_janlay/article/details/51934024https://code.google.com/arc...原创 2018-05-23 14:56:23 · 738 阅读 · 0 评论 -
软件调试总结及分享
1、 软件调试对软件开发的意义。通过软件调试,我们可以更深刻的理解语言深处的实现原理。如利用Windbg深入理解变量的存储模型:我们可以通过windbg验证查看C++书上关于各种类型变量存储区域的说明,简单来说就是全局变量和静态变量会被编译到可执行文件的数据节(分只读和可读写)中, 非静态的局部变量则分配在堆栈(stack)上,而new(malloc)出来的内存则分配在堆(heap)上。有人做过...原创 2018-05-23 11:46:33 · 8819 阅读 · 0 评论 -
崩溃、性能优化工具简单说明及总结
1、崩溃分析工具VS,上手容易,图形界面化好,能分析启动耗时,CPU,内存等性能。Windbg,功能十分强大,和VS一起分析,可以得到更多,但是各种命令比较多,不适合新手操作。死锁,崩溃,卡死,内存泄漏(umdh.exe工具),内存,CPU耗时,都不在话下。DebugDiag.msi 是微软提供的一个强大的工具,能自动分析出崩溃,卡死,内存占用,内存泄漏,堆信息报告,部分性能分析。IDA Pro...原创 2018-05-23 11:41:50 · 1129 阅读 · 1 评论 -
学习使用常用的windbg命令(u、dt、ln、x)(转)
详细(1)u命令(反汇编)(2)dt命令(查看数据结构)(3)ln命令(查找就近的符号)(4)x命令(显示模块的符号)(5)k命令(显示调用栈)(6)d命令(以数据方式显示)(7)b命令(断点)(8)lm lmvm (显示模块信息) (9) .reload (重加载模块)(10) !process !thread .process .thread(查看进程线...转载 2018-09-26 15:51:32 · 1265 阅读 · 0 评论 -
Appverifier使用说明及原理
转载地址 AppVerifier 特别用于检测和帮助调试内存损坏、危险的安全漏洞以及受限的用户帐户特权问题。AppVerifier 有助于创建可靠且安全的应用程序,方法是监视应用程序与Windows操作系统的交互,并配置应用程序使用的对象、注册表、文件系统和 Win32 API(包括堆、句柄和锁)。AppVerifier 还包括检查,以便预测应用程序在非管理员环境中的执行情况。 1...转载 2018-09-29 21:42:19 · 8305 阅读 · 0 评论 -
win32堆及内部结构(转)
win32堆及内部结构目录默认堆堆内部结构堆段堆块堆分配和释放实例前端分配器旁视列表前端分配器和低碎片前端分配器低碎片前端分配器后端分配器内存分配步骤:内存释放过程默认堆Windows在创建一个新的进程时会为该进程创建第一个堆,被称为进程的默认堆。默认堆的句柄会被保存在进程环境块_PEB的ProcessHeap字段中。要获得_PE...转载 2018-09-30 15:30:38 · 630 阅读 · 1 评论 -
VC++实现窗口异形(转载)
转载地址:https://www.cnblogs.com/lmqweeds/archive/2012/07/23/2605319.html 由于工作的需要,最近一直在研究异形窗口的实现。网上也有一些相关的文章,能够满足各式各样的异形窗口要求。既然花了时间去研究,就想好好的将其总结记录下来,以免今后遇到类似问题,还要从新花时间去研究。 我需要完成的效果很简单,但实现思路适合大部分的...转载 2019-09-30 14:41:13 · 558 阅读 · 0 评论 -
32位C/C++程序移植到64位系统时需要注意的问题(转)
下面是做32位程序移植到64位程序时资料整理:---------------------------------------------------------------------------------------------------------------------------------概述从32位到64位,根本性的区别在于两种数据类型发生了变化:long和poin...转载 2019-08-13 16:35:25 · 5066 阅读 · 0 评论 -
dll签名两种方法(转载)
dll签名两种方法下面两种签名方法,都是对csp.dll签名,都不是CA颁发的,且效果不同,一:通过自建证书签名下载windows sdk,安装成功后,包含makecert.exe, cert2spc.exe, pvk2pfx.exe, signtool.exe工具,将要签名的csp.dll也放入工具目录,cmd命令切换到工具目录,再执行以下命令1.生成签名证书:makecert...转载 2019-08-06 16:47:14 · 4258 阅读 · 0 评论 -
父窗口和拥有者窗口的区别(转载)
父窗口和拥有者窗口的区别一、概念和区别 在windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息和管理每个窗口。这个数据结构中有四个数据用来构建list,即child、sibling、parent、owner四个域。 所以我们可以看到,窗口之间的关系有两种:owner-owned 关系和 parent-ch...转载 2019-08-01 19:30:49 · 534 阅读 · 0 评论 -
详解c++指针的指针和指针的引用(转)
详解c++指针的指针和指针的引用展示一下使用指针的指针和指针的引用修改传递给方法的指针,以便更好的使用它。(这里说的指针的指针不是一个二维数组)为什么需要使用它们当我们把一个指针做为参数传一个方法时,其实是把指针的复本传递给了方法,也可以说传递指针是指针的值传递。如果我们在方法内部修改指针会出现问题,在方法里做修改只是修改的指针的copy而不是指针本身,原来的指针还保留着原来的...转载 2019-05-15 17:16:40 · 931 阅读 · 0 评论 -
C++使用JsonCpp解析Json数据 示例
1、拼接json std::vector<TAccelKeyInfo>::const_iterator iter = vec_keyinfo.begin(); //for (; iter != vec_keyinfo.end(); ++iter) { Json::FastWriter writer; Json::Value value; value["shor...原创 2019-03-03 10:38:28 · 2787 阅读 · 0 评论 -
Windows消息类型及说明(转)
Windows消息类型及说明转载: https://blog.youkuaiyun.com/himayan46/article/details/53432768 WM_ Window Message 窗口消息,一般用在SendMessage,PostMessage这样的消息函数中 SM_ Static Message 静态标签消息 SS_ Static Sty...转载 2019-01-14 11:01:45 · 2034 阅读 · 0 评论 -
UML——在Visual Studio 2013/2015中设计UML类图(转)
UML——在Visual Studio 2013/2015中设计UML类图1.UML简介Unified Modeling Language (UML)又称统一建模语言或标准建模语言。简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是他们的主要用途简介:1.用例图:对系统的使用方式分类.2.类图:显示类和它们的相互关系。3.对象图:只显示...转载 2019-01-14 10:34:43 · 2115 阅读 · 0 评论 -
VC项目中文件类型说明
.APS:存放二进制资源的中间文件,VC把当前资源文件转换成二进制格式,并存放在APS文件中,以加快资源装载速度。资源辅助文件。 .BMP:位图资源文件。 .BSC:浏览信息文件,由浏览信息维护工具(BSCMAKE)从原始浏览信息文件(.SBR)中生成,BSC文件可以用来在源代码编辑窗口中进行快速定位。用于浏览项目信息的,如果用source brower的话就必须有这个文件。可以在projec...转载 2018-12-18 11:21:05 · 859 阅读 · 0 评论 -
API Monitor简介(API监控工具)(转)
API Monitor简介(API监控工具)API Monitor是一个免费软件,可以让你监视和控制应用程序和服务,取得了API调用。 它是一个强大的工具,看到的应用程序和服务是如何工作的,或跟踪,你在自己的应用程序的问题。64位支持API监控支持监控的64位应用程序和服务。 64位版本只能用来监视64位应用程序和32位版本仅可用于监测的32位应用程序。 要监视在64位Windo...转载 2018-11-12 14:49:18 · 2321 阅读 · 0 评论 -
windbg调试命令
windbg调试命令 #调试命令窗口 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#使用gflags.exe工具(在windbg所在目录下),让某个进程启动时,拉取windbg进行调试如下截图:当名称为captcomm.exe的进程启动时,拉起windbg调试也可通过脚本命令来实现:...转载 2018-11-05 19:05:40 · 5637 阅读 · 0 评论 -
基于WinDbg的内存泄漏分析
基于WinDbg的内存泄漏分析在前面C++中基于Crt的内存泄漏检测一文中提到的方法已经可以解决我们的大部分内存泄露问题了,但是该方法是有前提的,那就是一定要有源代码,而且还只能是Debug版本调试模式下。实际上很多时候我们的程序会用到第三方没有源代码的模块,有些情况下我们甚至怀疑系统模块有内存泄露,但是有没有证据,我们该怎么办? 这时我们就要依靠无所不能的WinDbg了。WinDbg的!h...转载 2018-11-07 16:12:22 · 3448 阅读 · 0 评论 -
Windbg实用手册(转)
Windbg实用手册Windbg工作中用的不多,所以命令老是记不住,每次使用都要重新查命令,挺烦。趁这次培训的机会好好测试和总结了一下,下次再用就方便多了。在这里一起共享一下,如果有错误,请指正。 基本知识和常用命令(1) Windbg下载地址http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx...转载 2018-11-02 17:09:21 · 593 阅读 · 0 评论 -
从点击Button到弹出一个MessageBox, 背后发生了什么(转)
从点击Button到弹出一个MessageBox, 背后发生了什么思考一个最简单的程序行为:我们的Dialog上有一个Button, 当用户用鼠标点击这个Button时, 我们弹出一个MessageBox。 这个看似简单的行为, 谁能说清楚它是如何运行起来的,背后究竟发生了什么? 下面是我个人尝试的解答: (1)我们的鼠标点击事件到达设备的驱动程序, 驱动程序把消息放...转载 2018-11-06 09:42:29 · 412 阅读 · 0 评论 -
windows内存结构概述(转)
windows内存结构概述 13.1 Windows的虚拟地址空间安排13.1.1虚拟地址空间的分区(即虚拟地址空间布局) 进程的地址空间划分 分区 x86 32位 Windows 3GB用户模式下的x86 32位Windows X64 64位 Windows ...转载 2018-09-30 18:29:27 · 1623 阅读 · 0 评论 -
解决窗口刷新闪烁
解决窗口刷新闪烁转载地址:http://www.cppblog.com/eday/archive/2007/03/19/20106.html一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。先来谈谈闪烁产生的原因原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上只是转载 2017-05-31 16:52:00 · 3790 阅读 · 1 评论 -
关于使用curl下载网页源码中文乱码问题!
关于使用libcurl下载网页源码中文乱码问题!直接改官网的demo https://curl.haxx.se/libcurl/c/example.html,https.c 代码如下:/*************************************************************************** *原创 2017-02-08 10:22:26 · 3694 阅读 · 1 评论 -
检查CString类型的密码是否符合规范
参考:http://blog.youkuaiyun.com/shushuidewoniu/article/details/10012389//"8-20位字母,数字或字符,至少包含两种" 字符长度在进入函数前判断过了bool LoginDlg::IsPasswordLegal(CString& password) { bool has_number = false; bool has_up原创 2016-12-08 15:00:59 · 498 阅读 · 0 评论 -
添加和删除显示任务栏图标示例
添加和删除显示任务栏图标示例void CProcessDlg::addTray()//添加显示任务栏图标{ NOTIFYICONDATA tnd; tnd.cbSize=sizeof(NOTIFYICONDATA); tnd.hWnd=this->m_hWnd; tnd.uID=IDI_ICON1;//任务栏显示的图标 tnd.uFlags=NI原创 2013-07-08 16:32:35 · 1242 阅读 · 0 评论 -
STL实用入门教程(1)----学习
关于STL,对于在什么情况下应该使用哪个容器和算法都感到比较茫然一、什么是STL,使用STL的好处;二、STL的string类型的使用方法。STL的简介:STL(StandardTemplate Library,标准模板库)STL的代码从广义上讲分为三类:container(容器)即是数据结构中的结构,如队列,栈等、iterator(迭代器)和algor原创 2013-05-20 00:52:31 · 4639 阅读 · 0 评论 -
一步一步写 MakefileC/C++
作者: wangweidong / 2011年09月26日什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就转载 2013-05-31 13:07:46 · 708 阅读 · 0 评论 -
多线程--内核对象和句柄泄露&CloseHandle
转载地址:http://hi.baidu.com/yangdgjy/item/ac4fc7fe83750dc30dd1c8a41.什么是内核对象?内核对象是操作系统分配的一个内存块,该内存块是一个数据结构,用于管理对象的相关信息。当应用程序要与系统设备交互的时候,将使用内核对象。而出于安全考虑,进程是不能直接操作内核对象的,于是操作系统提供相应的函数来访问它们。存取转载 2013-05-14 10:21:39 · 959 阅读 · 0 评论