睡在床板下

世事多变,我心中自有主见


  • 首页

  • 关于

  • 分类

  • 搜索

C++ EH exception

发表于 2019-05-08 | 分类于 工作笔记 | 评论数:

介绍某个代理服务器在压力测试时发生异常,以下是定位过程 保存dump因为提早有知道程序会出现异常,所以中间省去了很多步骤,在服务启动时就已经使用windbg attach到了服务进程上,这样一旦程序触发异常windbg立即就会捕获。dump下载:链接:https://pan.baidu.com/s/ ...

阅读全文 »

windows下c++反射功能

发表于 2019-05-08 | 分类于 工作笔记 | 评论数:

背景c++开发的软件在生产环境中运行出现一些bug,比如参数错误等问题,通过日志只能打印异常的行号或函数,但具体的结构体/类的参数内容打印却非常麻烦,无法做到一些更高级语言的反射功能。要做到能够通过变量地址就打印变量的内容信息,就需要依赖ms提供的msdia120.dll和程序编译后的pdb文件。 ...

阅读全文 »

搭建pdb服务器

发表于 2019-05-08 | 分类于 工作笔记 | 评论数:

背景目前使用jenkins进行每日编译、部署,但是一旦程序出现异常后,查找正确的pdb文件也是件麻烦的事情,所以希望能有微软符号服务器一样的功能。 步骤通过google 查找一些资料,自己尝试了下,还是比较简单的. 安装windbg环境变量path 中设置windbg路径。 准备一块大硬盘会保存很多 ...

阅读全文 »

踩内存(内存溢出)的异常定位

发表于 2019-05-07 | 更新于 2019-07-14 | 分类于 工作笔记 | 评论数:

介绍某天晚上11点,钉钉预警提示某服务catch到一个异常导致服务重启,因为是上线了一个多月的服务,半夜遇到这样的问题,整个人有点懵,立刻打开电脑下载dump文件进行分析,不幸的是在分析的过程中,又连续的出现了几次崩溃,在这么反复崩溃、重启折腾了1小时左右,服务终于正常了。 分析dump下载路径:链 ...

阅读全文 »

分析内存泄漏

发表于 2019-05-07 | 更新于 2023-08-16 | 分类于 工作笔记 | 评论数:

介绍本文主要介绍一种通过windbg分析内存泄漏的方法。 现象后台检测程序在某天上报了告警,大概就是某程序的提交内存达到了1.0G。登陆后台查看,该进程已经运行了90天,提交内存每天都在持续上涨,从启动到目前为止大概累计上升了800M。应该是存在内存泄漏。让运维通过工具保存了fulldump 准备工 ...

阅读全文 »

windbg分析临界区死锁

发表于 2019-05-07 | 更新于 2019-05-28 | 分类于 工作笔记 | 评论数:

介绍多线程编程中,对于资源同步导致的死锁问题,应该是开发过程中经常碰到的,同时在问题定位过程中也会花费大量的时间,这里就介绍下如何通过windbg来分析死锁问题。 资源同步windows下资源同步的方法主要是 原子访问 临界区 读写锁 旋转锁 等待函数 事件 信号量 互斥量 其中最常用的应该是临 ...

阅读全文 »

异常引起的死锁

发表于 2019-05-07 | 分类于 工作笔记 | 评论数:

介绍一个json异常导致的死锁分析。同事某天求助帮忙分析一个死锁dump,按照之前查找临界区的方法,他已经具体定位到了某个线程,但是线程打印的堆栈信息却令他没有头绪。 准备工作dump下载地址(提取码:ndel) 步骤1按照之前的方法1)、~*kv 打印所有线程堆栈2)、遍历线程内容,找到可疑点3 ...

阅读全文 »

使用CMap导致服务高CPU

发表于 2019-05-07 | 更新于 2019-06-19 | 分类于 工作笔记 | 评论数:

某天某服务预警一直提示某服务性能不足,cpu已满负荷。很是纳闷,这个服务是纯内存数据,没有io操作;而且都运行了快3个月了,怎么突然就性能不足了? 步骤1半夜从睡梦中被叫醒,先自己缕一缕思路(整个人都是懵的,基本缕不出思路),先解决线上问题, 让运维保存了一份fulldump,然后重启服务,线上正常 ...

阅读全文 »

捕获异常并自动保存dump

发表于 2019-05-07 | 分类于 工作笔记 | 评论数:

SetUnhandledExceptionFilter 捕获的异常有限,比如ctr异常、栈溢出的异常就无法捕获。 /************************************************************************//* 之所以应用程序捕获不到栈溢出异常 ...

阅读全文 »

简单分析minidump(2)

发表于 2019-05-07 | 分类于 工作笔记 | 评论数:

有了前几节的准备工作,我们的程序已经可以自动捕获异常了,那么我们开始通过windbg来分析dump解决实际问题。先从简单入手,CString大小写转化导致的异常(提取码ffk6)。 步骤1使用windbg打开minidump,设置好应用程序的pdb, 执行命令 “.ecxr” 、”kv” ,打印如下 ...

阅读全文 »
1…161718…20

睡在床板下

世事多变,我心中自有主见
195 日志
10 分类
16 标签
简书
浙ICP备18041977号 © 2023 睡在床板下
|