Debugging is an inherent part of software development, often consuming a significant portion of a developer’s time. While traditional methods like logging, breakpoints, and print statements remain essential, artificial intelligence, particularly large language models (LLMs), offers powerful new avenues to accelerate the debugging process.

This guide will walk through practical techniques for using AI to diagnose issues, understand unfamiliar code, and even suggest fixes faster. We will focus on actionable steps, real-world scenarios, and the critical considerations for integrating AI into your debugging workflow. By the end, we expect you will be equipped to use AI as a potent assistant, reducing your debugging cycle time and freeing you up for more complex problem-solving.

Prerequisites

Before we dive into the specifics, ensure you have the following ready:

  1. Access to an LLM:
  • Cloud-based: An API key for models like OpenAI’s GPT-4 (recommended for its reasoning capabilities), Anthropic’s Claude, or Google’s Gemini. We will primarily use the text-based chat interface or API for demonstration.
  • Local models: For privacy or cost reasons, consider running models like Llama 3 via tools like Ollama. The principles remain similar.
  • Note on privacy: Exercise extreme caution when pasting proprietary or sensitive code into public cloud-based LLMs. For production code, consider enterprise-grade solutions, self-hosted models, or sanitizing your input.
  1. A Code Editor: VS Code is excellent, especially with extensions like GitHub Copilot or Codeium, which integrate LLMs directly into your IDE. While we’ll focus on direct interaction with an LLM, these tools streamline the process.
  2. Basic Debugging Knowledge: Familiarity with concepts like stack traces, error messages, and the general flow of debugging in your preferred language is assumed.
  3. A Problem to Debug: A real or simulated bug in your codebase will provide the best learning experience. We will use a Python example for consistency.

Step-by-step sections

Let’s imagine we are working on a simple Python Flask application that processes user data, and we’ve encountered a TypeError.

1. Identifying the Problem and Gathering Context

The first step is always to reproduce the bug and gather all available information. This includes the exact error message, the full stack trace, and any relevant logs or input data that triggered the issue.

Let’s say our Flask application throws an error when trying to access user details.

# app.py
from flask import Flask, request, jsonify

app = Flask(__name__)

USER_DATABASE = {
    "alice": {"email": "alice@example.com", "age": 30},
    "bob": {"email": "bob@example.com", "age": 24}
}

def get_user_data(username):
    """Fetches user data from a simulated database."""
    return USER_DATABASE.get(username)

@app.route('/user_profile', methods=['GET'])
def user_profile():
    username = request.args.get('username')
    user_data = get_user_data(username)

    # This line is causing an error
    user_email = user_data['email'] 
    user_age = user_data['age']

    return jsonify({"username": username, "email": user_email, "age": user_age})

if __name__ == '__main__':
    app.run(debug=True)

When we access http://127.0.0.1:5000/user_profile?username=charlie, we get a 500 Internal Server Error and the console shows:

Traceback (most recent call last):
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2548, in __call__
 return self.wsgi_app(environ, start_response)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_request_functions
 rv = self.handle_user_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1790, in try_trigger_before_first_request_functions
 rv = func()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1776, in handle_user_exception
 return self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
 response = self.handle_exception(e)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 2525, in wsgi_app
 response = self.full_dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1820, in full_dispatch_request
 rv = self.preprocess_request() or self.dispatch_request()
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1806, in dispatch_request
 return self.try_trigger_before_first_request_functions(rv)
 File "/path/to/venv/lib/python3.9/site-packages/flask/app.py", line 1792, in try_trigger_before_first_

## Recommended Reading

*Deepen your skills with these highly-rated books. Links go to Amazon — as an affiliate, we may earn a small commission at no extra cost to you.*

- [Debugging](https://www.amazon.com/s?k=debugging+david+agans&tag=devtoolbox-20) by David J. Agans
- [The Pragmatic Programmer](https://www.amazon.com/s?k=pragmatic+programmer+hunt+thomas&tag=devtoolbox-20) by Hunt & Thomas