DoubleLi

qq: 517712484 wx: ldbgliet

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

2012年12月28日

摘要: VC调试,一般是需要设置一个断点的,譬如1)int i;2)int j;如果在int j处设置了断点,那么当程序运行到int j时,程序停止,这个时候就可以查看程序各种变量或执行状态了,简单的办法就是把鼠标停在要看的变量上面。会有一个个小的弹出窗口来显示变量状态。1)设置断点,一种是在代码行的最左边鼠标点击一下,会有个红点出来。快捷键是,将编辑光标--即插入符(不是鼠标光标)停在要设断点的代码行,然后按F9,就会有红点出来。2)设置的断点,程序一定要能执行到。譬如:{ //0int i = 0; //1if (0 != i) {//2int j = 1; //3j... 阅读全文
posted @ 2012-12-28 20:20 DoubleLi 阅读(461) 评论(0) 推荐(0)

摘要: 最近一段陆续用了几种调试VC程序的方法。一般程序也肯定会使用到这几种方法。现在总结如下:1.在VC里面debug版本用TRACE自己打印trace到调试窗口。局限就是,不能脱离了vc的环境进行调试。使用者只能是程序编写者来进行调试。2。利用微软的调试工具Dbgview.exe,来看trace的输出,可以脱离vc的环境。此方法与第一种的不同是,可以脱离VC环境,自己接受程序利用TRACE打印的消息。使用者可以是程序测试人员来进行测试时,抓取程序出错时的log,供编写程序者分析原因。这个在一定程度上来说是扩大了trace的使用范围。3。自己在code里面嵌入code,把trace输出到文件里面去。 阅读全文
posted @ 2012-12-28 20:16 DoubleLi 阅读(2180) 评论(0) 推荐(0)

摘要: C语言中实现参数个数可变的函数 采用C语言编程的时候,函数中形式参数的数目通常是确定的,在调用时要依次给出与形式参数对应的所有实际参数。但在某些情况下希望函数的参数个数可以根据需要确定。典型的例子有大家熟悉的函数printf()、scanf()和系统调用execl()等1、在win环境下编程例子:以下例子在VS2010编译通过。#include<stdio.h>#include<string.h>#include<stdarg.h>int demo(char * ,...);int main(){demo("TEST",5,4,3,2,1 阅读全文
posted @ 2012-12-28 20:13 DoubleLi 阅读(5567) 评论(0) 推荐(0)

摘要: 这几天不是很忙,有拿起了《深入浅出MFC》,这本书其实看过2遍了,不过时间很久了,所以也忘了很多。现在再次看这本书,发现又吸收很多新东西。想起了有人说过的一句话,具体记不清除了,但是大意是。同一本书,每看一遍书,就有不同的收获。也是因为你的知识水平在提高,你说关注的东西的角度就不一样,所以每次都会有收获的。总是用VC里面的TRACE来打印调试,但是这个唯一不足就是,不能方便的打印变量,就像messagebox一样。今天看到《深入浅出MFC》里面提到了另一个命令。afxDump用法如下:int i = 10;afxDump << "hello world !" & 阅读全文
posted @ 2012-12-28 20:02 DoubleLi 阅读(541) 评论(0) 推荐(0)

摘要: VC++提供了一个叫输出窗口的窗口,在调试程序和生成是可以看到输出信息,这个信息如果是MFC程序可以用TRACE宏来打印,在控制台程序里就没有了。所以我们直接调用API来实现上面的功能。首先在程序中引入头文件windows.h或winbase.h调用函数有两种版本ANSI和UNICODEOutputDebugStringAOutputDebugStringW自动版本OutputDebugString输出方法OutputDebugString(_T("字符串"));OK可以了。最后在前面加上一个宏判断#ifdef_DEBUGOutputDebugString(_T(" 阅读全文
posted @ 2012-12-28 17:54 DoubleLi 阅读(463) 评论(0) 推荐(0)

摘要: 一、调试基础调试快捷键F5: 开始调试Shift+F5: 停止调试F10: 调试到下一句,这里是单步跟踪 F11: 调试到下一句,跟进函数内部Shift+F11:从当前函数中跳出Ctrl+F10:调试到光标所在位置F9: 设置(取消)断点Alt+F9:高级断点设置跟踪调试1、尽量使用快捷键时行调试2、观察调试信息3、高级中断设置异常调试重试->取消->调试函数堆栈,用variables或者call stack 窗口Release调试1、经常测试你的Debug和Release版本2、不要移除调试代码,如用ASSERT, TRACE等。3、初始化变量,特别是全局变量,malloc的内存 阅读全文
posted @ 2012-12-28 17:50 DoubleLi 阅读(368) 评论(0) 推荐(0)

摘要: 转载请标明是引用于 http://blog.csdn.net/chenyujing1234欢迎大家拍砖!一、应用背景有一个在win7中用VS2008编译成功,运行正常的程序:Exe+DLL;放到XP虚拟镜像上运行却提示:LoadLibrary返回14001。(1) 后来采用了下面方法中的“方法一”解决了。(2) 但在方法一的基础上还要安装VS2008对应的分发包vcredist_x86.exe(VS2005的安装目录下提供了此文件,但在VS2008去不提供,但可到网上下载)。参考文章:http://hi.baidu.com/roger_long/item/867a7cf6fd8cf4cc521 阅读全文
posted @ 2012-12-28 17:29 DoubleLi 阅读(4531) 评论(0) 推荐(1)

摘要: 1.CDumpContext 该类没有基类。这个类支持面向流的诊断输出,以人能够阅读的文本。该类重载了<<操作符。afxDump是一个预声明的CDumpContext对象,可以方便使用。该对象只在MFC的Debug版中有效。可以将调式信息输出到调试输出窗口或调试终端。// example for afxDumpCPerson myPerson = new CPerson;// set some fields of the CPerson object...//..// now dump the contents#ifdef _DEBUGafxDump << " 阅读全文
posted @ 2012-12-28 17:06 DoubleLi 阅读(11693) 评论(0) 推荐(0)

摘要: 我们知道,MFC中可以调用宏TRACE等十分方便的输出调试信息到Visual Studio输出窗口,但C++中没人类似的函数,最近我在开发一个小程序时跟踪了一下MFC的TRACE宏,发现它映像了atltrace.h中的ATLTRACE宏,因些,我们也想在C++中使用TRace可以用如下方式:#include <atltrace.h>#define TRACE ATLTRACETRACE("");在C++中可以直接使用下面的函数OutputDebugString Function Sends a string to the debugger for display 阅读全文
posted @ 2012-12-28 16:38 DoubleLi 阅读(7989) 评论(0) 推荐(2)

摘要: 在win32程序中可以使用函数OutputDebugString输出调试信息。输出的结果可以在vs的集成环境中看到,也可以使用工具DbgView.exe捕捉结果。函数的原形如下:OutputDebugStringThe OutputDebugString function sends a string to the debugger for display.void OutputDebugString( LPCTSTR lpOutputString);ParameterslpOutputString [in] Pointer to the null-terminated string to b 阅读全文
posted @ 2012-12-28 15:37 DoubleLi 阅读(2241) 评论(0) 推荐(0)