DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
上一页 1 ··· 354 355 356 357 358 359 360 361 362 ··· 471 下一页

2014年3月31日

摘要: Effective minidump简介在过去几年里,崩溃转储(crash dump)成为了调试工作的一个重要部分。如果软件在客户现场或者测试实验室发生故障,最有价值的解决方式是能够创建一个故障瞬间的应用程序状态镜像,然后可以在开发者的机器上通过调试器进行分析。第一代的crash dump通常被称为“全用户转储(full user dump)”,它包含了进程的虚拟内存的全部内容。毫无疑问,这样的dump对于事后调试非常有价值。但是,这样的dump经常非常大,使得通过电子方式发送给开发者非常困难,甚至没法完成。另外,没用公共接口可以通过程序调用来创建dump,我们必须依赖于第三方工具(例如,Dr 阅读全文
posted @ 2014-03-31 15:57 DoubleLi 阅读(18539) 评论(0) 推荐(1) 编辑

摘要: 我们知道,GDB的backtrace命令可以查看堆栈信息。但很多时候,GDB根本用不上。比如说,在线上环境中可能没有GDB,即使有,也不太可能让我们直接在上面调试。如果能让程序自己输出调用栈,那是最好不过了。本文介绍和调用椎栈相关的几个函数。NAMEbacktrace, backtrace_symbols, backtrace_symbols_fd - support for application self-debuggingSYNOPSIS#include int backtrace(void **buffer, int size);char **backtrace_symbols(voi 阅读全文
posted @ 2014-03-31 15:56 DoubleLi 阅读(15486) 评论(0) 推荐(2) 编辑

摘要: IntroductionOne of the revolutionary features of C++ over traditional languages is its support for exception handling. It provides a very good alternative to traditional techniques of error handling which are often inadequate and error-prone. The clear separation between the normal code and the erro 阅读全文
posted @ 2014-03-31 14:17 DoubleLi 阅读(827) 评论(0) 推荐(0) 编辑

摘要: C++语言的运行时环境是基于栈的环境,堆栈跟踪(tracestack)就是程序运行时能够跟踪并打印所调用的函数、变量及返回地址等,C++异常中的堆栈跟踪就是当程序抛出异常时,能够把导致抛出异常的语句所在的文件名和行号打印出来,以及把调用抛出异常的语句的函数以及其它上层函数信息都打印出来。1. 为什么需要堆栈跟踪当你在开发程序时,你是否曾遇到过程序运行过程中突然当机,而你不知道哪一行代码出的问题;你是否曾遇到过程序调试过程中突然抛出异常,而你不知道哪一行代码出的问题;你是否曾遇到过当你在单步调试时突然抛出异常而你却忘了单步执行到哪一步时抛出的异常,于是你只好重来一次。Beta程序在客户那里试运行 阅读全文
posted @ 2014-03-31 14:13 DoubleLi 阅读(14773) 评论(0) 推荐(1) 编辑

2014年3月28日

摘要: 难怪很多前辈说调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。我以前接触的程序大多是有比较成形的思路和方法,调试起来出的问题都比较小,最近这个是我自己慢慢摸索调试,接触了很多新的调试方法,并查了很多前辈的总结,受益匪浅,总结以前的和新的收获如下:VC调试篇设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug Configuration自动包含调试信息,但是是不是Debug版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configurati 阅读全文
posted @ 2014-03-28 17:53 DoubleLi 阅读(1259) 评论(0) 推荐(0) 编辑

摘要: http://www.cppblog.com/Walker/archive/2012/11/08/146153.htmlhttp://blog.sina.com.cn/s/blog_48f93b530100fsln.html在Windows平台下用C++开发应用程序,最不想见到的情况恐怕就是程序崩溃,而要想解决引起问题的bug,最困难的应该就是调试release版本了。因为release版本来就少了很多调试信息,更何况一般都是发布出去由用户使用,crash的现场很难保留和重现。本文将给出几个解决方案,完成对release版应用程序crash错误的调试。(本文只讨论Windows平台MSVC环境 阅读全文
posted @ 2014-03-28 17:13 DoubleLi 阅读(566) 评论(0) 推荐(0) 编辑

摘要: BitBlt该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。原型:BOOL BitBlt( HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop);参数: hdcDest:指向目标设备环境的句柄。nXDest、nYDest:指定目标矩形区域左上角的X轴和Y轴逻辑坐标nWidth、nHeight:指定源和目标矩形区域的逻辑宽度和逻辑高度。hdcSrc:指向源设备环境的句柄。nXSrc、nYS 阅读全文
posted @ 2014-03-28 17:08 DoubleLi 阅读(1616) 评论(0) 推荐(0) 编辑

摘要: 自己平时收集的一些技巧与心得,这里分享出来,普及一下知识。 1.如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disable(Debug),Debut info选Program Database。在Link标签中选中Generate debug info复选框。 注:只是一个介乎Debug和Release的中间状态,所有的ASSERT、VERIFY都不起作用,函数调用方式已经是真正的调用,而不查表,但是这种状态下Qui 阅读全文
posted @ 2014-03-28 17:05 DoubleLi 阅读(3263) 评论(0) 推荐(0) 编辑

摘要: 1案例描述作为Windows程序员,平时最担心见到的事情可能就是程序发生了崩溃(异常),这时Windows会提示该程序执行了非法操作,即将关闭。请与您的供应商联系。呵呵,这句微软的“名言”,恐怕是程序员最怕见也最常见的东西了。在一个大型软件的测试过程中,初期出现程序崩溃似乎成了不可避免的事。其实测试中出现程序崩溃并不可怕,反而是测试的成功。作为开发的我们更需要关心的是程序中的哪个函数或哪一行导致了系统崩溃,这样才能有针对性的进行改正。本文描述了自己总结的几种定位崩溃的办法。2案例分析以下是几种常见的崩溃现象及对应的处理办法:1. 对于Release版本必现的崩溃且在Debug版本上也崩溃的程序 阅读全文
posted @ 2014-03-28 16:34 DoubleLi 阅读(5070) 评论(0) 推荐(0) 编辑

摘要: 源代码下载 在PC机上,对于YUV格式的视频如YV12,YUY2等的显示方法,一般是采用DIRECTDRAW,使用显卡的OVERLAY表面显示。OVERLAY技术主要是为了解决在PC上播放VCD而在显卡上实现的一个基于硬件的技术。OVERLAY的出现,很好的解决了在PC上播放VCD所遇到的困难。早期PC处理能力有限,播放VCD时,不但要做视频解码工作,还需要做YUV到RGB的颜色空间转换,软件实现非常耗费资源,于是,YUV OVERLAY表面出现了,颜色空间转换被转移到显卡上去实现,显卡做这些工作是具有天生优势的。 随着显卡技术的发展,OVERLAY的局限性也越来越充分的暴露出来。一般显卡只支 阅读全文
posted @ 2014-03-28 16:26 DoubleLi 阅读(2592) 评论(0) 推荐(0) 编辑

上一页 1 ··· 354 355 356 357 358 359 360 361 362 ··· 471 下一页