- 博客(7)
- 资源 (2)
- 收藏
- 关注
原创 使用Windbg定位内存泄露
在网上看了两篇文章,整理一下,大致内容如下: 场景一:运行Debug版本程序,用Windbg attach 上去,等程序退出时,基于内存泄露报告,定位内存泄露的位置。 首先使用windbg工具gflags.exe设置内存启动跟踪内存泄露进程的user stack启动方法就是运行下面指令gflags.exe /i test.exe +ust 需要通过gflags.exe工具打
2015-08-16 17:01:19 3840
原创 《深入解析Windows操作系统》要点整理
关于操作系统中为什么要使用句柄:个人理解是,因为虚拟内存的机制,导致同一个对象的物理地址是经常变化的,所以操作系统不能通过物理地址直接操作对象,而采用句柄这样的索引来查找物理地址。在同一个进程中,其实是可以通过虚拟地址去查找对象的。但句柄相对于用虚拟地址的方式还有个好处,就是他只是一个索引,操作他并不会有更改对象内容的风险。 关于LSP:应用程序调用Ws2_32.dll的API
2015-08-16 16:29:16 2467
原创 《软件调试》要点整理
第一部分:知识点三种异常类型比较:错误异常、陷阱异常、中止异常错误异常中断完成后,会回到错误的指令,继续执行它(例如:页错误,虚拟内存原理);陷阱异常中断完成后,会回到错误指令的下一条,继续执行(例如:断点调试的原理);中止异常,直接导致软件中止运行。进程启动时最先加载的是EXE和NTDLL.DLLNTDLL.DLL:是沟通用户空间和内核空间的桥梁,用户
2015-08-16 10:13:28 663
转载 异步过程调用(APC)——操作系统实现异步的原理
apc可以看成就是内核里的定时器,为了给自己一个在本函数返回后还能执行的一次机会,有很多操作是需要在函数返回后才能执行.类似于析构函数但不完全是。apc的最大特点就是在本函数返回后才执行,而且是在本线程中。而内核提供的原生的定时器,执行的环境可能就不是原始的线程了。windows天生就是个异步框架,里面大量的设计都是为异步而设计,比如IRP,就是贯穿整个windows的异步框架
2015-08-15 10:18:19 4066 2
转载 Windows进程间通信
因为Windows中每个进程都有自己的虚拟地址空间,所以一个进程无法访问到别一个进程的地址空间,因此相对来说进程间的通信要复杂一些。Windows操作系统为应用程序之间的进程间通信,数据共享提供了很多机制,称为interprocess communications (IPC)。其中一些机制可以用来在同一台计算机内不同进程之间通信,一些可以在网络中不同计算机上运行的进程之间进行通信。 典
2015-08-13 17:58:58 1445 2
转载 一则简单的Windows共享内存IPC代码
Windows共享内存可以让两个进程对同一块内存进行读写。以下有2个进程,a.cpp生成A进程,b.cpp生成b进程。那么a进程将不停地读名为"Global\\MyFileMappingObject"的共享内存块,而b进程不停地写名为"Global\\MyFileMappingObject"的共享内存块。从而实现IPC。//a.cpp#include #include #inc
2015-08-12 20:04:20 478 1
转载 Windows进程间各种通信方式浅谈
1 Windows进程间通信的各种方法 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。 多进程/多线程是Windows操作系统的一个基本特征。Microsoft Win32应用编程接口(Application Programming Interface, API) 提供了大量支持应用程序间数据共享
2015-08-09 08:05:05 3200
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人