11/08/2018, 21:18

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. Screen Shot 2015-04-11 at 11.14.18 AMTiế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. Screen Shot 2015-04-11 at 11.24.14 AMLú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

111614_1812_DependencyI4.png

0