调试
文章平均质量分 83
FrankieWang008
从事c# C++ VC++,欢迎大家一起讨论学习~~
展开
-
OutputDebugString用法
调试必用的工具:char * bug;bug = (char *)malloc(100);memset(bug,0,100);sprintf(bug,"VSBufferEntry::AppendBuffer 线程内部数据缓存区已满 entry_size:%d Entry_Limit:%d",entry_size,Entry_Limit);OutputDebugString原创 2011-11-01 11:18:31 · 3353 阅读 · 2 评论 -
WinDBG 的首选资源
首先,WinDBG是在Windows操作系统上进行调试的首选资源。以下是它的主页: http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx WinDBG的帮助文件是学习WinDBG的好帮手,但是这个帮助文件内容非常多,初学者可能觉得无从下手。因此建议您先阅读《软件调试》一书的第30章,先掌握基本的概念、命令和要领。OSR是转载 2013-05-31 13:48:16 · 1007 阅读 · 0 评论 -
UMDH.EXE 来定位应用程序内存泄露的问题
安装完WinDbug之后,在WinDbug路径下会有一个UMDH.exe的文件,通过这个文件可以通过“栈回溯数据库”的方式定位应用程序内存泄露的地方。The User-Mode Dump Heap (UMDH) tool, Umdh.exe, analyzes the Microsoft Windows heap memory allocations for a given process原创 2013-05-31 16:03:58 · 4523 阅读 · 1 评论 -
WinDebug 配置 调试 设置
今天初次使用WINDBG,遇到了两个问题,最后解决了。此处和大家一起分享一下:1) WARNING: Non-directory path我在符号路径里都填加了还是遇到,这时我发现其实只要添加路径即可,记得不要加入文件名。2)WARNING: Unable to verify checksum for使用VC工具包中的editbin工具可以为程序文件增加校验和原创 2013-06-07 13:50:09 · 5479 阅读 · 2 评论 -
VS2008 反汇编 小解
了解反汇编的一些小知识对于我们在开发软件时进行编程与调试大有好处,下面以VS2008环境下的VC++简单介绍一下反汇编的一些小东西!如果有些解释有问题的地方,希望大家能够指出。1、新建简单的VC控制台应用程序(对此熟悉的同学可以略过)A、打开Microsoft Visual Studio 2008,选择主菜单“File”B、选择子菜单“New”下面的“Project”,打开转载 2013-06-27 11:28:34 · 1147 阅读 · 0 评论 -
密码控件安全技术浅析及攻击实例
密码控件安全技术浅析及攻击实例密码控件是一个很常见的控件,这篇文章主要介绍一下安全密码控件的一些实现思路和攻击思路。 1 物理密码键盘和密码控件的对比 先说一下程序中的密码控件和现实中的密码键盘的对比。几乎每个人都在银行或者ATM机器上输入过密码,那在输入密码的过程中你接触到的那个键盘就是一个金融密码键盘。一般柜台的密码键盘都像鼠标一样带一个数据线,这个数据线就是连接密码键盘和转载 2013-07-23 13:25:34 · 11081 阅读 · 4 评论 -
WinDbg 揪出驱动卸载而没有释放的内存
标 题: 【原创】揪出驱动卸载而没有释放的内存作 者: correy时 间: 2013-07-13,11:33:14链 接: http://bbs.pediy.com/showthread.php?t=175394因为以前在工程中解决过,在实际中经常发生,所以有此文,以备终结和以后使用.先来一个示例的工程,代码如下:#include #define TAG转载 2013-07-23 13:48:06 · 4121 阅读 · 0 评论 -
Windebug 调试多线程程序死锁
// CTestThreadDlg 对话框class CTestThreadDlg : public CDialog{// 构造public:CTestThreadDlg(CWnd* pParent = NULL);// 标准构造函数 // 对话框数据enum { IDD = IDD_TESTTHREAD_DIALOG }; protected:virtua原创 2013-07-31 15:48:30 · 3468 阅读 · 1 评论 -
_CrtSetDbgFlag检测内存泄露
介绍:动态分配、回收内存是C/C++编程语言一个最强的特点,但是中国哲学家孙(Sun Tzu,我不知道是谁?那位知道?) 指出,最强的同时也是最弱的。这句话对C/C++应用来说非常正确,在内存处理出错的地方通常就是BUGS产生的地方。一个最敏感和难检测的BUG就是内存泄漏-没有把前边分配的内存成功释放,一个小的内存泄漏可能不需要太注意,但是程序泄漏大块内存,或者渐增式的泄漏内存可能引起转载 2013-08-06 13:14:27 · 1462 阅读 · 0 评论 -
WinDbug 配置
Debug和Release编译下的程序,要尽心相关属性设置,否则默认Release下的程序是不能定位到 WinDbgTest!TTSS::XXXXX里面去的VS2008的Release中要增加如下的设置:C/C++->优化->优化:禁用(/0d)C/C++->优化->全程序优化:否C/C++->常规->调试信息格式:用于"编辑并继续"的程序数据库 /ZI链接转载 2013-05-23 11:06:12 · 2144 阅读 · 0 评论 -
Heap corruption
最近写程序忽然发现了一些错误,运行总是报Heap corruption detected.断点单步发现总是在delete的时候出错。以前也出现过,不过没啥注意,现在想留着是个大大的心病!于是上网查了相关资料:下面是转载资料:http://www.cppblog.com/kerlw/archive/2007/04/10/21604.aspx今天写程序的时候到一转载 2013-05-28 17:20:44 · 977 阅读 · 0 评论 -
Net Framework Initialization Error – Unable to find a version of the runtime to run this applicatio
.Net Framework Initialization Error – Unable to find a version of the runtime to run this applicatio分类: 其它2011-12-14 08:22 1880人阅读 评论(1) 收藏 举报部署一个VS2010开发的程序时遇到 了一个非常奇怪的问题,客户端上已经安装了.net fr转载 2012-07-11 12:14:46 · 1779 阅读 · 0 评论 -
_CrtSetBreakAlloc
_CrtSetBreakAlloc()通过把_CrtSetBreakAlloc放在类的构造函数或其他预执行断点位置的前面,_CrtSetBreakAlloc的参数就是打算设置断点的数值。当用VisualLeakDetector 无法找到内存溢出的位置时,用_CrtSetBreakAlloc能够辅助找到错误源头。或者 在头文件添加如下代码// 在入口函数cpp中添加以原创 2012-09-13 15:56:00 · 2384 阅读 · 0 评论 -
Release版本程序----------问题调试
如果在您的开发过程中遇到了常见的错误,或许您的Release版本不能正常运行而Debug版本运行无误,那么我推荐您阅读本文:因为并非如您想象的那样,Release版本可以保证您的应用程序可以象Debug版本一样运行。如果您在开发阶段完成之后或者在开发进行一段时间之内从来没有进行过Release版本测试,然而当您测试的时候却发现问题,那么请看我们的调试规则1:规则1: 经常性对开发软转载 2012-09-26 13:55:17 · 1168 阅读 · 0 评论 -
使用SetUnhandledExceptionFilter让程序优雅的崩溃
虽然是大公司的产品,QQ它还是会在我们的折腾下崩溃的,但是它总是崩溃的很优雅,还要弹出自己的对话框来结束。并且发送报告,去掉了系统默认的发送报告的对话框。所以一拍脑袋,想让自己的程序崩溃的体面一点。自己想了大概的思路,觉得可以用一个进程来监控目标程序。的确也可以拿到了目标程序崩溃的信息,知道它什么时候崩溃的,也可以做额外的操作,但是这样是没办法把默认的发送错误的对话框去掉的。转载 2012-09-26 16:25:14 · 1033 阅读 · 0 评论 -
如何定位Release程序崩溃原因
1 案例描述作为Windows程序员,平时最担心见到的事情可能就是程序发生了崩溃(异常),这时Windows会提示该程序执行了非法操作,即将关闭。请与您的供应商联系。呵呵,这句微软的“名言”,恐怕是程序员最怕见也最常见的东西了。在一个大型软件的测试过程中,初期出现程序崩溃似乎成了不可避免的事。其实测试中出现程序崩溃并不可怕,反而是测试的成功。作为开发的我们更需要关心的是程序中的转载 2012-09-26 16:25:53 · 4953 阅读 · 0 评论 -
WinDbg学习笔记(一)
WinDbg学习笔记(一)--认识WinDbg一、前言 本人学习WinDbg已经有好几天了,虽说技术掌握的还不太熟练,不过也总算是入门了在学习WinDbg的过程中,觉得WinDbg真的比OllyDbg难很多(不知道是不是习惯OllyDbg的缘故),所以就想做点笔记,那以后自己忘了也可以拿出来复习,也为同样在学WinDbg的兄弟提供一点帮助。文章写得有点嗦,初学者应该可以很快看完,转载 2013-05-23 11:06:55 · 1780 阅读 · 0 评论 -
WinDbug 发现程序内存溢出的地方
在使用com的过程中,发现无论是vs2005还是boundscheck都找不到内存泄露,但是程序一跑起来, 很快就上几十M的内存泄露. 找啊找啊找, 找了半天, 还是没发现. 求助同事, 他采用了windbg, 不过好像也不是那么简单, 很多时候甚至于需要一个函数一个函数通过console方式来进行测试. 总结一下, 在使用com编程的时候需要注意的地方:1,确保CoIni转载 2013-05-23 11:02:00 · 1250 阅读 · 0 评论 -
WinDbug 查找调试程序内存溢出点
WinDbug调试Debug和Release编译下的程序,要进行相关属性设置,否则默认Release下的程序是不能定位到 WinDbgTest!TTSS::XXXXX里面去的VS2008的Release中要增加如下的设置:C/C++->优化->优化:禁用(/0d)C/C++->优化->全程序优化:否C/C++->常规->调试信息格式:用于"编辑并继续"的程序数据库 /ZI链接器原创 2013-05-24 09:54:11 · 5251 阅读 · 3 评论 -
堆栈,堆栈,堆和栈的区别
非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据转载 2014-05-19 13:55:35 · 2951 阅读 · 0 评论