搜档网
当前位置:搜档网 › vc调试技巧

vc调试技巧

vc调试技巧
vc调试技巧

1.检测程序中的括号是否匹配

把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。

2.查看一个宏(或变量、函数)的宏定义

把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To Defition Of …),如果没有建立Browse files,会出现提示对话框,确定,然后就会跳到定义那些东西的地方。

3.格式化一段乱七八糟的源代码

选中那段源代码,按A TL+F8。

4.在编辑状态下发现成员变量或函数不能显示

删除该项目扩展名为.ncb文件,重新打开该项目。

5.如何整理ClassView视图中大量的类

可以在classview 视图中右键新建文件夹(new folder),再把具有相近性质的类拖到对应的文件夹中,使整个视图看上去清晰明了.

6.定位预处理指定

在源文件中定位光标到对称的#if, #endif,使用Ctrl+K.

7.如何添加系统中Lib到当前项目

在Project | Settings | Link | Object/library modules:输入Lib名称,不同的Lib之间用空格格开.

8.如何添加系统中的头文件(.h)到当前项目.

#include ,告诉编译到VC系统目录去找;使用#include "FileName.h",告诉编译在当前目录找.

9.如何在Studio使用汇编调试

在WorkBench的Debugger状态下按CTRL+F7.

10.怎样处理ClassZiard找不到的系统消息

如果要在ClassWizard中处理WM_NCHITTEST等系统消息,请在ClassWizard中Class Info 页中将Message filter改为Window就有了.

11.如何干净的删除一个类

先从Workspace中的FileView中删除对应的.h和.cpp文件,再关闭项目,从实际的文件夹中删除对应的.h和.cpp文件与.clw文件。

12.如果让控制台应用程序支持mfc类库

可以在控制台应用程序中include 来引入mfc库,但是控制台应用程序缺省是单线程的,mfc

是多线程的,为解决该矛盾,在project setting->c/c++ 选项,选择code generation,在use run-time library 下拉框中选择debug multithread。

13.如何汉化只有可执行代码的.exe 文件

在nt 下利用vc open file 以resources方式打开*.exe 文件,直接修改资源文件,然后保存即可。

附:VC项目文件说明

.opt 工程关于开发环境的参数文件。如工具条位置等信息;

.aps (AppStudio File),资源辅助文件,二进制格式,一般不用去管他.

.clw ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下.有时候ClassWizard出问题,手工修改CLW文件可以解决.如果此文件不存在的话,每次用ClassWizard 的时候绘提示你是否重建.

.dsp (DeveloperStudio Project):项目文件,文本格式,不过不熟悉的话不要手工修改.DSW(DeveloperStudio Workspace)是工作区文件,其他特点和DSP差不多.

.plg 是编译信息文件,编译时的error和warning信息文件(实际上是一个html文件),一般用处不大.在Tools->Options里面有个选项可以控制这个文件的生成.

.hpj (Help Project)是生成帮助文件的工程,用microsfot Help Compiler可以处理.

.mdp (Microsoft DevStudio Project)是旧版本的项目文件,如果要打开此文件的话,会提示你是否转换成新的DSP格式.

.bsc 是用于浏览项目信息的,如果用Source Brower的话就必须有这个文件.如果不用这个功能的话,可以在Project Options里面去掉Generate Browse Info File,可以加快编译速度.

.map 是执行文件的映像信息纪录文件,除非对系统底层非常熟悉,这个文件一般用不着.

.pch (Pre-Compiled File)是预编译文件,可以加快编译速度,但是文件非常大.

.pdb (Program Database)记录了程序有关的一些数据和调试信息,在调试的时候可能有用.

.exp 只有在编译DLL的时候才会生成,记录了DLL文件中的一些信息.一般也没什么用.

.ncb 无编译浏览文件(no compile browser)。当自动完成功能出问题时可以删除此文件。build 后会自动生成。

// 选择字符

1. (COOL)按下Alt 键不放,点击鼠标左键拖动,可以选择文本块、可选择列。

2. 安着Ctrl键不放,单击一个单词,可以选择一个单词,或双击。

3. 将光标移在开始位置,按住shift点击鼠标左键可选择一段(在IE浏览其中照样可用,看不到光标而已,

4. 双击鼠标左键可选择一个单词。

5.按住shift+上下方向键可选择行。

6.按住ctrl+shift+左右方向键可选择一个单词。

7. 按Ctrl + C 可COPY光标所在的这一行。

8. 按住shift+[End] 可选择本行。

//////////////////////////////////////

F1 显示帮助,如果光标停在代码的某个字符上,显示MSDN中相应的帮助内容

F2 书签功能: Ctrl+F2 --在某行设置一个书签(再按一次次是取消)

F2 --跳到下一个书签位置

Shift+F2 --跳到上一个书签位置

Ctrl+Shift+F2 --删除所有书签

F3 查找: Ctrl+F3 --在文件中查找,如果当前光标在一个字符串上,

那么自动查找此字符串.相似的有Ctrl+F

F3 --查找文件中下一个串

Shift+F3 --查找文件中上一个串

F4(不是流行花园那个) 如果是编译后或者Find in Files后,可以逐条定位.

Ctrl+F4 --关闭文件

Alt+F4 --关闭VC(跟WINDOWS定义的一样)

F5编译并执行F5 --编译并通过VC执行

Ctrl+F5 --不经过VC,直接执行编译后的exe

Shift+F5 --F5运行后,直接从VC中停止程序(可以模拟当机情况)

Ctrl+Shift+F5 --重新开始运行

F6切换窗口SplitWindow后,可以转换光标所在的窗口

F7编译F7 编译工程

Ctrl+F7 编译当前文件

Alt+F7 工程设置对话框

F8选择的粘滞键其实更常用的是按住Shift+方向键

Alt+F8 选中的代码书写格式对齐

F9设置断点Ctrl+F9删除所有断点

Alt+F9 显示编辑断点的对话框

Ctrl+F9断点无效

F10单步执行(Debug时)

Ctrl+F10 执行到光标所在行

(试试看Shift+F10什么效果)

F11跟踪时进入函数内部

Shift+F11跳到上一层调用栈

F12跳到函数定义初(需要带Browse Info选项编译,建议不选,生成文件很大) 编辑常用

Ctrl+W 显示ClassWizard,边界面程序用的比较多

Ctrl+Z/Ctrl+Y Undo/Redo

Ctrl+U 字母转化为小写(有的VC没有设置)

Ctrl+Shift+U 字母转化为大写(有的VC没有设置)

Ctrl+S 保存(强烈建议编码时经常按两下,省得掉电死机时后悔,呵呵,

该键在多数编辑软件都适用)

Ctrl+D 查找(嗯,如果有SOFTICE,那么就是呼叫它了)

Ctrl+F 正宗的查找快捷键

Ctrl+G 跳到文件中第n行

Ctrl+Shift+G 光标在一个文件名上,直接跳到指定文件

Ctrl+H 替换

Ctrl+J,K #ifdef...#endif查找配对

Ctrl+L 剪切一行

Ctrl+} 匹配括号(),{}

