debug

λ°œμƒν•  수 μžˆλŠ” 버그 μ’…λ₯˜

  1. 문법 였λ₯˜ : php 인터프리터가 문법 였λ₯˜λ₯Ό λ‚Έλ‹€.

  2. 둜직 였λ₯˜ : λ¬΄ν•œ λ£¨ν”„λ‚˜ 잘λͺ»λœ μ‘°κ±΄λΆ„κΈ°λ“±μ˜ 였λ₯˜λ‘œ 잘λͺ»λœ 데이터 좜λ ₯λ“±μ˜ 문제 λ°œμƒ

  3. λ¦¬μ†ŒμŠ€ 였λ₯˜ : null ν¬μΈν„°λ‚˜ μ΄ˆκΈ°ν™”ν•˜μ§€ μ•Šμ€ λ³€μˆ˜γ…‘ λŽ…μ΄ν„°νƒ€μž…λ“±μ˜ 였λ₯˜λ‘œ Trying to get property of non-object λ˜λŠ” Call to undefined methodλ©”μ„œμ§€λ‘œ ν‘œμ‹œλœλ‹€. 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ λ©”μ„œλ“œμ˜ λ§€κ°œλ³€μˆ˜ μ•žμ— νƒ€μž… 힌트λ₯Ό μ‚¬μš©ν•˜λŠ” 편이 쒋은 μŠ΅κ΄€μ΄κ³  php7λΆ€ν„°λŠ” νƒ€μž…μ„ 지정이 κ°€λŠ₯ν•˜λ‹€.

  4. 계산 버그 : 0으둜 값을 λ‚˜λˆ„κ±°λ‚˜ 반올림 자릿수λ₯Ό 잘λͺ» μž…λ ₯ν•΄ μ΄μƒν•œ 데이터λ₯Ό 좜λ ₯ν•˜λŠ” 문제 λ°œμƒ => 돈과 κ΄€λ ¨λœ μ„œλΉ„μŠ€μ—μ„œλŠ” 치λͺ…적일 수 μžˆλ‹€.

  5. λ™μ‹œμ„± 였λ₯˜ : phpλŠ” 단일 μŠ€λ ˆλ“œ μ–Έμ–΄λ‘œ 닀쀑 μŠ€λ ˆλ“œ λ¬Έμ œλŠ” 많이 λ°œμƒν•˜μ§€ μ•Šμ§€λ§Œ νŠΈλž˜ν”½μ΄ λ§Žμ€ dbμ—μ„œλŠ” λ°œμƒν•  수 있고 μ΄λ•Œ νŠΈλžœμž­μ…˜ κΈ°λŠ₯을 μ΄μš©ν•  μˆ˜μžˆλ‹€.

  6. 잘λͺ»λœ μ‚¬μš© : apiλ₯Ό 잘λͺ» μ‚¬μš©ν•  λ•Œ λ°œμƒ ν•  수 μžˆλŠ” 였λ₯˜

  7. νŒ€μ›Œν¬ 였λ₯˜ : μ—¬λŸ¬λͺ…이 같은 μ½”λ“œλ₯Ό 짜고 κ³ μΉ˜λŠ” κ³Όμ •μ—μ„œ 좩돌, side effect등이 λ°œμƒ ν•  수 μžˆλ‹€.

  8. μ„±λŠ₯ 였λ₯˜

  9. λ³΄μ•ˆ 였λ₯˜ : μ„œλΉ„μŠ€μ˜ 데이터가 μ˜€μ—Ό, μœ μ‹€, νƒˆμ·¨λ˜λŠ” 문제

  10. 섀계 였λ₯˜ : 잘λͺ»λœ 섀계 λͺ…μ„Έμ„œμ— μ˜ν•΄μ„œ μ—‰λš±ν•œ 결과물이 λ‚˜μ˜¬ μˆ˜λ„ μžˆλ‹€.

디버깅 방법

1. dd() ν•¨μˆ˜

//controller
public function show($id){
    $article = \App\Article::findeOrFail($id);
    dd($article);
    return $article->toArray();
}

dd()λ©”μ„œλ“œλŠ” λ””λ²„κ±°λ‘œ 쀑단점을 μ°λŠ” 것과 λ˜‘κ°™μ€ 일을 μˆ˜ν–‰ν•˜μ—¬ 인자둜 받은 값을 λ€ν”„ν•˜κ³  싀행을 λ©ˆμΆ˜λ‹€. μ΄λŠ” λ·°λ₯Ό λ””λ²„κΉ…ν• λ•Œλ„ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€. 라라벨은 λΈ”λ ˆμ΄λ“œ μ—”μ§„μœΌλ‘œ λ·°λ₯Ό μ»΄νŒŒμΌν•œ ν›„ storage/framework/view 디렉토리 μ•„λž˜μ— μΊμ‹œν•΄ λ†“λŠ”λ°, 이 μΊμ‹œλœ νŒŒμΌμ„ μ—΄μ–΄ λ·° 디버깅을 ν•  μˆ˜λ„ μžˆλ‹€ ν•˜μ§€λ§Œ 엔진이 μ»΄νŒŒμΌν•œ php파일이라 보기 λΆˆνŽΈν•  수 μžˆμ€λ° μ΄λ•Œ render()λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜λ©΄ λœλ‹€.

controllerμ—μ„œ dd(view('article.index',compact('articles'))->render());와 같이 μž‘μ„±ν•˜λ©΄ render()λ©”μ„œλ“œκ°€ λ·° μΈμŠ€ν„΄μŠ€μ— μ €μž₯된 htmlμ½”λ“œλ₯Ό 좜λ ₯ν•΄μ€€λ‹€.

2. 쿼리 디버깅

php artisan tinker
>>> $queryLoyalUsers = App\User::wher(
    'last_login', '>', Carbon\Carbon::now()->subMonth()
)->toSql();

DB::listen(function ($query){...})ꡬ문을 μ΄μš©ν•˜κ±°λ‚˜ μ»¬λ ‰μ…˜μ„ μ–»λŠ” 쿼리일 λ•ŒλŠ” μœ„μ™€ 같이 toSql()λ©”μ„œλ“œλ₯Ό μ΄μš©ν•  수 μžˆλ‹€. λͺ¨λΈ μΏΌλ¦¬μ—μ„œ get()λ©”μ„œλ“œλ₯Ό toSql()둜 λ°”κΎΈκΈ°λ§Œ ν•˜λ©΄ λœλ‹€.

Last updated