DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  异常诊断与调试

上一页 1 2 3 4 5 6 7 8 9 10 下一页

摘要:有没有这样的情况,无法静态的通过启动和退出来查找内存泄露,比如网络游戏,你总不能直接关游戏那玩家怎么办? 现在vld支持release,我们可以动态的找。 1.在release版本使用vld了。<PS1> #define VLD_FORCE_ENABLE #include <vld.h> 2.支持g 阅读全文
posted @ 2019-01-21 12:29 DoubleLi 阅读(226) 评论(0) 推荐(0) 编辑

摘要:前提 同Debug版本在VC中配置好VLD的相关信息,拷贝 Visual Leak Detector\bin\Win32目录下所有的文件和vld.ini到工程目标路径下。 强制检测 在程序入口处的cpp中,定义强制检测宏和包含vld头文件 #define VLD_FORCE_ENABLE #incl 阅读全文
posted @ 2019-01-21 12:23 DoubleLi 阅读(1382) 评论(0) 推荐(0) 编辑

摘要:1. 任务管理器 任务管理器可以说是最易获取的系统工具,同时它具有生成转储文件的功能。但要注意的是在64位操作系统上面,默认启动的是64位的任务管理器。使用任务管理器生成转储文件需要遵循一个原则:用32位任务管理器给32位进程(无论该进程是运行在32位还是64位系统上面)生成转储文件,用64位任务管 阅读全文
posted @ 2018-08-15 09:28 DoubleLi 阅读(2299) 评论(0) 推荐(0) 编辑

摘要:定位内存泄漏是C++的一个大问题 我们可以通过如下方式进行定位: 在 debug 模式下,可以看到如下信息: 此时我们注意大括号的内容,这就是可以我们的程序内存泄漏的地方。 将上面注释掉的代码加入,并将大括号的数字填入,就可以让程序停在内存泄漏的地方。 如下,这里我们让程序停在 556 处 参考:h 阅读全文
posted @ 2018-08-06 10:53 DoubleLi 阅读(1190) 评论(0) 推荐(0) 编辑

摘要:前言 一般来说.NET程序员是不用担心内存分配释放问题的,因为有垃圾收集器(GC)会自动帮你处理。但是GC只能收集那些不再使用的内存(根据对象是否被其它活动的对象所引用)来确定。所以如果代码编写不当的话,仍然会出现内存泄漏的问题,常见的情况有:一个静态变量引用了一个应该被释放的对象,事件注册后不解除 阅读全文
posted @ 2018-08-06 10:50 DoubleLi 阅读(586) 评论(1) 推荐(1) 编辑

摘要:在学习FPS3000人脸关键点定位算法时,发现github上的源码,存在大量的内存泄漏问题,在训练的时发现内存一直在增长,测试的时候也存在内存无法彻底释放的问题。 一直以为是存放模型参数vector<class>结构的问题, 采用以下方法手动释放,仍然无法解决问题。 vector<class> re 阅读全文
posted @ 2018-08-06 10:40 DoubleLi 阅读(584) 评论(0) 推荐(0) 编辑

摘要:转载地址点击打开链接 1、生成dmp的程序 #include <dbghelp.h> #pragma comment(lib, "dbghelp.lib")//设置异常处理回调函数SetUnhandledExceptionFilter(UnhandledExceptionFilter);//异常处理 阅读全文
posted @ 2018-02-27 11:31 DoubleLi 阅读(1036) 评论(0) 推荐(0) 编辑

摘要:采用下面的方法。重新编译了一下依赖的库,OK了。 问题描述: 今天用VS2010编译一个在VS2008下Coding的工程的时候,VS给出了一堆链接错误信息,如下图所示: 在ErrorList里面列出了34个链接错误信息,但仔细看的话,其实很多都是重复的,只有两三个外部符号未正确解析,如下: "pu 阅读全文
posted @ 2017-07-28 11:22 DoubleLi 阅读(898) 评论(0) 推荐(1) 编辑

摘要:关于api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案 目录 关于api-ms-win-crt-runtimel1-1-0dll缺失的解决方案 目录 安装VC reditexe程序解决 安装KB2999226补丁程序 更新到Win7 SP1 无法安装更新解决方案-删除目录 阅读全文
posted @ 2017-07-12 17:43 DoubleLi 阅读(1086) 评论(0) 推荐(0) 编辑