调试常用

Shift+F9 QuickWatch,并显示关标所在处的变量值

Alt+3 Watch 查看窗口

Alt+4 Variables 监视变量(常用)

Alt+5 显示寄存器

Alt+6 显示内存(常用)

Alt+7 显示堆栈情况(当机了多看看)

Alt+8 显示汇编码

还有一些常用的

Ctrl+TAB 切换打开的文件视图,(如果按住Ctrl,顺序向后切换)

Ctrl+Shift+TAB切换打开的文件视图,(如果按住Ctrl,顺序向前切换) TAB 选中后,整体后移一个制表符,

Shift+TAB 选中后,整体前移一个制表符,

Alt+0 将焦点移到工作区(ESC回编辑区)

Alt+2 将焦点移到输出区(ESC回编辑区) Ctrl+PgUp 逆序切换工作区视图

Ctrl+PgDn 顺序切换工作区视图

如何用VC6.0调试代码(入门)

概述 调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。 这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。 本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。 设置 为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug Configuration自动包含调试信息,但是是不是Debug版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的 Configuration中增加调试信息,包括Release版本。 为了增加调试信息,可以按照下述步骤进行: 打开Project settings对话框(可以通过快捷键ALT+F7打开,也可以通过IDE菜单Project/Settings打开) 选择C/C++页,Category中选择general ,则出现一个Debug Info下拉列表框,可供选择的调试信息方式包括: None 没有调试信息 Line Numbers Only 目标文件或者可执行文件中只包含全局和导出符号以及代码行信息,不包含符号调试信息 C 7 Compatible 目标文件或者可执行文件中包含行号和所有符号调试信息,包括变量名及类型,函数及原型等 Program Database 创建一个程序库(PDB),包括类型信息和符号调试信息。 Program Database for Edit and Continue 除了前面/Zi的功能外,这个选项允许对代码进行调试过程中的修改和继续执行。这个选项同时使#pragma设置的优化功能无效 选择Link页,选中复选框"Generate Debug Info",这个选项将使连接器把调试信息写进可执行文件和DLL 。 如果C/C++页中设置了Program Database以上的选项,则Link incrementally可以选择。选中这个选项,将使程序可以在上一次编译的基础上被编译(即增量编译),而不必每次都从头开始编译。 断点 断点是调试器设置的一个代码位置。当程序运行到断点时,程序中断执行,回到调试器。断点是最常用的技巧。调试时,只有设置了断点并使程序回到调试器,才能对程序进行在线调试。 设置断点:可以通过下述方法设置一个断点。首先把光标移动到需要设置断点的代码行上,然后按F9快捷键弹出Breakpoints对话框,方法是按快捷键CTRL+B或ALT+F9,或者通过菜单Edit/Breakpoints打开。打开后点击Break at编辑框的右侧的箭头,选择合适的位置信息。一般情况下,直接选择line xxx就足够了,如果想设置不是当前位置的断点,可以选择

CAD调试小技巧

关于CAD比例调试和标注样式的几点说明 一、CAD比例调试说明: 1.绘图 用CAD绘图时,一般按照1:1的比例绘制,换句话说,如果绘制1m的直线,则在CAD画线命令中输入1000(单位为mm),如图1所示。 图1 2.绘制图框 按照如上所说绘制完成所有工程图后,根据图号要求设置比例,现在以二号图为例进行说明,图2是按照1:1绘制的直线,现要将其设置为二号图进行打印,所以按照1:1绘制完成所有工程图后,根据图号尺寸绘制图框(二号图为594mm ×420mm),图框绘制见图3。 图2 图3

3.比例设置 比例设置方法有两种: 方法一:按比例放大图框,根据所绘图形大小,预估图框需要放大倍数(图框放大比例原则是图形在图框中适中),本例中图框放大两倍,缩放命令是SC。将图框全部选中,输入“SC”(如图4)然后回车,选择基点输入放大倍数2(如图5)。然后将图形放入放大后的图框中(见图6),图形比例即为1:2,这样就完成了图形比例设置。但是图框不再是标准图框,而是标准图框的倍数,所以,只要在打印时设置为二号图框打印,对出图无影响。 图4 图5

图6 方法二:按比例缩小图形,根据所绘图形和图框大小,估计图形需要缩小倍 数(原则和方法一相同),本例中估计需要缩小2倍。和方法一一样,选中所有 图形,输入SC 回车,然后选择基点输入0.5(即X 1 ,X 为缩小倍数) ,然后将图 形移入图框中(见图7)。 图7 使用这种方法后,它的标注尺寸不再是实际尺寸,现在就需要调整测量单位比例因子。根据流程一操作,在测量单位比例因子中输入图形缩小倍数2,然后确定,图形比例即为1:2,结果见图8。

