windows
文章平均质量分 54
anranjingsi
这个作者很懒,什么都没留下…
展开
-
windows全局共享内存——不同权限进程之间共享内存
服务的共享内存原创 2021-08-22 19:16:58 · 4008 阅读 · 2 评论 -
windows用户态程序排错——程序无法运行和奔溃排查
有的时候我们的应用程序在调试时使用的好好的,但在其他的PC上运行时就可能会出现无法运行、异常退出的问题,这个时候就需要我们有足够的手段进行排查:1)日志排查:好的应用程序也必定集成了好的日志模块,用于程序异常时提供足够的信息供开发人员迅速定位问题;所以在开发程序的时候必不可少的就是在关键位置添加日志,在程序已知的异常判断位置,将错误信息尽可能多的写入日志:比如函数执行失败,一般都需要将失败的返回值、当前的错误码以及关键的函数参数写入日志。日志系统...原创 2021-01-16 20:43:11 · 558 阅读 · 0 评论 -
C语言单元测试(UT)用例编写——gtest+stub打桩
stub工具源码:https://github.com/coolxv/cpp-stub/tree/master/src这里做下简单的背景介绍,打桩的概念:可以先去看下先去的文章:https://blog.csdn.net/anranjingsi/article/details/106084223前面也使用过gtest+gmock框架给C/C++做单元测试,但gmock的使用有着明显的限制:1)必需是C++的类函数词可以被mock; 2)要求编码时就要考虑那些函数会被mock,将其定义为虚函数;3)需原创 2021-01-16 20:40:59 · 13924 阅读 · 2 评论 -
windows用户态程序排错——异常处理
关于异常1、C++标准异常:c++提供了一种异常的处理方法:try()catch();不知道小伙伴有没有这样的疑惑:1)为何我们要捕获异常?2)何时使用异常处理?3)异常处理会不会降低程序性能?4)如何处理异常呢?1)为何需要捕获异常?何时抛出异常?异常处理就是处理程序中的错误。异常,通俗来说,对于被调用的函数,如果说因为调用者所引发的错误,且无法继续执行时,需要通知调用者,发生错误无法执行了;让上层的逻辑去处理它。异常处理,对于程序来说,可以知道什么出错了?哪里出错了?以及为什原创 2020-09-20 09:25:42 · 339 阅读 · 1 评论 -
C\C++内存池的实现
一开始想到要写一个内存池是因为项目过程中,需要用到一个链表进行数据的管理,但是因为需要不停的对链表中的节点进行增加和删除,因此如果不停的malloc和free,给我的感觉是会不会太浪费内存和CPU了?所以我开始想如何才能解决这个麻烦。我的问题:一个拥有最大长度(MAX_LEN)的链表,然后我会不断的遍历链表取数据,并删除节点;也会不断的向链表插入新的数据节点;当插入时发现链表长度>MAX_LEN,就删除最开始插入的那个数据节点。乍一看,这个问题如果用不停的malloc、free,insertL原创 2020-07-01 23:23:12 · 109 阅读 · 0 评论 -
如何监控windows进程的句柄、内存和cpu(三)
紧接上文,接下来就是获取进程的句柄数,句柄就是windows进程中各种对象的标识,一般应用程序会通过句柄来执行各种操作,通过监控设备的句柄,我们可以大致判断出进程是否存在异常,比如句柄泄漏,会导致系统卡顿,死机。 看需要用到系统API函数:GetProcessHandleCount函数:BOOL GetProcessHandleCount( HANDLE hProcess, PDWORD pdwHandleCount); 函数说明:检索指定进程的打开句柄的数量参数:.原创 2020-05-15 22:04:46 · 1945 阅读 · 0 评论 -
如何监控windows进程的句柄、内存和cpu(二)
接下来,我们看如何获取进程的CPU使用率:CPU使用率:指进程在一段时间内消耗的CPU时间与该时间段长度的比值。windows本身并没有提供直接获取进程CPU使用率的函数,但我们可以根据进程的计时信息来间接计算出进程的瞬时CPU占用:1)记录进程当前在用户模式和内核模式下已经执行的时间;2)1s后,再次记录进程在用户模式和内核模式下已经执行的时间;3)将两次时间相减,就是这1s时间内进程在CPU上执行的时间;用执行时间/记录间隔时间 = 进程的CPU占比老规矩,看需要用到哪些系.原创 2020-05-14 21:41:44 · 1213 阅读 · 0 评论 -
如何监控windows进程的句柄、内存和cpu(一)
说明:输入一个进程名字,输出该进程的句柄、内存占用、CPU使用情况。ok,那我们来看下如何扯出这个程序,以下演示程序基于vs2008,更高版本可能会有字符问题。1)在系统中查找是否存在指定进程名的进程:这里需要用到windows提供的几个API函数:CreateToolhelp32Snapshot、Process32First和Process32Next。函数的简单介绍:HANDLE WINAPI CreateToolhelp32Snapshot(__in ...原创 2020-05-13 20:18:21 · 1589 阅读 · 0 评论