摘要:error LNK2005: _DllMain@12 已经在 dllmain.obj 中定义 今天遇到了同样的问题,搜索搜到了这里,后来解决了。。。。。。。。 创建解决方案时,用的是WIN32 DLL,添加了MFC ATL的支持,自动生成文件中是没有现成的DllMain函数的。后来需要用到这个入口函 阅读全文
posted @ 2017-05-15 13:57 DoubleLi 阅读(1034) 评论(0) 推荐(0) 编辑

摘要: 阅读全文
posted @ 2017-05-04 09:21 DoubleLi 阅读(1061) 评论(0) 推荐(0) 编辑

摘要:原文链接:5 simple ways to troubleshoot using Strace 我很意外大部分人都不知道如何使用strace。strace一直是我的首选debug工具,因为它非常的有效,很多问题都能够用它进行排查。 strace是什么? Strace是一个用来跟踪系统调用的简易工具。 阅读全文
posted @ 2016-06-30 15:22 DoubleLi 阅读(9533) 评论(0) 推荐(0) 编辑

摘要:我们可以通过 1) gdb prog_name -> r 用在逐步调试自己的程序时 2) gdb -> attach process_id 正在运行中的后台程序突然卡在了某个地方,先ps再gdb/attach 3) gdb prog_name core 程序core掉了 三种方式对一个程序进行调试; 阅读全文
posted @ 2016-06-30 14:54 DoubleLi 阅读(1736) 评论(0) 推荐(0) 编辑

摘要:只做工作总结备忘之用。 正在烧镜像,稍总结一下进来改bug遇到的问题。 一个项目里要用到L3 switch的nat,vrrp功能,但实地测试中偶然出现write file挂死的情况,但不是必现。交付在即,于是加调试信息,反复跑配置的脚本,定位bug。 一,期初怀疑是vtysh与vrrpd进程通信出现 阅读全文
posted @ 2016-06-30 14:52 DoubleLi 阅读(578) 评论(0) 推荐(0) 编辑

摘要:摘要:在使用多线程程序时,有时会遇到程序功能异常的情况,而这种异常情况并不是每次都发生,很难模拟出来。这时就需要运用在程序运行时跟踪线程的手段,而linux系统的LWP和strace命令正是这种技术手段。本文对LWP和strace命令做了简明扼要的介绍,并通过一个实例来说明如何运用。总而言之,LWP 阅读全文
posted @ 2016-06-30 14:42 DoubleLi 阅读(5923) 评论(0) 推荐(0) 编辑

摘要:gdb 调试多线程如果目标进程已经core dump了,那么 gdb -c core xxx xxx是对应的程序文件。如果目标进程还在运行,通常此时用于调试线程死锁的情况。有两种方法一是 gdb -p xxx xxx是该进程的进程ID或者用gcore xxx先获取对应进程的core,他会生成一个co 阅读全文
posted @ 2016-06-30 14:37 DoubleLi 阅读(1319) 评论(0) 推荐(0) 编辑

摘要:线程有自己的寄存器,运行时堆栈或许还会有私有内存。 gdb提供了以下供调试多线程的进程的功能: * 自动通告新线程。 * \ "thread THREADNO\ ",一个用来在线程之间切换的命令。 * \ "info threads\ ",一个用来查询现存线程的命令。 * \ "thread app 阅读全文
posted @ 2016-06-30 14:36 DoubleLi 阅读(371) 评论(0) 推荐(0) 编辑

摘要:一、多线程调试 多线程调试重要就是下面几个命令: info thread 查看当前进程的线程。 thread <ID> 切换调试的线程为指定ID的线程。 break file.c:100 thread all 在file.c文件第100行处为所有经过这里的线程设置断点。 set scheduler- 阅读全文
posted @ 2016-06-30 14:34 DoubleLi 阅读(702) 评论(1) 推荐(0) 编辑

摘要:GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说GDB主要调试 阅读全文
posted @ 2016-06-30 14:23 DoubleLi 阅读(17441) 评论(0) 推荐(0) 编辑

摘要:方法一:strace -fp pid , 可以跟踪所有线程, 进程的系统调用。 [root@xxxx]strace -p 24091 Process xxx attached - interrupt to quit [ Process PID=24091 runs in 32 bit mode. ] 阅读全文
posted @ 2016-06-30 14:18 DoubleLi 阅读(8792) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 9 10 下一页