vc++6.0_调试详细教程(17种方法)

vc++6.0 调试详细教程 Step into Step over Step out Run to cursor Watch Variables Registers Memory Stop Debug Call stack Disassembly Restart Debugger 2、调试的一般过程 调试,就是在程序的运行过程的某一阶段观测程序的状态。在一般情况下程序是连续运行的,所以我们必须使程序在某一地点停下来。我们所做的第一项工作就是设立断点;其次再运行程序;当程序在设立断点处停下来时,利用各种工具观察程序的状态。

程序在断点停下来后,有时我们需要按我们的要求控制程序的运行,以进一步观测程序的流向。 下面我们依次来介绍断点的设置,如何控制程序的运行以及各种观察工具的利用。 3、设置断点 在VC中,可以设置多种类型的断点,根据断点起作用的方式把这些断点分为三类: 1、与位置有关的断点; 2、与逻辑条件有关的断点 3、与WINDOWS消息有关的断点。 主要介绍前面两种断点。 4、设置位置断点 最简单的是设置一般位置断点: ?把光标移到你要设断点的位置,当然这一行必须包含一条有效语句的; ?然后按工具条上的add/remove breakpoint 按钮或按快捷键F9。 将会在屏幕上看到在这一行的左边出现一个红色的圆点表示这里设立了一个断点

5、设置位置断点-图示 6、设置逻辑断点 有的时候可能不需要程序每次运行到这儿都停下来,而是在满足一定条件的情况下才停下来,这时就需要设置一种与位置有关的逻辑断点。 从EDIT 菜单中选中Breakpoints命令,这时Breakpoints对话框将会出现在屏幕上。选中Breakpoint对话框中的Location标签,使Location页面弹出。 如下页图所示。

软件调试技巧

软件调试技巧 一、软件调试方法 软件调试有很多种方法。常用的有4种,即强行排错法、回溯排错法、归纳排错法和演绎排错法。 1.强行排错法 这种方法需要动脑筋动的地方比较少,因此叫强行排错。通常有以下3种表现形式: ●打印内存变量的值。在执行程序时,通过打印内存变量的数值,将该数值同预期的数值进行比较,判 断程序是否执行出错。对于小程序,这种方法很有效。但程序较大时,由于数据量大,逻辑关系复杂,效果较差。 ●在程序关键分支处设置断点,如弹出提示框。这种方法对于弄清多分支程序的流向很有帮助,可以很 快锁定程序出错发生的大概位置范围。 ●使用编程软件的调试工具。通常编程软件的IDE集成开发环境都有调试功能,使用最多的就是单步调 试功能。它可以一步一步地跟踪程序的执行流程,以便发现错误所在。 2.回溯排错法 这是在小程序中常用的一种有效的调试方法。一旦发现了错误,可以先分析错误现象,确定最先发现该错误的位置。然后,人工沿程序的控制流程,追踪源程序代码,直到找到错误根源或确定错误产生的范围。 3.归纳排错法 归纳法是一种从特殊推断一般的系统化思考方法。归纳法调试的基本思想是,从一些线索(错误的现象)着手,通过分析它们之间的关系来找出错误,为此可能需要列出一系列相关的输入,然后看哪些输入数据的运行结果是正确的,哪些输入数据的运行结果有错误,然后加以分析、归纳,最终得出错误原因。 4.演绎排错法 演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。调试时,首先根据错误现象,设想及枚举出所有可能出错的原因作为假设。然后再使用相关数据进行测试,从中逐个排除不可能正确的假设。最后,再用测试数据验证余下的假设是否是出错的原因。 二、调试的原则 调试能否成功一方面在于方法,另一方面很大程度上取决于个人的经验。但在调试时,通常应该遵循以下一些原则。 1.确定错误的性质和位置的原则 用头脑去分析思考与错误征兆有关的信息,避开死胡同。调试工具只是一种辅助手段。利用调试工具可以帮助思考,但不能代替思考。通常避免使用试探法,最多只能将它当作最后的手段,毕竟小概率事件有时也会发生。 2.修改错误的原则 在出现错误的地方,很可能还有别的错误。修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身。当新修正一个错误的同时又引入新的错误。 三、有效减少调试时间 1.绘制程序流程图 一些程序员认为,绘制程序流程图是件繁琐的事,而且浪费时间。其实不然,当读者对着偌大的程序一筹莫展时,面对纷纭复杂的关系理不出头绪时,使用程序流程图绝对可以事半功倍。 因此建议在编制程序前先绘制流程图,这样编程的思路有条理,调试时同样会有条不紊。若编制程序之前没有绘制流程图,当排错没有进展时,可以马上编写流程图。你会发现,程序中某些分支或细节被忽略了,这些细节可能就是程序出错的地方。 2.不要过多地依赖单步调试 有些程序对时间很敏感。数据只在那么一瞬间有效,可谓稍纵即逝。所以等到单步执行到那里时,

vc debug 方法

了解调试,首先要知道"断点"这个概念.断点就是程序运行中可能会中断的地方,方便开发者在程序运行的过程中查看程序当前的运行状态,比如变量的值,函数的返回值等等.究竟怎么使用断点呢? 1.调试快捷键 F9——在当前光标所在的行下断点,如果当前行已经有断点,则取消断点. F5——调试状态运行程序,程序执行到有断点的地方会停下来. F10——单步执行程序. F11——和F10的区别是,如果当前执行语句是函数调用,则会进入函数里面. CTRL+F10——运行到光标所在行. SHIFT+F11——跳出当前所在函数. 特别说明: a.有的地方不能下断点.比如空行,基本类型定义语句(不初始化),等等非执行语句.比如 int i; // 此行不能下断点字串7 int j = 0; // 这里可以下 CString str; // 这里可以下 int k = Max(i, j); // 这里可以下 b.不是所有断点都会(断).比如下断点的语句在程序里面没有被执行. c.此外,ALT+F9还可以下条件断点,不过这个不常用,有兴趣的可以自己研究:) 2.如何调试Release版的程序? 有些程序在debug下运行的很好,但在release下却总是失败,默认情况下release是不能调试的.怎么解决呢? 其实"debug"和"release"都只是一个代号而已,各自对应一组不同的编译选项. 在release的默认设置下,ALT+F7 ,调出工程设置对话框,切换到link选项卡,勾选"Generate debug info",然后再切换到C/C++选项卡,在"Optimizations"里面选"Disable(Debug)",在下面的"Debug info"里面选"Program Database for Edit and Continue".然后点OK保存设置,重新编译程序,下断点即可.

