1、Delphi开发的调试技巧_快捷鍵列表 2009-10-12 14:26From:http:/ Options】按钮。显示 Project Options,选择 Complier 选中 Debug Information :把调试信息嵌入到 DCU单元文件,会加大编译后的 DCU文件,但不会影响最后生成的 exe的大小和执行速度。同时激活【Search】菜单中的【Find Error】命令。当文件中包含调试信息并得到一个运行时错误(run-time error),记录下 Delphi提供的 16进制地址,在【Search】【Find Error】中输入,Delphi 将重新编译程序,并停留在产
2、生错误的命令行。 Local symbols:决定调试器能否看到在 Implementation中定义的局部变量。 Reference infoj 选项/Definition Only 选项是否产生应用程序中对象标识符的引用信息。信息和对象代码存在 dcu文件中,可以使用对象浏览器查看。如果 Definition Only 选项同时选中,编译器将生成标识符定义位置的信息,能够激活对象浏览器的Refenrence页。如果不选,Dcu 文件更小。 编辑器命令$D Debug Information$L Local Information$Y Symbol Information$C Asserti
3、ons 2、使用内部调试器 命令行参数在【Run】【Parameters】中设置 断点 条件断点使源代码断点只有在满足某个条件时才有效。在【View】Debug windows-【BreakPoints】打开“BreakPoint List”对话框,右击断点,从弹出菜单中选择属性。打开“Source BreakPoint Properties”对话框,在 Condition中输入条件,在对话框中点击按钮【Advanced】,可以设置更多选项,“Ignore Subsequent Exceptions”使调试程序遇到下一个断点时不中断;选中“Handle Subsequent Exception
4、”则调试程序遇到下一个断点时恢复默认性能。也可以通过【Run】【Add BreakPoint】设置。 数据断点特定地址的内存被修改时才使程序挂起。【Run】【Add BreakPoint】【Data BreakPoint】命令添加,或者在 BreakPoint List对话框中右击,选择 Add Data BreakPoint。输入监测内存区域的开始地址和长度(字节数) 地址断点特定地址的代码执行时就使程序挂起。通常在 CPU窗口中设置。 模块加载地址在一个模块加载时使程序挂起。【Run】【Add BreakPoint】 断点组使用断点组,任何一个断点都能设置成使其他断点有效或无效,可以通过断
5、点算法来查找特殊的错误。 3、单步执行 【Step Over】 (F8 功能键),【Trace Into】(F7 功能键),【Run to Cursor】(F4 功能键)临时使程序暂停【Program Pause】。Ctrl+F5 【Add Watch】,Ctrl+F7 【Evaluate/Modify】 4、其他工具 Debug Inspector 适合查看由许多数据组成的复合数据,诸如类和记录。单击省略号按钮,可以修改数据的值。计算和修改 Evaluate/Modify,可以改变变量的值,但不能访问超出域外的函数和变量。访问调用栈 【View】【Debug Windows】【Call St
6、ack】,可以看到函数和过程的调用情况及传递给他们的参数。查看线程,如果应用程序运行了多线程,可以通过【View】【Debug Windows】【Threads】查看线程的状态,可以查看某一线程的源代码,选择当前线程。(ctrl+alt+t)事件日志记 录调试期间发生的事情。【View】【Debug Windows】(ctrl+alt+v),可以在【Tools】【Debugger Options】对话框“Debugger”选项组或事件日志的本地菜单配置事件日志功能。记录的事件包括:进程开始、终止、模块加载断点、发给应用程序 的 Windows消息以及使用OutputDebugString()的
7、输出。模块视图获取所有加载到应用程序进程中的模块。(ctrl+alt+m)在过程、函数、事件内部, SHIFT+CTRL+向上的方向键 可跳跃到相应的过程、函数、事件的定义相反,在过程、函数、事件的定义处,SHIFT+CTRL+向下的方向键 可跳跃到具体过程、函数、事件内部CTRL+ SHIFT + C:编写申明或者补上函数. 如: procedure TT.A(AA: string); /函数申明 安下:CTRL+ SHIFT + C 后,会写上 procedure TT.A(AA: string); begin end; SHIFT+CTRL+E 显示 EXPLORER crtl + sh
8、ift + n (n=1,2,3,4) 定义书签 crtl + n (n=1,2,3,4) 跳到书签 n ALT+鼠标左键可以块选代码,删除对齐的重复代码非常有用。 Ctrl+B Buffer List窗口。 Ctrl+I 同 Tab键。 Ctrl+M 同 Enter键。 Ctrl+N 同 Enter键,但光标位置保持不变。 Ctrl+T 删除光标右边的一个单词。 Ctrl+Y 删除光标所在行。 Ctrl+Shift+ 光标在函数体内时,将光标快速移至当前函数声明处。 Ctrl+Shift+ 光标在函数声明行时,将光标快速移至函数定义处。Ctrl+Shift+C 声明一个过程或函数后,直接生成
9、过程或函数的名称、begin、end; Ctrl+Shift+E 光标在 Edit窗口和 Explorer窗口间切换。 Ctrl+Shift+J 弹出 Delphi语句提示窗口,选择所需语句将自动完成一条语句。 Ctrl+Shift+T 在光标行加入 To-Do注释。 Ctrl+Shift+Y 删除光标之后至本行末尾之间的文本。 Ctrl+F3 Call Stack窗口。 Ctrl+F4 等于 File菜单中的 Close项。 Ctrl+鼠标转轮 加速滚屏。 Shift+F8 调试时弹出 CPU窗口。 Shift+F10 等于鼠标右键(Windows 快捷键)。 Alt+F4 关闭所有编辑框中
10、打开的源程序文件,但不关闭项目。 CTRL+ENTER 定位到单元文件 Shitf+箭头 选择 如果同时按住 Alt +Shitf+箭头, 再进行选择, 则是一种区域选择, 而不是行选择, 粘贴的 时候也就是插入粘贴了. F9 运行 CTRL+ F9编译 F8 STEP OVER (步进式调试不进入子过程) F7 TRACE INTO (步进式调试同时追踪进入子过程) F11,F12 切换 EDITOR,INSPECTOR,FORM DESIGNER. CTRL+ALT+F11 弹出工程管理器 CTRL+F弹出查找对话框 CTRL+R弹出替换对话框 CTRL+ Shitf+C 类过程代码补全(
11、只要在定义部分定义一过程或一函数头则自动帮你生成 实现部分的套架;反之也成) 但是 DELPHI 中怎样跳格呢? 其实也是有办法的, 就是 CTRL+K,I向后, CTRL+K,U向前. 有时候反复输入什么东西是不是很繁? CTRL+SHIFT+R 录制键盘宏, 比如我经常做的就是: 下箭头-下箭头-HOME-回车-CTRL+V, 再键入一次 CTRL+SHIFT+R录制完成, 之后您可以使用 CTRL+SHIFT+P, 重复宏,还是省了一些事的. 另外在 DELIPHI中有一个很有用的快键极其有用 这就是 CTRL+J;列如:在一过程中你输入 ifb后再按 CTRL+J你回去看看效果吧,可能
12、你会大 吃一惊。这就是 Code Insight. ctrl+shift+u /块缩进/反缩进 ctrl+shift+i 取消书签: 在书签 N处,再按一次 SHIFT + CTRL + N Ctrl+E 一种查找挺好的,其余的都被你们说玩了 按住 Ctrl再点对象、过程、函数,转到其定义原型,即便是 Delphi VCL源代码中的 Unit。 ALT+F4 关闭 DELPHI :D Ctrl+K+O,Ctrl+K+N 将选中的整块代码都转为小写或大写 Ctrl+F 查找 Ctrl+L 继续查找 在 Inspector,可以用 Ctrl+Tab切换 Properties页和 Events页 C
13、trl+Enter可进入相应的设置,如在 Preperties页的 Font按Ctrl+Enter 在 Events中按 Ctrl+Enter可进入相应代码编辑 Ctrl+Shift+i : 同时推进 2格 Ctrl+Shift+u : 同时退后 2格/red 还有一招,我经常用的,不知大家常不常用 按住 ALT用鼠标选择文本 或者按住 ALT加 SHIFT,用方向键选择文本 没试过就赶快去试试!:D 在 form上放一个 tedit控件,然后在代码中写入“edit1.”,稍等一下,会出现提示。 在“edit1.”未写入前,要想使用这个提示功能,可以按住 windows键,然后按空白键。 (只
14、有 windows键盘可以用此功能!) CTRL+SPACE与输入法冲突,把输入法的有无输入法快捷键从CTRL+SPACE该为其他键组合 就行了,我是改成了 CTRL+SHIFT+SPACE. 然后在 UNIT中,比如输入 fo这是按下 CTRL+SPACE就会出现一系列以fo开头的变量,函数。 Ctrl+Backspace 后退删除一个词。好像是到 . 为止。 在 object inspector窗口按 tab键将光标移动到属性名区,然后键入属性名的开头 字母可快速定位到该属性 alNone,alLeft,alRight等); 【Ctrl+Tab】在属性列表及事件列表中切换; 三、菜单快捷键
15、:快捷键 4: 【F12】,【Shift+F12】,【Ctrl+F12】等在 Delphi的菜单中已有定义的在此不必罗嗦. 技巧: 如何选择被组件覆盖了的窗体(比如某组件的 Align属性为 alClient)? 方法一、按 ESC键,一层一层的往后选,直到窗体被选为当前组件为止; 方法二、按 Shift的同时单击鼠标左键,一步即可选定(推荐); 方法三、按 F11选定对象观察器,然后切换到属性列表,再用上面快捷键 3中的【Ctrl+Down】 Ctrl+UP向上移动选中组件(微调); Ctrl+Left 向左移动选中组件(微调); Ctrl+Down向下移动选中组件(微调) ;Ctrl+Ri
16、ght 向右移动选中组件(微调); Shift+UP减小选中组件的高度; Shift+Left 减小选中组件的宽度; Shift+Down增加选中组件的高度; Shift+Right 增加选中组件的宽度; Ctrl+鼠标拖动 可以选中一个控件上层的其他控件而不选中其本身! DELPHI中的快捷方式一览(完全正式版)1.SHIFT+鼠标左键 先选中任一控件,按键后可选中窗体(选中控件后按 Esc效果一样)2.Shift+F8 调试时弹出 CPU窗口。3.Shift+F10 等于鼠标右键(Windows 快捷键)。4.Shitf+箭头 选择5.shift +F12 快速查找窗体并打开6.F7 (步
17、进式调试同时追踪进入子过程)7.F8 (步进式调试不进入子过程)8.F9 运行9.F12 切换 EDITOR,FORM10.Alt+F4 关闭所有编辑框中打开的源程序文件,但不关闭项目11.ALT+鼠标左键 可以块选代码,用来删除对齐的重复代码非常有用12.Ctrl+F9 编译13.Ctrl+shift+N(n=1,2,3,4) 定义书签14.Ctrl+n(n=1,2,3,4)跳到书签 n15.CTRL +SHIFT+N 在书签 N处,再按一次 取消书签16.Ctrl+PageUp 将光标移至本屏的第一行,屏幕不滚动17.Ctrl+PageDown 将光标移至本屏的最后一行,屏幕不滚动18.C
18、trl+ 向下滚动屏幕,光标跟随滚动不出本屏19.Ctrl+ 向上滚动屏幕,光标跟随滚动不出本屏20.Ctrl+Home 将光标移至文件头21.Ctrl+End 将光标移至文件尾22.Ctrl+B Buffer List窗口23.Ctrl+I 同 Tab键24.CTRL+J (弹出 Delphi语句提示窗口,选择所需语句将自动完成一条语句)代码模板25.Ctrl+M 同 Enter键。26.Ctrl+N 同 Enter键,但光标位置保持不变27.Ctrl+T 删除光标右边的一个单词28.Ctrl+Y 删除光标所在行29.CTRL+C 复制30.CTRL+V 粘贴31.CTRL+X 剪切32.C
19、TRL+Z 还原(Undo)33.CTRL+S 保存34.Ctrl+F 查找35.Ctrl+L 继续查找36.Ctrl+r 替换37.CTRL+ENTER 定位到单元文件38.Ctrl+F3 弹出 Call Stack窗口39.Ctrl+F4 等于 File菜单中的 Close项40.Ctrl+Backspace 后退删除一个词,直到遇到一个分割符41.Ctrl+鼠标转轮 加速滚屏42.Ctrl+O+U 切换选择块的大小写(注意松开 O后再按 U,Ctrl保持按下)43.Ctrl+K+O 切换选择块为小写(注意松开 K后再按 O,Ctrl保持按下)44.Ctrl+K+N 切换选择块为大写(注意
20、松开 K后再按 N,Ctrl保持按下)45.Ctrl+Shift+G 插入 GUID46.Ctrl+Shift+T 在光标行加入 To-Do注释47.Ctrl+Shift+Y 删除光标之后至本行末尾之间的文本48.CTRL+SHIFT+C 编写申明或者补上函数,绝好!49.CTRL+SHIFT+E 显示 EXPLORER50.Ctrl+Tab 在 Inspector中切换 Properties页和 Events页51.CTRL+SHIFT+U 代码整块左移 2个空格位置52.CTRL+SHIFT+I 代码整块右移 2个空格位置53.CTRL+SHIFT+ 在过程、函数、事件内部, 可跳跃到相应
21、的过程、函数、事件的定义(在 interface和 implementation之间来回切换)54.CTRL+SHIFT+ 在过程、函数、事件的定义处, 可跳跃到具体过程、函数、事件内部(同上)55.Tab 在 object inspector窗口按 tab键将光标移动到属性名区,然后键入属性名的开头字母可快速定位到该属性56.Ctrl+Alt 按着 Ctrl+Alt之后,可用鼠标选择一个矩形块中的代码,并可比它进行复制,粘贴57.Shift+、 以 1像素单位更改所选控件大小58.Ctrl+、以 1像素单位更改所选控件位置59.Ctrl+E 快速选择(呵呵,试试吧,很好玩的)-GExpert
22、s中-60.Ctrl+Alt+c 注释块61.Ctrl+Alt+u 取消注释块62.Ctrl+Alt+h 生成头(更详细的设置在 GExperts配置的Editor Experts属性页)63.Ctrl+Alt+o 选择对应分隔符之间的语句64.Ctrl+Alt+v 在对应的分隔符之间来回跳转(与已有快捷键有冲突,请更改)-GExperts中- Ctrl+Alt+left arrow 在 Gexpert里快速选定 begin与其对应 end之间所有代码的方法。 Alt + F11 在出现的窗口中选择一个 unit将在当前 unit的implementation部分自动 uses你刚才选择的 unit