重文技艺山海经 2015-06-30
在ruby on rails 编程中 难免会遇到问题,有些问题需要一步一步的调试才能解决,这里记录一下rails的常用的调试方法已被后期的使用
断点设置在何处终止执行代码。调试器会在断点设定行调用。
断点可以使用 break
命令(缩写形式为 b
)动态添加。设置断点有三种方式:
break line
:在当前源码文件的第 line
行设置断点;break file:line [if expression]
:在文件 file
的第 line
行设置断点。如果指定了表达式 expression
,其返回结果必须为 true
才会启动调试器;break class(.|\#)method [if expression]
:在 class
类的 method
方法中设置断点,.
和 \#
分别表示类和实例方法。表达式 expression
的作用和上个命令一样;(rdb:5) break 10 Breakpoint 1 file /PathTo/project/vendor/rails/actionpack/lib/action_controller/filters.rb, line 10
info breakpoints n
或 info break n
命令可以列出断点。如果指定了数字 n
,只会列出对应的断点,否则列出所有断点。(rdb:5) info breakpoints Num Enb What 1 y at filters.rb:10如果想删除断点,可以执行
delete n
命令,删除编号为 n
的断点。如果不指定数字 n
,则删除所有在用的断点。(rdb:5) delete 1 (rdb:5) info breakpoints No breakpoints.启用和禁用断点的方法如下:
enable breakpoints
:允许使用指定的断点列表或者所有断点终止执行程序。这是创建断点后的默认状态。disable breakpoints
:指定的断点 breakpoints
在程序中不起作用。有两种方法可以恢复被调试器终止执行的程序:
continue [line-specification]
(或 c
):从停止的地方恢复执行程序,设置的断点失效。可选的参数 line-specification
指定一个代码行数,设定一个一次性断点,程序执行到这一行时,断点会被删除。finish [frame-number]
(或 fin
):一直执行程序,直到指定的堆栈帧结束为止。如果没有指定 frame-number
参数,程序会一直执行,直到当前堆栈帧结束为止。当前堆栈帧就是最近刚使用过的帧,如果之前没有移动帧的位置(执行 up
,down
或 frame
命令),就是第 0 帧。如果指定了帧数,则运行到指定的帧结束为止。有很多 Rails 插件可以帮助你查找问题和调试程序。下面列出一些常用的调试插件:
SELECT
查询前执行 EXPLAIN
查询,并在每个页面中添加一个 div
元素,显示分析到的查询问题;development.log
文件的内容,显示的内容包括:数据库查询时间,渲染时间,总时间,参数列表,渲染的视图等。