教你如何调节人声音色的调试技巧

教你如何调节人声音色的调试技巧 人声音色的调试技巧 1. 人声是一个复合音。也就是由声音的基音和一系列的泛音所构成。这些泛音都是基音频率的位数,物理学叫分音,电声学叫谐波,音乐中叫泛音。低频泛音的幅度较强,音色就表现得混厚;中频泛音的幅度比较强,音色就表现得圆润、自然、和谐;高频泛音的幅度比较强,音色就表现得明亮、清透、解析力强。 2. 如果高频段频率过弱,其音色就变得灰哑、缺少韵味、和个性;如果高频段频率过强,音色就会变得尖噪、刺耳。 如果中高频段的频率过弱,音色就变得暗淡、朦胧;如果中高频段的频率过强,其音色就会变得呆板。 3. 如果低频段的频率过弱,音色将会变得单薄、苍白;如果低频段的频率过强,音色会变得浑浊不清。 音响话筒怎样调节使用效果好! 调试篇 1.怎样调好话筒? 目前流行、通俗的演唱使用的动圈话筒音箱摆放尽量不要把话筒拾音区域覆盖进去。唱歌底气不足的加中高频,突出他的亮,底气很足的减低频,省得声音破掉,女人加低频声音厚,男人加高频声音透。 2.如何调音? ①设备的开、关机顺序 由音源设备(CD机、DVD机、)、音频处理设备(效果器、等)到功率放大器到电视机、投影机、。关机时顺序相反,应先关功放。这样操作可以防止开、关机对设备的冲击,防止烧毁功放和扬声器。 KTV音响声道系统三大的特点 声道系统的特点: 第一从声音效果上,能够使声音的密度感更好,声场更加宽阔,能够很好的营造出临场感和现场气氛,声场的密度感大大增加歌唱时倍感轻松, ◆第二从声压水平上来看,采用三只辅助音响能够使较小尺寸的音箱达到相同的声音量感和声压水平,这样更加便于我们进行箱体的安装,使其更好的溶入装修之中。同时在低频的表现上来看,多只小尺寸的扬声器的低频速度感比单只大口径扬声器单元更好,主观听感的冲击力和刺激感更加强烈,表现的声底将更干净,清晰。 第三从音箱运行安全性上,众所周知卡拉OK 音箱的扬声器是很容易损坏的,除了摔MIC,啸叫等

VC6常用调试方法

VC6常用调试方法.txt什么叫神话?请听男人向你表达爱意;什么叫传说?请听男人对你的承诺;什么叫梦境?请看你自己听到前两者时的反应。 1.检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。 2.查看一个宏(或变量、函数)的宏定义 把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To Defition Of …),如果没有建立Browse files,会出现提示对话框,确定,然后就会跳到定义那些东西的地方。 3.格式化一段乱七八糟的源代码 选中那段源代码,按ATL+F8。 4.在编辑状态下发现成员变量或函数不能显示 删除该项目扩展名为.ncb文件,重新打开该项目。 5.如何整理ClassView视图中大量的类 可以在classview 视图中右键新建文件夹(new folder),再把具有相近性质的类拖到对应的文件夹中,使整个视图看上去清晰明了. 6.定位预处理指定 在源文件中定位光标到对称的#if, #endif,使用Ctrl+K. 7.如何添加系统中Lib到当前项目 在Project | Settings | Link | Object/library modules:输入Lib名称,不同的Lib之间用空格格开. 8.如何添加系统中的头文件(.h)到当前项目. #include ,告诉编译到VC系统目录去找;使用#include "FileName.h",告诉编译在当前目录找. 9.如何在Studio使用汇编调试 在WorkBench的Debugger状态下按CTRL+F7. 10.怎样处理ClassZiard找不到的系统消息 如果要在ClassWizard中处理WM_NCHITTEST等系统消息,请在ClassWizard中Class Info 页中将Message filter改为Window就有了. 11.如何干净的删除一个类 先从Workspace中的FileView中删除对应的.h和.cpp文件,再关闭项目,从实际的文件夹中删除对应的.h和.cpp文件与.clw文件。

vc6调试入门

Q: 在设置断点调试时,按F10或F11键有时会进入机器码,请问这时除了停止调试外,还有没有其他方法返回到调试状态? 还有,就是在单步执行时,能不能返回到程序的上一行或上几行? 如果你认识还有哪些有用的调试技巧, A: 1.没有返回调试状态的说法 2.不能返回程序的上一行(你指的应该是程序的运行返回) 3. 如下: 推荐不错的VC调试入门 概述调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。 本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File 的子菜单Open。 设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug Configuration自动包含调试信息,但是是不是

