Debug Ruby/Rails application with byebug
1. Introduction Nói đơn giản ngắn gọn thì byebug là một gem cung cấp các commands để hỗ trợ cho việc debugging ruby applications. Về chi tiết cụ thể, các bạn có thể xem thêm trên github của byebug. Các tính năng chính của byebug: Stepping: thực thi các câu lệnh theo trình tự. Nếu trước ...
1. Introduction
Nói đơn giản ngắn gọn thì byebug là một gem cung cấp các commands để hỗ trợ cho việc debugging ruby applications. Về chi tiết cụ thể, các bạn có thể xem thêm trên github của byebug. Các tính năng chính của byebug:
- Stepping: thực thi các câu lệnh theo trình tự. Nếu trước đây bạn sử dụng các IDE như Visual Studio, Eclipse hay RubyMine, bạn có thể debug application step by step, ví dụ như step over, step in, step out. Tuy nhiên, nếu sử dụng text editor (sublime, emacs...), bạn không có sẵn các tính năng đó, cài thêm byebug, bạn sẽ có :).
- Breaking: tạo breakpoint, conditional breakpoint...
- Evaluating: Basic REPL functionality
- Tracking: theo dõi sự thay đổi của variables hay các dòng lệnh khi thực thi
2. Commands trong byebug
Command | Aliases | Subcommands |
---|---|---|
backtrace | btwhere | |
break | ||
catch | ||
condition | ||
continue | ||
delete | ||
disable | breakpoints display | |
display | ||
down | ||
edit | ||
enable | breakpoints display | |
eval | ||
finish | ||
frame | ||
help | ||
history | ||
info | args breakpoints catch display file files line program | |
irb | ||
kill | ||
list | ||
method | instance | |
next | ||
pp | ||
pry | ||
ps | ||
putl | ||
quit | exit | |
restart | ||
save | ||
set | autoeval autoirb autolist autosave basename callstylefullpath histfile histsize linetrace listsize post_mortemstack_on_error verbose awidth | |
show | autoeval autoirb autolist autosave basename callstylefullpath histfile histsize linetrace listsize post_mortemstack_on_error verbose awidth | |
source | ||
step | ||
thread | current list resume stop switch | |
tracevar | ||
undisplay | ||
up | ||
var | all constant global instance local |
3. Hướng dẫn sử dụng cơ bản
Phần này chỉ giới thiệu cơ bản cách sử dụng, để xem hướng dẫn đầy đủ, các bạn có thể xem tại trang guide của byebug. Trong phần này sẽ chỉ giới thiệu cách debug rails application. Khi muốn debug một dòng nào đó trong ứng dụng, bạn chỉ cần đặt câu lệnh byebug ở ngay phía trên dòng muốn debug. Về cơ bản, có thể xem bản thân lệnh byebug như là một breakpoint. Ở đây mình có một name_cards_controller và mình muốn debug action create (tạo mới một name card), nên mình đặt dòng lệnh byebug ở ngay dòng đầu tiên bên trong action create. Tiếp theo, tiến hành chạy rails server, thực hiện hành vi sẽ gọi đến action create, tức là tạo mới một name_card object. Lúc này trong cửa sổ terminal của rails server, execution sẽ dừng ở dòng byebug. Lúc này bạn có thể evaluate giá trị của các variable trong context hiện tại. Các commands bạn có thể hỗ trợ cho bạn:
- next: move đến execution của dòng tiếp theo, ví dụ ở đây đang ở dòng 26, khi gõ next, con trỏ sẽ nhảy đến dòng 27
- step: nếu tại dòng 26, bạn gõ step, byebug sẽ nhảy vào definition của method create_params, tương tự như khi bạn sử dụng step in trong các IDE phổ biến
- up: tương tự như step out, sau khi step in tại dòng 26, debugger nhảy vào method create_params, muốn nhảy ra lại, các bạn gõ lệnh up
- pp: viết tắt của pretty print, giúp bạn xem value của một variable nào đó đã được format cho dễ nhìn.
- continue: thoát debugger và tiếp tục execution của app.
- help <command>: xem description của command
Ngoài ra các bạn cũng có thể đặt thêm breakpoints bằng lệnh break, gõ h break để biết cách sử dụng.
4. Sử dụng byebug với sublime text
sublime-debugger là một project được phát triển từ byebug, cung cấp khả năng debug trực tiếp ngay trên sublime text như đặt breakpoint, next, step... Xem thêm cách cài đặt tại website của sublime debugger.
5. Hết bài