调试
文章平均质量分 56
napu_sh
半路出家的机械师
展开
-
调试Release发布版程序的Crash错误(一)
转自http://blog.sina.com.cn/s/blog_48f93b530100fsln.html 非常感谢作者提供了一个系统的解决方案 在Windows平台下用C++开发应用程序,最不想见到的情况恐怕就是程序崩溃,而要想解决引起问题的bug,最困难的应该就是调试release版本了。因为release版本来就少了很多调试信息,更何况一般都是发布出去由用户使用,cra转载 2010-11-17 14:01:00 · 694 阅读 · 0 评论 -
调试Release发布版程序的Crash错误(二)
转载自http://blog.sina.com.cn/s/blog_48f93b530100fv7y.html 上篇给出的方案一还要补充几句。通过“crash地址 + MAP文件”来定位出错代码位置虽然需要经过比较复杂的地址计算,但却是最简单实现的方式。如果仅仅想通过崩溃地址定位出错的函数,就更加方便了。我在网上找到一个解析MAP文件的小工具,可以非常清晰的列出每个函数的地址,转载 2010-11-17 14:02:00 · 634 阅读 · 0 评论 -
调试Release发布版程序的Crash错误(三)
转自http://blog.sina.com.cn/s/blog_48f93b530100fxvm.html 根据前面两篇博文,我们要定位崩溃行代码,必须要自己根据相关信息文件进行计算。如果需要处理的量比较大,恐怕会很费力气。有没有更简单快速的办法呢? 最直接的想法就是写一个小工具,根据规则和信息进行自动定位,不过开发起来也是要费一番功夫的。令人开心的是,我们可以找到转载 2010-11-17 14:03:00 · 827 阅读 · 0 评论 -
调试Release发布版程序的Crash错误(五)
转自http://blog.sina.com.cn/s/blog_48f93b530100g282.html 当我们把自己的release版本程序发布出去以后,一般都是在用户的机器上运行。这种情况下,对于第四种方案,因为需要pdb文件才能够正确生成堆栈调用的函数行号及代码行号,因此方案四只适用于本地release版的调试,否则只能生成不完整的堆栈信息。对于前三种方案,其实只需要用转载 2010-11-17 14:04:00 · 853 阅读 · 0 评论 -
在VC环境中调试跟踪变量
本文转自http://blog.sina.com.cn/s/blog_48f93b530100hojm.html 在应用程序开发和调试过程中,经常遇到这样的问题:由于某个变量的值被错误地改变,导致程序出错甚至crash,如果程序运行在多线程环境,或者程序逻辑非常复杂,我们想跟踪这个变量的变化将会非常困难。有没有办法能够在调试过程中使程序自动在改变变量处断点呢?这样我们就能一一查转载 2010-11-17 14:33:00 · 1203 阅读 · 0 评论 -
常用GDB调试命令简表
本文转自 http://hi.baidu.com/aquaspace/blog/item/b152bfcc0dc4da1501e928d6.html 命令说明备注file 文件名在gdb中载入某可执行文件 break设置断点支持如下形式:break 行号;break 函数名称;break 行号/函数名称 if 条件转载 2011-06-29 15:08:00 · 641 阅读 · 0 评论 -
Linux下的段错误产生的原因及调试方法
本文转自 http://www.upsdn.net/html/2006-11/775.html 简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址.一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的gdt表,后13位保存相应于转载 2011-06-29 15:17:00 · 729 阅读 · 0 评论 -
C++日志库,log4cplus,log4cpp使用资料手册
转自 http://www.usidcbbs.com/simple/?t1514.htmlC++日志库,log4cplus,log4cpp使用资料手册1 下载log4cpp并解压。2 打开\log4cpp-0.3.4b\msvc6\msvc6.dsw 编译log4cpp工程Release版。 3 将编译后的log4cpp.lib复制到VC的Lib转载 2011-12-08 20:29:15 · 3459 阅读 · 0 评论 -
C与C++在Linux下的集成问题
本文转自 http://www.qqread.com/cpp/p397124.html 最近遇到一个挺挠头的技术问题,我们波士顿那边客户公司的代码是既有C++又有C,我们作为外包公司,需要把我们的C++代码与他们的集成起来,原先的集成方案是我们的C++与他们的C++揉在一起,这样不Touch任何C集成的冬冬,我当时在波士顿已经搞定了此问题,但出差回来前客户提出要优化系统效率,其意思就是想让转载 2011-06-29 15:16:00 · 613 阅读 · 0 评论 -
用GDB调试程序
转自 http://blog.csdn.net/haoel/article/details/2879用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强转载 2012-11-15 15:02:04 · 1015 阅读 · 0 评论 -
异常处理机制 --- 相知篇 (八)
----------------------------------------------------------------------------------------------------------------------------SEH的强大功能之二 本文转自http://se.csai.cn/ExpertEyes/No160.htm转载 2010-11-22 15:23:00 · 1236 阅读 · 0 评论 -
log4cpp 快速实现你的日志系统
本文转自:http://blog.csdn.net/liuchangyu23/archive/2009/08/06/4420169.aspx Logcpp/Logc++ 用法详解 Logcplusplus(使用上常被称作Logc++)。它的存在简化了在C++应用程序中建立日志和跟踪处理。当你的程序超过500行,或者运行一个后台程序或服务时,如果你不想因为调试程序转载 2010-03-06 22:16:00 · 1203 阅读 · 0 评论 -
Linux core文件的产生和调试
在Linux下程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。 注: 1. 当然首先编译时要带上gdb信息1. core文件的生成开关和大小限制1.1使用ulimit -c命令可查看core文件的生成开关。原创 2012-11-14 14:54:01 · 2350 阅读 · 1 评论 -
堆栈打印的方法
<br />堆栈打印的方法:<br /> <br />StackWalker:<br />参考http://www.codeproject.com/KB/threads/StackWalker.aspx<br /> <br />minidump:<br />参考http://www.codeproject.com/KB/debug/postmortemdebug_standalone1.aspx<br /> <br />CrashRpt:<br />参考http://crashrpt.sourceforge原创 2010-11-17 14:32:00 · 815 阅读 · 0 评论 -
Using GDB in Visual Studio
转自https://gpac.wp.mines-telecom.fr/2015/06/11/using-gdb-in-visual-studio/Dear followers,One of the target platform for GPAC is Windows. Developing for Windows in a comfortable manner requires转载 2015-07-30 10:24:20 · 1787 阅读 · 0 评论 -
调试Release发布版程序的Crash错误
转自http://zhangyue1105.spaces.live.com/blog/cns!D5057BD1E4273698!1469.entry 如何手动生成Dump文件并分析Dump文件 大家都知道,当服务器出现蓝屏问题时,我们需要获取系统所产生的DUMP文件进行分析,如何确保在系统问题发生时,可以正确的生成所需要的DUMP文件呢?我们需要做如下检查:1)转载 2010-03-02 16:58:00 · 1296 阅读 · 0 评论 -
让程序在崩溃时体面的退出(合集)
-----------------------------------------------------------------------------------------------------------------------------让程序在崩溃时体面的退出之Unhandled Exception转自 http://blog.csdn.net/s转载 2012-02-06 11:00:41 · 1184 阅读 · 0 评论 -
如何使用appverifier?
转自 如何使用appverifier? AppVerifier 特别用于检测和帮助调试内存损坏、危险的安全漏洞以及受限的用户帐户特权问题。AppVerifier 有助于创建可靠且安全的应用程序,方法是监视应用程序与Windows操作系统的交互,并配置应用程序使用的对象、注册表、文件系统和 Win32 API(包括堆、句柄和锁)。AppVerifier 还包括检查,转载 2016-07-19 15:57:07 · 1227 阅读 · 0 评论 -
异常处理机制 --- 相遇篇 (一)
---------------------------------------------------------------------------------------------------------------------初次与异常处理编程相邂逅 本文转自http://se.csai.cn/ExpertEyes/No136.htm 和其它很多程转载 2010-11-22 14:42:00 · 936 阅读 · 0 评论 -
异常处理机制 --- 异常前言 (二)
------------------------------------------------------------------------------------------------------------------------------异常处理机制 转自http://se.csai.cn/ExpertEyes/No141.htm 主人转载 2010-11-22 14:46:00 · 588 阅读 · 0 评论 -
异常处理机制 --- 相知篇 (三)
------------------------------------------------------------------------------------------------------------------------------对象的成员函数中抛出的异常 转自http://se.csai.cn/ExpertEyes/No142.htm转载 2010-11-22 14:47:00 · 660 阅读 · 0 评论 -
使用 GDB 调试多进程程序
转自 http://www.ibm.com/developerworks/cn/linux/l-cn-gdbmp/简介: GDB 是 linux 系统上常用的调试工具,本文介绍了使用 GDB 调试多进程程序的几种方法,并对各种方法进行比较。GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强大。对于较为复杂的系统,比如多进程系统,如何使用 GDB 调试呢?转载 2012-11-30 10:59:08 · 773 阅读 · 0 评论 -
C/C++内存问题检查利器——Purify
转自 http://blog.csdn.net/haoel/article/details/2900陈皓一、 引言 我们都知道软件的测试(在以产品为主的软件公司中叫做QA—Quality Assessment)占了整个软件工程的30% -50%,但有这么一种说法,即使是最优秀测试专家设计出来的测试案例,也无法彻底地检测到内存上的问题。转载 2012-11-20 18:23:11 · 1628 阅读 · 0 评论 -
GDB调试多进程和多线程命令
转自 http://blog.csdn.net/pbymw8iwm/article/details/78767971. 默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。转载 2012-11-30 12:04:36 · 1143 阅读 · 0 评论 -
连接错误和警告处理
error LNK2019 调试一个算法库,在同事的机器上不可以,出现error LNK2019错误。比较工程和其他选项,都没异常。黔驴技穷之际,使用“/VERBOSE”选项。 (“/VERBOSE”链接器选项帮助查看链接器引用的文件。)发现同事目录下有两个算法库,程序调用了一个老的算法库版本。sigh,搞了2个小时,死去细胞无数。 DUMPBIN 实用工转载 2009-01-21 15:41:00 · 873 阅读 · 0 评论 -
异常处理机制 --- 相知篇 (六)
-----------------------------------------------------------------------------------------------------------------------------setjmp与longjmp机制,很难与C++和睦相处 本文转自http://se.csai.cn/Expert转载 2010-11-22 15:08:00 · 771 阅读 · 0 评论 -
异常处理机制 --- 相知篇 (七)
----------------------------------------------------------------------------------------------------------------------------Windows系列操作系统平台中所提供的异常处理机制 本文转自http://se.csai.cn/Ex转载 2010-11-22 15:09:00 · 1155 阅读 · 1 评论 -
异常处理机制 --- 相知篇 (五)
------------------------------------------------------------------------------------------------------------------------------C语言中的异常处理机制 本文转自http://se.csai.cn/ExpertEyes/No151.htm转载 2010-11-22 14:59:00 · 945 阅读 · 1 评论 -
异常处理机制 --- 相知篇 (四)
-----------------------------------------------------------------------------------------------------------------------------C++的异常对象按引用方式被传递 转自 http://se.csai.cn/ExpertEyes/No147.转载 2010-11-22 14:56:00 · 902 阅读 · 1 评论 -
WinDbg 本地调试和远程调试相关内容
http://bbs.pediy.com/showthread.php?t=24077 原文:http://www.debuginfo.com/articles/easywindbg.html译者:arhat时间:2006年4月13日关键词:CDB WinDbg 导言你钟情什么样的调试器?如果你问我这个问题,我会回答是“Visual Studio + WinDbg”。我比较喜欢Visual转载 2009-05-22 15:43:00 · 1484 阅读 · 0 评论 -
掌握 Linux 调试技术
转自 http://www.ibm.com/developerworks/cn/linux/sdk/l-debug/index.html 简介: 您可以用各种方法来监控运行着的用户空间程序:可以为其运行调试器并单步调试该程序,添加打印语句,或者添加工具来分析程序。本文描述了几种可以用来调试在 Linux 上运行的程序的方法。我们将回顾四种调试问题的情况,这些问题包括段错误,内存溢出和泄漏,转载 2011-06-29 14:30:00 · 554 阅读 · 0 评论 -
关于MFC 加载多个dll 时CDynLinkLibrary 内存泄漏误报
http://live.aulddays.com/tech/08/memleakmfcdll/ http://blog.csdn.net/treaturebeauty/archive/2007/07/27/1710697.aspx#FeedBack 最近 Perry 在写一个简单的插件系统框架,需要有 n 多动态链接库加载来加载去的。调试时偶然发现提示在 dllmodul.cpp转载 2009-06-01 16:55:00 · 1490 阅读 · 0 评论 -
微软C/C++ 编译器选项参考
本文转自http://blog.csdn.net/Tunix126/archive/2007/03/05/1521003.aspx 微软C/C++ 编译器选项-优化-/O1最小化空间minimize space/Op[-]改善浮点数一致性improve floating-pt consistency/O2最转载 2010-03-06 23:29:00 · 1235 阅读 · 0 评论 -
VS 2005使用map文件查找程序崩溃原因
原文转自 http://www.cppblog.com/kuramawzw/articles/93081.html 一般程序崩溃可以通过debug,找到程序在那一行代码崩溃了,最近编一个多线程的程序,都不知道在那发生错误,多线程并发,又不好单行调试,终于找到一个比较好的方法来找原因,通过生成map文件,由于2005取消map文件生成行号信息(vc6.0下是可以生成行号信息的,不转载 2010-03-07 22:48:00 · 1339 阅读 · 0 评论 -
使用dbghelp获取调用堆栈--release下的调试方法
本文转自http://www.cppblog.com/kevinlynx/archive/2008/03/28/45628.html 当软件作为release模式被发布给用户时,当程序崩溃时我们很难去查找原因。常见的手法是输出LOG文件,根据LOG文件分析程序崩溃时的运行情况。我们可以通过SEH来捕获程序错误,然后输出一些有用的信息作为我们分析错误的资料。一般我们需要输出的信息包括转载 2010-03-08 00:19:00 · 1115 阅读 · 0 评论 -
#pragma message预编译指令使用技巧
本文转自http://blog.csdn.net/tunix126/archive/2007/03/05/1521008.aspx 一般情况下,#pragma message( messagestring )是在编译期间,将一个文字串(messagestring)发送到标准输出窗口。典型的使用方法是在编译时报告和显示信息。下面的代码段是编译期间在标准输出窗口显示一条消息:#if _M_IX转载 2010-03-06 23:21:00 · 1011 阅读 · 0 评论 -
C++异常中的堆栈跟踪
本文转自http://www.ieee.org.cn/dispbbs.asp?boardID=61&ID=37287 C++语言的运行时环境是基于栈的环境,堆栈跟踪(trace stack)就是程序运行时能够跟踪并打印所调用的函数、变量及返回地址等,C++异常中的堆栈跟踪就是当程序抛出异常时,能够把导致抛出异常的语句所在的文件名和行号打印出来,以及把调用抛出异常的语句的函数以及其转载 2010-03-07 23:58:00 · 2176 阅读 · 1 评论 -
如何禁用/启用dr.watson诊断工具 drwtsn32 / 如何在vista下生成转储文件dump
本文转自 http://blog.csdn.net/zdl1016/archive/2009/03/14/3986530.aspx 要禁用 Dr. Watson,请按照下列步骤操作 单击开始,单击运行,在打开框中键入 regedit.exe,然后单击确定。 找到并单击以下注册表项: HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/Cur转载 2010-03-08 11:33:00 · 1008 阅读 · 0 评论 -
VS2005中远程调试的配置方法
<br />转自http://www.cppblog.com/kyline/archive/2009/04/23/80821.aspx<br /> <br /><br />在VS2005中不能使用VS2003的远程调试程序。VS2005远程调试的方法:<br />(1) 远程端:安装VS2005光盘"X:/vs/Remote Debugger/x86/ rdbgsetup.exe"。或者直接运行或copy本地端的: "Program Files/Microsoft Visual Studio 8/Commo转载 2010-12-28 11:25:00 · 754 阅读 · 0 评论 -
使用__FILE__和__LINE__定位错误
本文转自http://www.cppblog.com/heath/archive/2008/08/05/58046.html 问题:当运行时错误产生时,我怎样才能得到包含C++文件名和行号的字符串信息?回答:在C++中的__FILE__预编译指示器包含了被编译的文件名,而__LINE__则包含了源代码的行号。__FILE__和__LINE__的前后都包含了两个下划线,让我们仔细看看__转载 2010-03-06 23:12:00 · 829 阅读 · 0 评论