已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VisualVisual C C 6 06 0 调试功能调试功能 这是我自己在学习时整理的 希望对大家有用 其中有几个部分的内容 如下 My My NoteNote 全部由我截图并参考资料进行说明 这其中有大量的内容是调试过程中体会总结才写的 有不 当之处请大家更正 From From Visual Visual C C Debugger Debugger 这本书写得非常的不错 从里面截了一些有用的图 主要是强烈推荐大家阅读这本书 Debug Debug MenuMenu FromFrom MSDNMSDN 这是我从 Visual C 6 0 MSDN Library October 2001 中查来的 在 My Note 中有很多是从那里 参考的 强烈推荐大家看这份英文说明 From From visual visual C C 6 06 0 开发工具与调试开发工具与调试 这是我从网络上搜索到的 问题很经典 强烈推荐大家参看学习 避免不必要的错误 MyMy NoteNote 常用功能 1 RestartRestart Ctrl shift F5 此 debugger 功能将从程序的开始 第一有效行 处全速执 行 而不是从当前所跟踪的位置开始调试 这时所有变量的当前值都将被丢弃 debugger 会自动停在程序的 main 开始处 这时如果选择StepStep OverOver F10 就可以逐步 执行 main 函数了 2 StopStop DebuggingDebugging Shift F5 此 debugger 功能将终止 所有 调试 并返回到常规编辑 状态 3 BreakBreak 此功能常常在遇到调用函数的语句时可见 此功能将在调试过程中的 debugger 当前位置挂起程序的执行 然后就可以在调试状态一修改程序的代码 接着 可以用ApplyApply CodeCode ChangesChanges Alt F10 来应用修改的代码到正在调试的程序当中 如果 当前 需要 待 可以 从 DOS 等窗口 输入值 挂起后将不能再输入 4 ApplyApply CodeCode ChangesChanges Alt F10 此功能可以在程序正在调试程序过程中应用 挂起 修改后的源代码 如 选择BreakBreak功能并修改代码后 只要选择ApplyApply CodeCode ChangesChanges Alt F10 就能将修改后的代码应用到正在调试的程序当中 5 ShowShow NextNext StatementStatement Alt Num 此功能将显示程序代码的下一条语句 如果源代 码中找不到 则在 Disassembly 窗口中显示语句 当在 Disassembly 窗口中显示时 可以 单击Disassembly 返回到源代码窗口 6 StepStep IntoInto F11 此功能可以单步进入到在调试过程中所跟踪的调用函数的语句 的函数内部 如 当前语句是 d Display 选择StepStep IntoInto F11 后 Debugger 将进入 Display 函数内部并停在 Display 函数内部的第一条语句上 此时 就可以StepStep OverOver F10 对 Display 函数进行单步调试了 7 StepStep OverOver F10 此功能可以单步对所在函数单步调试 如果调试的语句是一个调 用函数的语句时 Debugger 将全速执行所调用的函数 单步 一步 通过所调用的函数 Debugger 停该调用语句的下一条语句上 8 StepStep OutOut Shift F11 此功能将使 Debugger 切换回全速执行到被调用函数结束 并 停在该函数调用语句的下一条语句上 当确定所调用的函数没有问题时可以用这个 功能全速执行被调用函数 9 RunRun toto CursorCursor Ctrl F10 此功能将全速执行到包含插入点光标所在的行 可以作 为在插入点光标处设置常规断点的一种选择 注意 当光标处不是一个有效的执行语 句时此功能将不起作用 10 GoGo F5 此功能将全速执行程序直到遇到一个断点或程序结束 或直到程序暂停等 待用户输入 注意 此功能最能有效的调试循环 常将断点设置在循环体内 重复的按 F5 全速执行循环体可以测试循环过程中的产生的变化 11 Step Into Specific Function 此功能可以可以单步通过程序中的指令 并进入指定的函 数调用 此功能对于函数的嵌套层不限 调试常用快捷键调试常用快捷键 单步进入单步进入F11 单步跳过单步跳过F10 单步跳出单步跳出SHIFT F11 运行到光标运行到光标CTRL F10 开关断点开关断点F9 清除断点清除断点CTRL SHIFT F9 Breakpoints 断点管理断点管理 CTRL B 或或 ALT F9 GOF5 Compile 编译编译 生成生成 obj 文件文件 CTRL F7 Build 组建组建 先先 Compile 生成生成 obj 再再 Link 生成生成 exe F7 FromFrom Visual Visual C C Debugger Debugger DebugDebug MenuMenu FromFrom MSDNMSDN StartStart DebugDebug CommandsCommands Build Build menu menu MenuMenu commandcommandActionAction GoGoExecutes code from the current statement until a breakpoint or the end of the program is reached or until the application pauses for user input Equivalent to the GoGo button on the toolbar StepStep IntoIntoSingle steps through instructions in the program and enters each function call that is encountered RunRun toto CursorCursorExecutes the program as far as the line that contains the insertion point This is equivalent to setting a temporary breakpoint at the insertion point location AttachAttach toto ProcessProcessAttaches the debugger to a process that is running Then you can break into the process and perform debugging operations like normal When you begin debugging the DebugDebug menu appears replacing the BuildBuild menu on the menu bar You can then control program execution using the commands listed in the following table DebugDebug MenuMenu CommandsCommands thatthat ControlControl ProgramProgram ExecutionExecution DebugDebug menumenu commandcommandActionAction GoGoExecutes code from the current statement until a breakpoint or the end of the program is reached or until the application pauses for user input Equivalent to the GoGo button on the Standard toolbar When the DebugDebug menu is not available you can choose GoGo from the StartStart DebugDebug submenu of the BuildBuild menu RestartRestart Resets execution to the first line of the program This command reloads the program into memory and discards the current values of all variables breakpoints and watch expressions still apply It automatically halts at the main main or WinMain WinMain function StopStop DebuggingDebugging Terminates the debugging session and returns to a normal editing session BreakBreak Halts the program at its current location StepStep IntoIntoSingle steps through instructions in the program and enters each function call that is encountered When the DebugDebug menu is not available you can choose StepStep IntoInto from the StartStart DebugDebug submenu of the BuildBuild menu StepStep OverOverSingle steps through instructions in the program If this command is used when you reach a function call the function is executed without stepping through the function instructions StepStep OutOutExecutes the program out of a function call and stops on the instruction immediately following the call to the function Using this command you can quickly finish executing the current function after determining that a bug is not present in the function RunRun toto CursorCursorExecutes the program as far as the line that contains the insertion point This command is equivalent to setting a temporary breakpoint at the insertion point location When the DebugDebug menu is not available you can choose RunRun ToTo CursorCursor from the StartStart DebugDebug submenu of the BuildBuild menu StepStep IntoInto SpecificSpecific FunctionFunction Single steps through instructions in the program and enters the specified function call This works for any number of nesting levels of functions The following additional commands appear on the Debug menu ExceptionsExceptionsDisplays the Exceptions dialog which you can use to specify how you want the debugger to handle your program exceptions ThreadsThreadsDisplays the Threads dialog which you can use to suspend resume or set focus to progam threads ShowShow NextNext StatementStatementShows the next statement in your program code If source code is not available displays the statement within the Disassembly window QuickWatchQuickWatchDisplays the Quick Watch window where you can work with expressions FromFrom visual visual C C 6 06 0 开发工具与调试开发工具与调试 1 如何快速地规范代码缩进格式 选中所需要规范的代码 按 shift F8 2 如何在 Release 状态下进行调试 Project Setting ProjectSetting 对话框 选择 Release 状态 C C 标签中的 Category 选 General Optimizations 选 Disable Debug Debut 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 的 Setting 中可以设定 比如那个 Active 状态的 project 可以依赖于其他的提供其函数调用的静态库 6 如何在非 MFC 程序中使用 ClassWizard 在工程目录下新建一个空的 RC 文件 然后加入到工程中就可以了 7 如何设置断点 按 F9 在当前光标处增加一个断点和取消一个断点 另外 在编辑状态下 按 Ctrl B 组合键 弹出断点设置对话框 然后单击 Condition 按钮弹出设置断点条件的对话框进行设置 8 在编辑状态下发现成员变量或函数不能显示提示是如何打开显示功能 这似乎是目前这个 Visual C 6 0 版本的一个 bug 可按如下步骤使其正常 如再出现 可如法炮制 1 关闭 Project 2 删除 工程名 ncb 文件 3 重新打开工程 9 如何将一个通过 ClassWizard 生成的类彻底删除 首先在工作区的 FileView 中选中该类的 h 和 cpp 文件 按 delete 删除 然后在文件管 理器中将这两个文件删除 再运行 ClassWizard 这时出现是否移走该类的提示 选择 remove 就可以了 10 如何将再 workspace 中消失的类找出来 打开该类对应的头文件 然后将其类名随便改一下 这个时候工作区就会出现新的类 再 将这个类改回原来的名字就可以了 11 如何清除所有的断点 菜单 Edit Breakpoints 打开 Breakpoints 对话框 单击 Remove All 按钮即可 快捷键是 Ctrl Shift F8 12 如何再 ClassWizard 中选择未列出的信息 打开 ClassWizard 对话框 然后切换到 Class Info 页面 改变 Message filter 如选 择 Window Message 页面就会出现 Window 的信息 13 如何检测程序中的括号是否匹配 把光标移动到需要检测的括号前面 按快捷键 Ctrl 如果括号匹配正确 光标就跳 到匹配的括号处 否则光标不移动 并且机箱喇叭还会发出一声警告 14 如何查看一个宏 或变量 函数 的定义 把光标移动到要查看的一个宏上 就比如说最常见的 DECLARE MAP MESSAGE 上按一 下 F12 或右键菜单中的相关菜单 如果没有建立浏览文件 就会出现提示对话框 按 确定 按钮 然后就会跳到该宏 或变量 函数 定义的地方 15 如何添加 Lib 文件到当前工程 单击菜单 Project Settings 弹出 Project Setting 对话框 切换到 Link 标签页 在 Object library modules 处输入 Lib 文件名称 不同的 Lib 之间 用空格格开 16 如何快速删除项目下的 Debug 文件夹中临时文件 在工作区的 FileView 视图中选中对应的项目 单击右键弹出菜单 选择 Clean selection only 菜单即可 17 如何快速生成一个现有工程除了工程名外完全相同的新工程 在新建工程的 New 对话框中选择 Custom Appwizard 项 输入新工程的名字 单 击 OK 按钮 出现 Custom AppWizard 项 输入新工程的名字 单击 OK 按钮 出现 Custom AppWizard Step 1 of 2 对话框 选择 An existing Project 项 单 击 Next 按钮 出现 Custom AppWizard Step 2 of 2 对话框 选择现有工程的 工程文件名 最后单击 Finish 按钮 编译后就生成一个与现有工程相同但可以重新取 名的工程 AppWizard 现在就可以项用 MFC AppWizard 一样用这个定制的向导 如果不想用了 可以在 Visual C 6 0 安装目录下 Common MSDev98 Template 目录中删除该 Wizard 对应的 awx 和 pdb 文件 18 如何解决 Visual C 6 0 不正确连接的问题 情景 明明之间改动了一个文件 却要把整个项目全部重新编译链接一次 刚刚链接好 一运行 有提示重新编译链接一次 这是因为出现了未来文件 修改时间和创建时间比系统时间晚 的缘故 可以这样处理 找 到工程文件夹下的 debug 目录 将创建和修改时间都比系统时间的文件全部删除 然后 再从新 Rebuild All 一次 19 引起 LNK2001 的常见错误都有哪些 遇到的 LNK2001 错误主要为 unresolved external symbol symbol 如果链接程序不能在所有的库和目标文件内找到所引用的函数 变量或标签 将产生此错 误信息 一般来说 发生错误的原因有两个 一时所引用的函数 变量不存在 拼写不正确或者使 用错误 其次可能使用了不同版本的链接库 一下是可能产生 LNK2001 错误的原因 由于编码错误导致的 LNK2001 错误 1 不相匹配的程序代码或模块定义 DEF 文件导致 LNK2001 例如 如果 在 C 源文件了内声明了一变量 var1 却视图在另一个文件内以变量 var1 访问改变量 2 如果使用的内联函数是在 cpp 文件内定义的 而不是在头文件内定义将 导致 LNK2001 错误 3 调用函数是如果所用的参数类型头函数声明是的类型不符将会产生 LNK2001 错误 4 视图从基类的构造函数或析构函数中调用虚拟函数时将会导致 LNK2001 错误 5 要注意函数和变量的可公用性 只有全局变量 函数时可公用的 静态 函数和静态变量具有相同的使用范围限制 当试图从文件外部方位任何没 有在该文件内声明的静态变量时将导致编译错误或 LNK2001 错误 由于编译和联机的设置而造成的 LNK2001 错误 1 如果编译时使用的时 NOD NODERAULTLIB 选项 程序所需要的 运行库和 MFC 时将得到又编译器写入目标文件模块 但除非在文件 中明确包含这些库名 否则这些库不会北链接进工程文件 这种情况 下使用 NOD 将导致 LNK2001 错误 2 如果没有为 wWinMainCRTStartup 设定程序入口 在使用 Unicode 和 MFC 时讲的到 unresolved external on WinMain 16 的 LNK2001 错误信息 3 使用 MD 选项编译时 既然所有的运行库都被保留在动态链接库之 内 源文件中对 func 的引用 在目标文件里即对 imp func 的引用 如果试图使用静态库 LIBC LIB 或 LIBCMT LIB 进行链接 将在 imp func 上发生 LNK2001 错误 如 果不使用 MD 选项编译 在使用 MSVCxx LIB 链接时也会发生 LNK2001 错误 4 使用 ML 选项编译时 如用 LIBCMT LIB 链接回在 errno 上发生 LNK2001 错误 5 当编译调试版的应用程序时 如果采用发行版模态库进行链接也会 产生 LNK2001 错误 同样 使用调试版模态库链接发行版应用程序 时也会产生相同的错误 6 不同版本的库和编译器的混合使用也能产生问题 因为新版的库里 可能包含早先的版本没有的符号和说明 7 在不同的模块中使用内联和非内联的编译选项能够导致 LNK2001 错误 如果创建 C 库时打开了函数内联 Ob1 或 Ob2 但是在描 述该函数的相应头问卷安里却关闭了函数内联 没有 inline 关键字 只是将得到错误信息 为避免该问题的发生 应该在相应的头文件中 用 inline 关键字标志为内联函数 8 不正确的 SUBSYSTEM 或 ENTRY 设置也能导致 LNK2001 错误 20 如何调试一个没有源码的 exe 文件调用的 dll 在 Visual C 6 0 中 进入 Project Setting 对话框然后选
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025关于制定建筑工程装修合同范本
- 2025年甘南州辅警招聘考试题库附答案详解(完整版)
- 2025年阿里辅警招聘考试题库及1套完整答案详解
- 2025年银川辅警招聘考试真题及一套参考答案详解
- 2025年阿拉善盟辅警协警招聘考试备考题库完整参考答案详解
- 《2025关于影视作品的版权合同》
- 2025进口买方信贷贷款合同专业版
- 2025年贵阳辅警招聘考试题库附答案详解(培优)
- 2025年雅安辅警招聘考试真题含答案详解(研优卷)
- 2025年石柱县辅警招聘考试真题附答案详解(巩固)
- 2025江苏徐州云龙区基层社区工作者招聘25人考试笔试模拟试题及答案解析
- 汽车保养快修课件
- 2025江苏扬州高邮市交通产业投资集团有限公司招聘拟聘用笔试历年参考题库附带答案详解
- 小学硬笔书法分级教学方案
- 口语交际(劝说、建议)
- 急救药品使用规范与考核题
- 职务犯罪宣传课件
- GB/T 43683.4-2025水轮发电机组安装程序与公差导则第4部分:立式轴流转桨式或轴流定桨式水轮机
- DB43-T 1976-2021 压力容器波纹金属软管定期检查技术规范
- 南开大学简介
- JTG3410-2025公路沥青及混合料试验规程解读宣贯
评论
0/150
提交评论