Mike Driscoll Profile picture
Nov 18, 2021 โ€ข 17 tweets โ€ข 5 min read โ€ข Read on X
Python comes with its own built-in debugger called `pdb`.

Let's talk about that in a mini-thread!

๐Ÿงต๐Ÿ๐Ÿ‘‡
`pdb` stands for Python debugger. It is a built-in part of Python's standard library

Here is a link to the documentation:

docs.python.org/3/library/pdb.โ€ฆ
To start debugging code with `pdb`, you need to write some code.

Here's the code you'll be using:
There are several different ways to debug code with `pdb`. Open up the Python REPL / interpreter in the same folder as the code you wish to debug.

Then run the following to run your code in the Python debugger
`pdb` uses many of the same commands as `gdb`, the C++ debugger. If you are familiar with `gdb`, then using `pdb` will be a snap!

In this code, you call `run()` to run your code. Then you type `continue` to continue the run. You can also type `c` as a shortcut for `continue`
When debugging, your code will run until one of the following occurs:

๐Ÿ An exception is raised
๐Ÿ You hit a breakpoint
๐Ÿ The code finishes successfully
You can also run the Python debugger on the command line by using a command like this one:
The output of running the code on the command line is different than running it in the REPL

The prompt, (Pdb) will appear. You will need to issue a command to `continue` or to step through your code
Here is an example console session where you use the `step` or `s` command to step through the code with `pdb`
You can add a breakpoint inside the `pdb` session itself by typing `break` followed by the line number you wish to add the breakpoint to
You can also add a breakpoint directly to your #Python code using `pdb.set_trace()`

Here is an example:
Starting in #Python 3.7, you can use the `breakpoint` keyword instead of `pdb.set_trace()`

If you run this code in PyCharm, VS Code and other popular debuggers, the IDE's debugger will launch instead of `pdb` when it reaches the `breakpoint()`
You can read more about the `breakpoint` keyword in PEP 553

python.org/dev/peps/pep-0โ€ฆ
If you can't remember a `pdb` command, just type `help` to get a full listing
This series of tweets is based on my tutorial @mousevspython

blog.pythonlibrary.org/2020/07/07/pytโ€ฆ
The full code examples can also be found on my PyTips repo:

github.com/driscollis/pytโ€ฆ
Thanks for reading my thread on Python's debugger, `pdb`!

Follow me to learn more Python!

โ€ข โ€ข โ€ข

Missing some Tweet in this thread? You can try to force a refresh
ใ€€

Keep Current with Mike Driscoll

Mike Driscoll Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @driscollis

Feb 1
Did you know that #Python supports SQLite in the standard library? That's right. You don't need to install anything! ๐Ÿ๐Ÿš€

Let's talk a little about that!

๐Ÿงต๐Ÿ‘‡
If you have a pre-existing SQLite database file, you can use #Python's `sqlite3` module to connect to it

Here's how: Image
If you want to create a new SQLite database with #Python, you can use the same syntax that you'd use to connect to a pre-existing one.

Then create a cursor object and create your table, like this: Image
Read 8 tweets
Nov 21, 2023
Today is a great day to talk about #Python lambdas!

Let's learn about them in a thread

๐Ÿ๐Ÿงต๐Ÿ‘‡
A Python lambda is a one-line anonymous function.

Rule #1 is do NOT assign a lambda to a variable.

When you do that, it's no longer an anonymous function. You should just create a regular function at that point Image
If you want to run a lambda in your REPL, wrap it in parentheses, like this: Image
Read 9 tweets
Mar 23, 2023
Want to create a copy of a #Python list? Use Python's `copy()` method!

Note: Watch out if your list contains lists of dictionaries. In those cases, you might be better off using copy.deepcopy()
But be careful! If your list contains a mutable object, like another list or a dictionary, you may encounter some unexpected behavior.

In the following example, you `copy()` the list. Then you modify the nested dictionary in the copy, but that also changes the original list!
You can fix this behavior by using Python's `copy` module. It provides a deepcopy() function that you can use which will make a deep copy of the ENTIRE list!
Read 4 tweets
Mar 22, 2023
#Python generators aren't talked about enough.

So let's talk about them today!

๐Ÿงต๐Ÿ๐Ÿ‘‡
According to the #Python wiki, "Generator functions allow you to declare a function that behaves like an iterator"

One of their best use cases is to chunk through large data sets a piece at a time, which prevents you from running out of memory.

wiki.python.org/moin/Generators
To create a generator in #Python, you need to use the `yield` keyword instead of `return` inside a function.

Generators will continue to yield values until the generator is exhausted.

The following example will continue to yield numbers for as long as you call it: Image
Read 10 tweets
Mar 21, 2023
My 11th #Python book is now available! ๐Ÿ๐Ÿคฏ

Test your Python skills and knowledge with over 100 PYthon quizzes. Answers are included if you get stuck!

Available on Amazon, Leanpub, and Gumroad (see following tweets)
Get my 11th #Python book, The Python Quiz book on Amazon in the following formats:

๐Ÿ Kindle
๐Ÿ Paperback

amazon.com/dp/B0BVT8DZV1
You can find The Python Quiz Book on @gumroad too in the following formats:

๐Ÿ epub
๐Ÿ PDF

driscollis.gumroad.com/l/pyquiz
Read 4 tweets
Mar 17, 2023
Starting in Python 3.7, the `breakpoint()` built-in function was added

It is defined in PEP 553 and simplifies adding a breakpoint to your code

#python_builtins_by_driscollis

๐Ÿงต๐Ÿ๐Ÿ‘‡
You can read about the `breakpoint()` function for Python here:

python.org/dev/peps/pep-0โ€ฆ
Here is some sample code showing how to use the `breakpoint()` function in your Python code
Read 6 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(