Debug版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configuration中增加调试信息,包括Release版本。为了增加调试信息,可以按照下述步骤进行: ? 打开Project settings对话框(可以通过快捷键ALT+F7打开,也可以通过IDE菜单Project/Settings打开) ? 选择C/C++页,Category中选择general ,则出现一个Debug Info下拉列表框,可供选择的调试信息方式包括:命令行Project settings 说明无None 没有调试信息/Zd Line Numbers Only 目标文件或者可执行文件中只包含全局和导出符号以及代码行信息,不包含符号调试信息/Z7 C 7.0- Compatible 目标文件或者可执行文件中包含行号和所有符号调试信息,包括变量名及类型,函数及原型等/Zi Program Database 创建一个程序库(PDB),包括类型信息和符号调试信息。/ZI Program Database for Edit and Continue 除了前面/Zi的功能外,这个选项允许对代码进行调试过程中的修改和继续执行。这个选项同时使#pragma设置的优化功能无效 ? 选择Link页,选中复选框"Generate Debug Info",这个选项将使连接器把调试信息写进可执行文件和DLL ? 如果C/C++页中设置了Program Database以上的选项,则Link incrementally可以选择。选中这个选项,将使程序可以在上一次编译的基础上被编译(即增量编译),而不必每次都从头开始编译。断点断点是调试器设置的一个代码位置。当程序运行到断点时,程序中断执行,回到调试器。断点是最常用的技巧。调试时,只有设置了断点并使程序回到调试器,才能对程序进行在线调试。设置断点:可以通过下述方法设置一个断点。首先把光标移动到需要设置断点的代码行上, 然后? 按F9快捷键? 弹出Breakpoints对话框,方法是按快捷键CTRL+B或ALT+F9,或者通过菜单Edit/Breakpoints打开。打开后点击Break at编辑框的右侧的箭头,选择合适的位置信息。一般情况下,直接选择line xxx就足够了,如果想设置不是当前位置的断点,可以选择Advanced,然后填写函数、行号和可执行文件信息。

在Eclipse中使用debug(Eclipse调试常用技巧)

Eclipse调试常用技巧 发表时间:2010-04-06 最后修改:2010-11-26 记得刚刚毕业的时候,自己连断点也不会打,当时还在用JCreate,就连毕业设计也是用System.out找Bug的,想想真的很笨。开始工作后,一个星期过去了,在一个1、2百万行的系统中找Bug,我依然在用System.out,当时最痛苦的就是修改代码,每次找到疑似Bug,就输出一下,然后重启(那时也不知道代码热替换),直到有一天带我的导师发现了这样笨笨的调试Bug,才让我第一次认识了断点,也知道了代码修改完了可以进行热替换,我这个中国教育的半牺牲品才算向美好生活迈进了一小步。 1、条件断点 断点大家都比较熟悉,在Eclipse Java编辑区的行头双击就会得到一个断点,代码会运行到此处时停止。 条件断点,顾名思义就是一个有一定条件的断点,只有满足了用户设置的条件,代码才会在运行到断点处时停止。 在断点处点击鼠标右键,选择最后一个"Breakpoint Properties" 断点的属性界面及各个选项的意思如下图,

2、变量断点 断点不仅能打在语句上,变量也可以接受断点, 上图就是一个变量的打的断点,在变量的值初始化,或是变量值改变时可以停止,当然变量断点上也是可以加条件的,和上面的介绍的条件断点的设置是一样的。 3、方法断点 方法断点就是将断点打在方法的入口处, 方法断点的特别之处在于它可以打在JDK的源码里,由于JDK在编译时去掉了调试信息,所以普通断点是不能打到里面的,但是方法断点却可以,可以通过这种方法查看方法的调用栈。

4、改变变量值 代码停在了断点处,但是传过来的值不正确,如何修改一下变量值保证代码继续走正确的流程,或是说有一个异常分支老是进不去,能不能调试时改一下条件,看一下异常分支代码是否正确? 在Debug视图的Variables小窗口中,我们可以看到mDestJarName变量的值为" F:\Study\eclipsepro\JarDir\jarHelp.jar" 我们可以在变量上右键,选择"Change Value..."在弹出的对话框中修改变量的值, 或是在下面的值查看窗口中修改,保用Ctr+S保存后,变量值就会变成修改后的新值了。 5、重新调试 这种调试的回退不是万能的,只能在当前线程的栈帧中回退,也就说最多只能退回到当前线程的调用的开始处。 回退时,请在需要回退的线程方法上点右键,选择"Drop to Frame"

VC调试技巧

VC调试篇 难怪很多前辈说调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。 我以前接触的程序大多是有比较成形的思路和方法,调试起来出的问题都比较小,最近这个是我自己慢慢摸索调试,接触了很多新的调试方法,并查了很多前辈的总结,受益匪浅,总结以前的和新的收获如下: VC调试篇 设置 为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug Configuration自动包含调试信息,但是是不是Debug版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configuration中增加调试信息,包括Release版本。 为了增加调试信息,可以按照下述步骤进行: ?打开Project settings对话框(可以通过快捷键ALT+F7打开,也可以通过IDE菜单Project/Settings打开) ?选择C/C++页,Category中选择general ,则出现一个Debug Info下拉列表框,可供选择的调试信息方式包括: ?选择Link页,选中复选框"Generate Debug Info",这个选项将使连接器把调试信息写进可执行文件和DLL ?如果C/C++页中设置了Program Database以上的选项,则Link incrementally可以选择。选中这个选项,将使程序可以在上一次编译的基础上被编译(即增量编译),而不必每次都从头开始编译。

