程序调试
文章平均质量分 78
zssure
从不抽烟,应酬时喝酒,早睡早起。一个喜欢折腾自己的人,一个连续创业的劳动者,做过很多事,想过很多事,看破不说破是自省,看破也说破是成长。
展开
-
完成端口学习笔记(一):完成端口+控制台 实现文件拷贝
最近在整理手里一个项目的后台服务端归档程序,重新梳理了一下有关“完成端口”的知识,发现还是有很多模棱两可的地方,下面记录一下再次学习的点滴,博文中以一个简单的控制台文件拷贝程序来演示了“完成端口”的内部机制和使用方法,该篇博文还会有后续的补充章节,不知道什么时间会再补充^_^。原创 2013-12-08 20:03:59 · 5739 阅读 · 6 评论 -
在MFC中从一个线程工作函数中向窗口发送消息(this指针的妙用) .
多线程编程与传统的单线程编程有着很大的区别,尤其是在协调多个线程之间的工作流向的时候,需要考虑变量之间的共享、函数的传递、处理结果的返回,消息的传递等等,偶然在空间中看到了下面这篇博文,写的很精练,应该是工作的经验记录,值得大家学习一下,积累经验,至于深层次的理论知识有待大家自己补充。先转帖到自己空间,供大家学习交流,更是为了留一个印记。博文地址:http://blog.csdn.net/gu转载 2012-09-01 09:02:55 · 6185 阅读 · 0 评论 -
关于Debug和Release之本质区别的讨论
一、Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /转载 2012-06-04 10:46:51 · 1273 阅读 · 0 评论 -
常见C语言内存错误及对策
转自C语言中文网:http://see.xidian.edu.cn/cpp/html/483.html 一、指针没有指向一块合法的内存定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内存。浅显的例子就不举了,这里举几个比较隐蔽的例子。1、结构体成员指针未初始化struct student{ char *name; int score;}s转载 2012-06-03 21:07:24 · 4595 阅读 · 4 评论 -
转:nested type
原文出处:http://blog.csdn.net/holdshow/article/details/5719176原本是想找有关C++对象模型的资料的,恰巧搜到了这边博文,感觉还可以,就转载了。原文如下:因为是基础,所以一定要吃透,记牢。归整一下,方便记忆。A type defined within a class or struct is called a nested typ转载 2012-05-26 22:44:38 · 2488 阅读 · 0 评论 -
SAFEARRAY
目录:SAFEARRAY使用实例...1目录:...1前言:...1何谓SAFEARRAY:...1创建SAFEARRAY:2方法一:使用SafeArrayAllocDescriptor在栈上创建一维数组...2方法二:使用SafeArrayAllocDescriptor和SafeArrayAllocData在堆上创建一维数组...2方法三:转载 2012-05-29 08:43:12 · 3178 阅读 · 0 评论 -
NPAPI插件开发学习:插件的调试(pluginin-container.exe)
最近正在学习NPAPI插件的开发,现转载CSDN博友的文章如下,供学习参考原文链接:http://blog.csdn.net/z6482/article/details/7664789为什么这还是入门呢?因为前面的我们什么都没学会,只是学会了建立一个dll项目,并生成了一个Firefox可以识别dll,在测试页面中不会弹出需要下载插件的错误。而任何功能都没有实现。所以这里才是真正的入门。转载 2013-07-19 16:09:02 · 5563 阅读 · 2 评论 -
那些编译器和操作系统(os)钟情的填充字节——0xCD/0XDD/0XFD
在利用VS提供的反汇编IDE工具查看内存内容的时候,常常会看到一些似曾相识但却无法知道其出处的内容。下面是我从一个MSDN下面的论坛上看到的一片文章,希望通过此篇文章能够解开大家的疑惑,今后对那些“似曾相识”的内存内容有所了解,并渐渐的开始喜欢上他们。 Value Name Description ------ -------- ----原创 2012-06-22 13:56:00 · 4310 阅读 · 0 评论 -
vs2008调试工具之《内存》
VS2008的调试工具之内存查看: 往往在程序编写过程中会出现中断、溢出等等的错误,;或者出现程序中的数组、结构体、类等组合类型数据没有按照指定的思路输出或者传递等问题,这些错误往往都是由于内存指针控制出问题导致的,然而VS2008为我们提供了一个很好地查看工具,只要稍微懂一下汇编和ANSI/UNICODE编码问题,就可以自由查看内存空间中的内容,进行程序调试。下面我节选了几张图片,供大原创 2012-05-24 15:43:38 · 3737 阅读 · 0 评论 -
一些代码优化的方法
原文出处:http://www.cnblogs.com/wxxweb/archive/2012/01/19/2326355.html 谈到优化,很多人都会直接想到汇编。难道优化只能在汇编层次吗?当然不是,C++层次一样可以作代码优化,其中有些常常是意想不到的。在C++层次进行优化,比在汇编层次优化具有更好的移植性,应该是优化中的首选做法。1 确定浮点型变量和表达式是 float 型转载 2012-05-27 13:10:08 · 1818 阅读 · 0 评论 -
栈开解(stack unwinding)
Stack unwinding (C++ only)When an exception is thrown and control passes from a try block to a handler, the C++ run time calls destructors for all automatic objects constructed since the beginning o转载 2012-09-08 14:39:44 · 2008 阅读 · 0 评论 -
完成端口学习笔记(二):完成端口实现机制的仿真
上一篇关于“完成端口”的文章中,我们讲解了在同一个控制台程序中完成本地文件的拷贝,利用的是ReadFile和WriteFile两个API函数。本篇将讲解一下怎样利用完成端口来完成网络文件的拷贝,即通过网络将客户端的文件传输到服务端。只要用过Windows套接字编程的人都可以很容易的实现这个转换过程。本博文中首先直接给出利用完成端口来实现文件网络传输的核心示例代码,然后通过解决上述过程“内存泄露”问原创 2014-01-04 17:59:31 · 5728 阅读 · 0 评论 -
使用CL.EXE查看C++中类的内存结构
转自博客园:http://www.cnblogs.com/dsky/archive/2012/02/07/2340984.html 今天查资料的时候发现 VS 编译器 CL 的一个编译选项可以查看 C++ 类的内存布局,非常有用。使用如下,从开始程序菜单找到 Visual Stdio 2008/2005 Command Prompt,选择 VS 的命令行工具,按如下格式使用:>cl –转载 2012-05-29 19:04:35 · 2465 阅读 · 0 评论 -
MFC学习笔记:怎样尽可能的跟踪和查看MFC中函数的代码
基本上可以总结为:只用两种方法就可以基本看到WINDOWS MFC的函数定义了。一、利用windows系统的搜索功能,直接在安装目录下面搜索你需要的函数(例如本次的目标是CMDIFrameWnd::OnWindowNew()),直接打开系统的搜索功能(CTRL+F)。然后输入OnWindowNew。搜索结果如下(本人电脑是windowsXP SP3系统,VS2008安装在C盘)。图原创 2012-08-17 16:40:36 · 3842 阅读 · 0 评论 -
探讨“临时对象”(temporary object)
MSDN中对VS2012版本的临时对象的说明如下: 在某些情况下,编译器有必要产生临时对象。 当初始化一个常量引用(const reference)时,如果给定的初始化对象类型与目标引用类型不同(但是两者 能够相互转换),需要产生临时对象; 当函数的返回值是用户自定义类型,且程序中未将此返回值拷贝到其他对象中时,需要产生临时对象; 当给定的原创 2012-07-01 19:30:58 · 3942 阅读 · 1 评论 -
两个比较容易混淆的概念:Default Memberwise Initialization和Bitwise Copy
一、首先要分清楚这两者之间的关系:两个概念属于不同“集合”(但有部分交集)。1. Default Memberwise Initialization是与user defined Initialization相对应的。是从编译器(计算机)与程序员(用户)的角度出发;2. bitwise copy 是与memberwise copy相对应的。是两种不同的拷贝方式,编译器通常为了效率会选择bit原创 2012-06-27 15:02:36 · 5593 阅读 · 5 评论 -
关于常量折叠(转)
首先来看一个例子:int main(int argc, char* argv[]){const int i=0;int *j = (int *) &i;*j=1;coutcoutcoutreturn 0;}结果是0012ff7c0012ff7c01因为i和j都指向相同的内存地址,所以输出的前两个结果是相同的,但为啥相同的内存里的结果不转载 2012-06-18 15:14:10 · 1586 阅读 · 0 评论 -
有关C来存储BLOB数据(SAFEARRAY结构)
来自百度的博文:http://hi.baidu.com/luoshengwen/blog/item/8932830ad81cd91f95ca6b3e.html vc进行图片的数据库存储2007-03-10 11:271 前言数据库在实际的开发过程中常常需要存储较大的二进制数据对象,如图像、音频文件、视频文件或其他二进制数据,这些数据称之为二进制大对象BL转载 2012-05-30 10:50:39 · 1633 阅读 · 0 评论 -
case语句跳过变量初始化的问题
今天写程序遇到了一个问题,错误如下:代码如下:switch(m_Radio_Contour) { case 0: //Sobel算子边缘检测 Ptr pImage=NULL; Ptr pImgSobelGray=NULL; Ptr pImg8u=NULL; Ptr pImg8uSmooth=NULL; Ptr pImgColo原创 2012-05-26 13:44:16 · 2614 阅读 · 1 评论 -
MSVC的 未公开开关d1reportAllClassLayout
转自:http://blog.chinaunix.net/uid-53564-id-2099028.html 在看雪学院的 >一文中偶尔看到说VC6.0 以上的编译器支持一个d1reportAllClassLayout的开关, 可以输出所有对象的内存布局信息, 心想我不知道多少次查看过 cl /?的输出, 没印象这个玩艺儿呀, 打开cmd窗口, 弄了个例子程序, 一试不爽.小例转载 2012-05-29 18:46:45 · 2128 阅读 · 1 评论 -
VC++中cl.exe编译器的使用
转自百度博客:http://hi.baidu.com/lingyin55/blog/item/1545ddd08e421895a0ec9cdb.html 和在IDE中编译相比,命令行模式编译速度更快,并可以避免被IDE产生的一些附加信息所干扰。本文将介绍微软C/C++编译器命令行模式设定和用法。1、设置环境变量:PATH=C:\Program Files\Micro转载 2012-05-29 19:03:09 · 13065 阅读 · 0 评论 -
真假常量(const VS define)
常量,通常指在程序中出现的数字1,2,3,等,字符串“Hello World”,以及数组名称等,他们都属于常量。在程序中是不允许修改他们的值。虚假常量const挑战真正常量define下面一段程序:代码前面定义了:#define ZS 2234;程序调试,反汇编如下:如上图所示:首先:程序是将立即数8BAh(立即数可以作为汇编的操作数)直接存储到cons原创 2012-06-18 18:11:40 · 2332 阅读 · 0 评论 -
日积(Running)月累(ZSSURE) :IPC=Inter-Process Communication,进程间通信学习笔记(一)
背景:最近一段时间集中接触了些许关于IPC的相关技术,即进程间通信。网上搜索学习了《Unix网络编程卷2:进程间通信》、ZeroMQ Guide文档、ActiveMQ等资料,对IPC有了大致的了解,本篇文章中记录一个尝试匿名管道时遇到的奇葩问题,仅供学习和交流。原创 2015-01-15 23:29:26 · 2069 阅读 · 0 评论