デバッグTips

効率的なデバッグのためのヒントとコツを記載します。

ログの活用

効果的なログの使い方について記載します。

ログレベルの設定

import logging

# ログレベルの設定
logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)

logger = logging.getLogger(__name__)

# 使用例
logger.debug("デバッグ情報")
logger.info("情報")
logger.warning("警告")
logger.error("エラー")
logger.critical("重大なエラー")

構造化ログ

// JavaScript での構造化ログ例
const log = {
  timestamp: new Date().toISOString(),
  level: 'info',
  message: 'User login',
  userId: 12345,
  ip: '192.168.1.1'
};

console.log(JSON.stringify(log));

デバッガーの活用

各言語でのデバッガーの使い方について記載します。

Node.js

// デバッガーの設定
debugger; // ブレークポイント

// VS Code での起動設定 (.vscode/launch.json)
{
  "type": "node",
  "request": "launch",
  "name": "Debug Program",
  "program": "${workspaceFolder}/index.js"
}

Python

import pdb

# ブレークポイントの設定
pdb.set_trace()

# Python 3.7以降
breakpoint()

パフォーマンスデバッグ

パフォーマンス問題のデバッグ方法について記載します。

プロファイリング

import cProfile
import pstats

# プロファイリングの実行
cProfile.run('your_function()', 'profile_output')

# 結果の表示
stats = pstats.Stats('profile_output')
stats.sort_stats('cumulative').print_stats(10)

メモリ使用量の監視

import psutil
import os

# メモリ使用量の確認
process = psutil.Process(os.getpid())
memory_info = process.memory_info()
print(f"Memory usage: {memory_info.rss / 1024 / 1024:.2f} MB")

リモートデバッグ

リモート環境でのデバッグ方法について記載します。

SSH ポートフォワーディング

# ローカルポートをリモートサーバーに転送
ssh -L 5678:localhost:5678 user@remote-server

# リモートデバッガーの起動
python -m debugpy --listen 0.0.0.0:5678 --wait-for-client app.py

エラー追跡

エラーの追跡と分析方法について記載します。

スタックトレースの読み方

エラーログから問題を特定する方法について記載します。

エラー監視

// JavaScript でのエラーハンドリング
window.addEventListener('error', (event) => {
  console.error('Global error:', {
    message: event.message,
    filename: event.filename,
    lineno: event.lineno,
    colno: event.colno,
    error: event.error
  });
});

一般的な問題と解決策

よくある問題とその解決方法について記載します。

無限ループの検出

無限ループを検出し、対処する方法について記載します。

メモリリークの特定

メモリリークを特定し、修正する方法について記載します。

データベース接続問題

データベース接続の問題をデバッグする方法について記載します。

デバッグツール

便利なデバッグツールについて紹介します。

  • Chrome DevTools: ブラウザでのデバッグ

  • Postman: API のテスト

  • DB Browser: データベースの確認

  • Log viewers: ログの解析