调试方法: 1、使用 Assert(原则:尽量简单)assert只在debug下生效,release下不会被编译。 2、防御性的编程 3、使用Trace 4、用GetLastError来检测返回值,通过得到错误代码来分析错误原因 5、把错误信息记录到文件中 位置断点(Location Breakpoint) 大家最常用的断点是普通的位置断点,在源程序的某一行按F9就设置了一个位置断点。但对于很多问题,这种朴素的断点作用有限。譬如下面这段代码: void CForDebugDlg::OnOK() { for (int i = 0; i < 1000; i++) //A { int k = i * 10 - 2; //B SendTo(k); //C int tmp = DoSome(i); //D int j = i / tmp; //E } } 执行此函数,程序崩溃于E行,发现此时tmp为0,假设tmp本不应该为0,怎么这个时候为0呢?所以最好能够跟踪此次循环时DoSome函数是如何运行的,但由于是在循环体内,如果在E行设置断点,可能需要按F5(GO)许多次。这样手要不停的按,很痛苦。使用VC6断点修饰条件就可以轻易解决此问题。步骤如下。 1 Ctrl+B打开断点设置框,如下图:

C++编程中的四个调试小技巧

C++编程中的四个调试小技巧 1.调试标记 适用预处理#define定义一个或多个调试标记,在代码中把调试部分使用#ifdef 和#endif 进行管理。当程序最终调试完成后,只需要使用#undef标记,调试代码就会消失。常用的调试标记为DEBUG, 语句序列: #define DEBUG #ifdef DEBUG 调试代码 #endif 2.运行期间调试标记 在程序运行期间打开和关闭调试标记。通过设置一个调试bool标记可以实现。这对命令行运行的程序更为方便。 例如下面代码 #include<iostream> #include <string> using namespace std; bool debug =false; int main(int argc,char*argv[]) { for(int i=0;i<argc;i++) if(string(argv[i])=="--debug=on") debug = true; bool go=true; while(go) { if(debug) {

调试代码 }else {} } } 3.把变量和表达式转换成字符串 可是使用字符串运算符来实现转换输出定义 #define PR(x) cout<<#x"="<<x<<'\n' 4.c语言的assert() 该宏在<assert>中,,当使用assert时候,给他个参数,即一个判读为真的表达式。预处理器产生测试该断言的代码,如果断言不为真,则发出一个错误信息告诉断言是什么以及它失败一会,程序会终止。 #include< assert> using namsapce std; int main() { int i=100; assert(i!=100); //Fails } 当调试完毕后在#include<assert>前加入#define NDEBUG即可消除红产生的代码 }

VC调试技术

VC调试技术 程序出错的类型大致可以分为两种,语法错误和逻辑错误。语法错误可以通过编译器的出错信息得到纠正。然而逻辑错误则不能,所以各大IDE(集成开发环境)中都提供了debug功能,用来分析和排除程序中的逻辑错误,排除逻辑错误的过程又称调试(或debug),下面谨以VC++6.0的调试环境做介绍。 常用的调试命令主要有: step into 命令快捷键:F11 单步执行每条语句,在遇到函数的时候,系统将进入函数,单步执行其中的语句。 step over 命令快捷键:F10 单步执行每条语句,但在遇到函数时候,系统将把函数当作“一条语句”来执行,自动执行其中的内容,而不进入函数内部单步执行。 run to cursor 命令快捷键:Ctrl+F10 系统将自动执行到用户光标所指的语句前。 (这个功能很有用,可以将精力集中到有问题的地方,从而节省调试时间) Go 命令快捷键:F5 系统将编译,连接,自动运行程序,但是会在程序设置了断点(breakpoint)处停下。BuildExcute 命令快捷键:Ctrl+F5 系统将编译,连接,运行编译好的程序代码,因此不会在断点处停留,但是在程序执行结束之后,系统会给一个Pause,以方便用户观察输出结果。 Stop debug命令快捷键:Shift+F5 本命令是用来终止动态调试过程的。 动态调试的主要方法——watch(监视变量) 在程序编译通过以后,当使用了step into,step over,run to cursor, go命令使系统在程序执行的过程中停下之后,系统就会进入调试状态。 调试过程中,你的程序执行窗口会调到后台,而系统窗口中会显示你的程序,其中的黄色箭头指向的是系统下一步将要执行的语句。 而系统窗口下面的那个监视窗口就是我们将要介绍的重点. watch窗口被左右分成了两个部分,左面的那部分我们姑且称之为“自动监视区”(即variable窗口),而右面的我们称之为“手动监视区”。(即watch窗口) 自动监视区是系统自动跟踪的变量名。 系统默认显示auto标签,那是显示在上一步执行过程中,程序中发生改变的变量。 locals标签跟踪的是某一个函数中的所有变量。 上面的find sourse组合框中指示的是当前在locals标签下在跟踪的变量是属于哪一个函数的。 说明:当find sourse组合框中的内容变成灰色时,说明系统正在运行程序,或者等待输入端的数据(通常会是这个情况),此时应当注意程序执行窗口中的内容。 然而通常仅仅只有自动监视区所监视的变量是不够的,有时我们需要自己定义一些需要跟踪的变量——这个时候我们就要在手动监视区中输入变量名(也可以是系统认为合法的表达式)来跟踪我们需要的值。 注意:当用户定义了一个指向数组的watch之后,在变量的左边会出现一个小的'+'号,表示这个数组可以“展开”——显示其中每一个下标所指示的内容,这与其他高级语言的IDE有些不同。 值得一提的是VC++的一个人性化设置:在用户定义的变量很多时,往往需要通过滚屏才能看到所

vc++6调试按钮用法和注意事项(考前资料)

调试详细教程 1、调试的一般过程 调试,就是在程序的运行过程的某一阶段观测程序的状态。在一般情况下程序是连续运行的,所以我们必须使程序在某一地点停下来。我们所做的第一项工作就是设立断点;其次再运行程序;当程序在设立断点处停下来时,利用各种工具观察程序的状态。 程序在断点停下来后,有时我们需要按我们的要求控制程序的运行,以进一步观测程序的流向。 下面我们依次来介绍断点的设置,如何控制程序的运行以及各种观察工具的利用。 3、设置断点 在VC中,可以设置多种类型的断点,根据断点起作用的方式把这些断点分为三类: 1、与位置有关的断点; 2、与逻辑条件有关的断点 3、与WINDOWS消息有关的断点。 主要介绍前面两种断点。 4、设置位置断点 最简单的是设置一般位置断点: ?把光标移到你要设断点的位置,当然这一行必须包含一条有效语句的; ?然后按工具条上的add/remove breakpoint 按钮或按快捷键F9。 将会在屏幕上看到在这一行的左边出现一个红色的圆点表示这里设立了一个断点

