Doiya’s blog

日々の進捗を書く雑記ブログ(メインはエンジニアやプログラミング関連)

デバックについて

デバッグとは

コンピュータのプログラムの誤り(=バグ)を見つけ、手直しをすること。 詰まった時に、「どこに原因があるのかを追求する」ことがとっても大事!

分割統治法という。

ガチで超重要な考え方「問題の切り分け」について | Take off Rails

Rails アプリケーションのデバッグ - Railsガイド

何かが動かない

どの処理まで通っているのかを潰していくのがまじで大事。

モデル
ビュー (erbだと囲み方気をつけてね)
コントローラー
ヘルパーなど

たとえその当該の処理が動かなくても、前述した分割統治法でどこか原因を探ればあたりがわかる。とにかく、細かく分割すること。これに尽きる。(N回目)

Rails(Ruby) でのデバッグは何を使うの?

byebug
debugger
binding.pry
など

おすすめコマンド一部紹介

cd → 移動 (めちゃくちゃ長い命名 HogeFugaRunteqIizoControlles とかだとcd後のself確認が楽)
ls → 変数とメソッドの一覧を表示
!!! → 強制終了
@ → whereamiのalias 現在位置を表示する
? → document見れる

show-routes --grep users → rails routesみたいな感じ
show-model User

helpで結構見れます.

cd -h とかしてみるとわかる

実践してみる

1 binding.pry 書いて値確認
2 nextで移動して確認
3 ls @user で何のメソッド生えてるかとか

細かいおすすめ紹介

省略しよう

こんな感じでaliasつけたりするとヨシ!

(ただ eという変数は例外で拾ったりので二文字にしたりする )

if defined?(PryByebug)
  Pry.commands.alias_command 's', 'step'
  Pry.commands.alias_command 'n', 'next'
  Pry.commands.alias_command 'f', 'finish'
  Pry.commands.alias_command 'c', 'continue'
  Pry.commands.alias_command 'ex', 'exit'
end

require 'awesome_print'
AwesomePrint.pry!
# もし挙動がおかしければ上記消せばOK
# https://github.com/awesome-print/awesome_print
gem 'pry-rails'
gem 'awesome_rails_console'
gem 'awesome_print' (色がつく)

自分がやってるデバッグ方法

1とにかく処理を言語化しておく。

→ まず自分の頭がクリアになるし、丁寧に書いているとどこまで調べたか、人に聞く時に共有しやすい。

【解決したい】
エラー解決
【現状】
Aが~~なので、◎◎というエラーでてる
【処理】
A hoge
B huga
C hage
【仮説】
1. 〇〇
2. △△
3. ✕✕

まず自分で自分に質問する(ラバーダッグデバッグ)

それでもわからなければ、質問してみる。

問題の解決策が瞬時に見つかる「ラバーダック・デバッグ」はいかが? | BAsixs(ベーシックス)

2自分のレベルに応じて質問を書く

質問は恥ではないし役に立つ - Qiita

雑談

Macの打ったコマンドを画面に表示するツール

キーボード操作の解説に便利!押したキーを画面上に表示できるMacアプリ「ShowKeys」 | iTea4.0

Alfred(これは、担当された方がガチでおすすめしていた。)

clipy

iterm

peco

tig

タブ補完とか、Macのショートカットキーは覚えよう!

Macアプリ「CheatSheet」 - ショートカットキーのリストを表示 | PC設定のカルマ

その他

・ログを見る

・リクエストされたのか何かを確認する。(ディベロッパーツール)

・Qiitaで調べて、その内容を深掘りしたい時は公式ドキュメントを見る。