DoubleLi

qq: 517712484 wx: ldbgliet

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

2014年3月31日

摘要: 使用代码手工生成dmp文件SetUnhandledExceptionFilter为每个线程设置SetUnhandledExceptionFilter(MyCallBack),(必须在每个线程中启动时调用一次,否则造成无法进入回调函数中)这样该线程中发现未处理的SEH异常时就会进入到MyCallBack 回调中.无聊的是虽然MyCallBack 的参数是SEH异常的结构体指针,但C++异常也会进入到MyCallBack 中.所以只要SetUnhandledExceptionFilter 就能抓到C++的异常了.按C++标准,未处理的C++异常应当是触发unexpected.而MS 放出话说它的编 阅读全文
posted @ 2014-03-31 16:19 DoubleLi 阅读(718) 评论(0) 推荐(0) 编辑

摘要: 在MFC中隐藏运行界面确实花花点功力。 针对对话框程序,一种不是很好地实现方法是在OnPaint函数中添加如下代码:CWnd::ShowWindow(SW_HIDE);添加后执行会发现屏幕会闪烁一下之后只在后台运行。www.2cto.com 有一种好方法,就是在OnInitDialog(...)中加入以下的代码:SetWindowPos(&CWnd::wndNoTopMost,0,0,0,0,SWP_HIDEWINDOW);ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW); 这样,运行对话框程序之后,就不会出现对话框界面了。 阅读全文
posted @ 2014-03-31 16:19 DoubleLi 阅读(721) 评论(0) 推荐(0) 编辑

摘要: 之前碰到论坛里有几个好友,说程序不时的崩溃,什么xxoo不能read的!如果光要是这个内存地址,估计你会疯掉~~所以分享一下基本的调试技巧,需要准备的工具有WinDbg + VC6.0,下面是自己整理的一份自动生成DUMP文件的源代码,只需要添加到工程即可,源代码如下:MiniDump.hMiniDump.cpp1、在CXXDlg::OnInitDialog()中添加这样一段:BOOL CTestDlg::OnInitDialog(){ CDialog::OnInitDialog(); // ...... SetUnhandledExceptionFilter(CrashReportE... 阅读全文
posted @ 2014-03-31 16:16 DoubleLi 阅读(599) 评论(0) 推荐(0) 编辑

摘要: 之前碰到论坛里有几个好友,说程序不时的崩溃,什么xxoo不能read的! 如果光要是这个内存地址,估计你会疯掉~~所以分享一下基本的调试技巧,需要准备的工具有WinDbg + VC6.0,下面是自己整理的一份自动生成DUMP文件的源代码,只需要添加到工程即可,源代码如下:MiniDump.h[cpp]view plaincopyprint?#include#include//#include"dbghelp.h"//#defineDEBUG_DPRINTF1//allowd()//#include"wfun.h"#pragmaoptimize(" 阅读全文
posted @ 2014-03-31 16:07 DoubleLi 阅读(1102) 评论(0) 推荐(0) 编辑

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

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

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