5、设置位置断点-图示 6、设置逻辑断点 有的时候可能不需要程序每次运行到这儿都停下来,而是在满足一定条件的情况下才停下来,这时就需要设置一种与位置有关的逻辑断点。 从EDIT 菜单中选中Breakpoints命令,这时Breakpoints对话框将会出现在屏幕上。选中Breakpoint对话框中的Location标签,使Location页面弹出。 如下页图所示。

7、 8、设置逻辑断点 单击上页Condition按钮,弹出Breakpoint Condition对话框,在expression_r编辑框中写出你的逻辑表达式,最后按OK返回。 这种断点主要是由其位置发生作用的,但也结合了逻辑条件,使之更灵活。 9、控制程序的运行 上面我们讲了如何设置各类断点,下面我们来介绍如何控制程序的运行。当我们从菜单Build到子菜单Start Debug选择Go,程序开始运行在Debug状态下,程序会由于断点而停顿下来后,可以看到有一个小箭头,它指向即将执行的代码。

VC调试方法大全

一、调试基础 调试快捷键 F5: 开始调试 Shift+F5: 停止调试 F10 : 调试到下一句,这里是单步跟踪 F11 : 调试到下一句,跟进函数内部 跟踪调试 1、尽量使用快捷键时行调试 2、观察调试信息 3、高级中断设置 异常调试 重试— > 取消— > 调试 函数堆栈,用variables 或者call stack 窗口 Release 调试 经常测试你的Debug 和Release 版本 不要移除调试代码,如用 ASSERT, TRACE 等。 初始化变量,特别是全局变量, malloc 的内存,new 的内存 当你移除某个资源时,确保你移除了所有跟这个资源相关的申明(主要是在 resouce.h 文中) 使用3或者4级的警告级编译你的代码,并确保没有警告, Project->setting->c/c++->warninglevel ( 版是项目-> 属性->C/C++-> 常规— > 警告等级) 6、—debug 改成 NDEBUG 进行调试,project->setting->C/C++->Preprocessordefinitions >属性->C/C++-> 预处理器-> 预处理定义)(这里是debug 和Release 编译的重要不同之一) VC 调试方法大全 VC 调试方法大全 Shift+F11: 从当前函数中跳出 Ctrl+F10: 调试到光标所在位置 F9: 设置(取消)断点 Alt+F9: 高级断点设置 中文 (中文版是项目-

7、在 Release 中调试源代码,project->setting->C/C++->debug info 选择ProgramDataBase (中文版是项 目-> 属性->C/C++-> 常规-> 调试信息格式-> 用于编辑并继续"的程序数据库),Project — >setting->link 选上 Generate debug info ( 中文版是项目-> 属性-> 链接器-> 调试-> 生成调试信息) 8、走读代码,特别关注堆栈和指针 二、TRACE 宏 当选择了 Debug 目标,并且afxTraceEnabled 变量被置为TRUE 时,TRACE 宏也就随之被激活了。但在程序的 Release 版本中,它们是被完全禁止的。下面是一个典型的 TRACE 语句: int nCount =9; CString strDesc("total"); TRACE("Count =%d,Descri ption =%s\n",nCount,strDesc); 可以看到,TRACE 语句的工作方式有点像C 语言中的printf 语句,TRACE 宏参数的个数是可变的,因此使用起来非 常容易。如果查看 MFC 的源代码,你根本找不到TRACE 宏,而只能看到TRACE0、TRACE1、TRACE2和 TRACE3宏,它们的参数分别为 0、1、2、3。 个人总结:最近看网络编程是碰到了 TRACE 语句,不知道在哪里输出,查了一晚上资料也没找出来,今天终于找到 了,方法如下: 1.在MFC 中加入TRACE 语句 2.在 TOOLS->MFCTRACER 中选择 “ ENABLE TRACING ”点击 OK 3.进行调试运行,G0(F5)(特别注意:不是执行!'以前之所以不能看到TRACE 内容,是因为不是调试执行,而是 !‘了,切记,切记) 口,在那里就看到TRACE 的内容了, 以下是找的TRACE 的详细介绍: TRACE 宏对于VC 下程序调试来说是很有用的东西,有着类似 出现,当RELEASE 的时候该宏就完全消失了,从而帮助你调式也在 使用非常简单,格式如下: TRACE("DDDDDDDDDDD"); TRACE("wewe%d",333); 4.然后就会在OUT PUT 中的DEBUG 窗口中看到TRACE 内容了, 调试执行会自动从 BUILD 窗口跳到DEBUG 窗 printf 的功能;该宏仅仅在程序的 DEBUG 版本中 RELEASE 的时候减少代码量。

投影设置小窍门-投影机最简单调试方法

投影设置小窍门-投影机最简单调试方法

投影设置小窍门投影机最简单调试方法 随着高清影音时代到来,包括大屏幕电视、显示器在内的显示产品持续热销,其中就连消费者以前很少接触的家用投影机也变得好卖了许多。不过,相比传统的家电产品,投影机无论在安装还是调试方面都要复杂不少。 作为一种精密的光学设备,投影机的使用方法与许多家电产品有所不同,在使用之中,有不少注意事项需要提前阅读。今天,小编主要介绍一些投影机菜单中的主要功能与调试方法,希望对于刚刚接触投影及的新手带来一些帮助。 画面颠倒怎么办?投影方式需设置正确 在日常使用中,投影机最常见的安装方式无外乎吊装与正投两种。但是,由于每款投影机的镜头规格不同,其产品在投影距离与投射角度上存在差异,因此在购买或安装投影机前,要根据说明书中的投射距离参数计算安装位置。 一些高端产品具备镜头位移功能 点击此处查看全部新闻图片

在一些中高端家用投影机中,用户可以通过镜头位移功能调整画面位置,而且画面质量不会降低。通过这一功能,投影机的安装范围大幅扩大,能够安置在沙发一旁的边桌或者专业器材架上,特别适合不便于吊装投影机的家庭。当然,这些具备位移功能的产品,售价要更贵一些。 投影方式确保设置正确 点击此处查看全部新闻图片 无论投影机采用吊装还是正投,首先要在菜单中选择相应的投影方式,才能获得方向正确的显示画面。否则,可能会出现画面颠倒的情况,此时调整投影方式即可解决。 画面变形咋办?尝试使用梯形校正功能 与安装显示器、平板电视相似,投影机同样不能放在不平稳的表面或架子上,最好能够水平放置,此时投影画面最清晰,且不会出现梯形畸变。如果需要向上投影时,投影机倾斜角度不应超过15度,否则将会影响投影机的使用寿命。

vc++6.0调试方法(附有快捷键)

调试程序可以帮助了解程序是怎样运行的。 1、如何快速地规范代码缩进格式 选中所需要规范的代码,按alt+F8 2、如何在Release状态下进行调试 Project->Setting…->Project Settings对话框,选择Release状态。“C/C++”标签页中的Category选General,Optimizations选Disable(Debug),Debug info选Program Database。在“Link”标签页中选中Generate debug info复选框。 注:只是一个介乎Debug和Release的中间状态,所有的ASSERT、VERIFY都不起作用,函数调用方式已经是真正的调用,而不查表,但是这种状态下QuickWatch、调用队列跟踪功能仍然有效,和Debug版一样。 3、Release和Debug有什么不同。 Release版称为发行版,Debug版称为调试版。 Debug中可以单步执行、跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢。Release版运行速度较快,可执行文件较小,但在其编译条件下无法执行调试功能。 Release的exe文件链接的是标准的MFC DLL(Use MFC in a shared or static dll),比如 MFC42.DLL。这些DLL在安装Windows的时候,已经配置,所以这些程序能够在没有安装Visual C++ 6.0的机器上运行。而Debug版本的exe链接了调试版本的MFC DLL文件,如MFC42D.DLL。在没有安装Visual C++6.0的机器上不能运行,因为缺MFC42D.DLL等,除非选择use static dll when link。 4、ASSERT和VERIFY有什么区别 ASSERT里面的内容在Release版本中不编译,VERIFY里面的内容仍然编译,但不再判断真假。所以后者更安全一点。 例如ASSERT(file.Open(strFileName)),一旦到了Release版本中,这一行就忽略了,file根本就不Open()了,而且没有任何出错的信息。如果用VERIFY()就不会有这个问题。 5、Workspace和Project之间是什么样的关系 每个Workspace可以包括几个project,但只有一个处于Active状态,各个project之间可以有依赖关系,在project的S etting…中可以设定,比如那个Active状态的project可以依赖于其他的提供其函数调用的静态库。 6、如何在非MFC程序中使用ClassWizard 在工程目录下新建一个空的.RC文件,然后加入到工程中就可以了。

编译与调试技巧

调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。 这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。 设置 为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug Configuration自动包含调试信息,但是是不是Debug版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configuration中增加调试信息,包括Release版本。 为了增加调试信息,可以按照下述步骤进行: ?打开Project settings对话框(可以通过快捷键ALT+F7打开,也可以通过IDE菜单Project/Settings打开) ?选择C/C++页,Category中选择general ,则出现一个Debug Info下拉列表框,可供选择的调试信息方式包括: ? ?选择Link页,选中复选框"Generate Debug Info",这个选项将使连接器把调试信息写进可执行文件和DLL ?如果C/C++页中设置了Program Database以上的选项,则Link incrementally可以选择。选中这个选项,将使程序可以在上一次编译的基础上被编译(即增量编译),而不必每次都从头开始编译。

断点是调试器设置的一个代码位置。当程序运行到断点时,程序中断执行,回到调试器。断点是最常用的技巧。调试时,只有设置了断点并使程序回到调试器,才能对程序进行在线调试。 设置断点:可以通过下述方法设置一个断点。首先把光标移动到需要设置断点的代码行上,然后 ?按F9快捷键 ?弹出Breakpoints对话框,方法是按快捷键CTRL+B或ALT+F9,或者通过菜单Edit/Breakpoints打开。打开后点击Break at编辑框的右侧的箭头,选择合适的位置信息。一般情况下,直接选择line xxx就足够了,如果 想设置不是当前位置的断点,可以选择Advanced,然后填写函数、行号 和可执行文件信息。 去掉断点:把光标移动到给定断点所在的行,再次按F9就可以取消断点。同前面所述,打开Breakpoints对话框后,也可以按照界面提示去掉断点。 条件断点:可以为断点设置一个条件,这样的断点称为条件断点。对于新加的断点,可以单击Conditions按钮,为断点设置一个表达式。当这个表达式发生改变时,程序就被中断。底下设置包括“观察数组或者结构的元素个数”,似乎可以设置一个指针所指向的内存区的大小,但是我设置一个比较的值但是改动范围之外的内存区似乎也导致断点起效。最后一个设置可以让程序先执行多少次然后才到达断点。 数据断点:数据断点只能在Breakpoints对话框中设置。选择“Data”页,就显示了设置数据断点的对话框。在编辑框中输入一个表达式,当这个表达式的值发生变化时,数据断点就到达。一般情况下,这个表达式应该由运算符和全局变量构成,例如:在编辑框中输入g_bFlag这个全局变量的名字,那么当程序中有g_bFlag= !g_bFlag时,程序就将停在这个语句处。 消息断点:VC也支持对Windows消息进行截获。他有两种方式进行截获:窗口消息处理函数和特定消息中断。 在Breakpoints对话框中选择Messages页,就可以设置消息断点。如果在上面那个对话框中写入消息处理函数的名字,那么每次消息被这个函数处理,断点就到达(我觉得如果采用普通断点在这个函数中截获,效果应该一样)。如果在底下的下拉列表框选择一个消息,则每次这种消息到达,程序就中断。 值

相关主题