Как использовать дебаггер в pycharm
Step 2. Debug your first Python application
Finding out the origin of the problem
Remember, in the previous tutorial you’ve created and run the Car script? Let’s play a little more with it and modify the average_speed function as follows:
Let’s see what happens when we start our script up, and try to find out our average speed:
Let’s dig a little deeper into our code to find out what’s going wrong. We can use the PyCharm debugger to see exactly what’s happening in our code. To start debugging, you have to set some breakpoints first. To create breakpoints, just click in the gutter
PyCharm starts a debugging session and shows the Debug tool window
The debugger also shows the error message. So we’ve found our problem. You can also see in the debugger, that the value self.time is equal to zero:
Surrounding code
To avoid running into the same problem again, let’s add an if statement to check whether the time equals zero. To do that, select the statement return self.odometer / self.time in the method average_speed and then press Ctrl+Alt+T ( Code | Surround with ):
PyCharm creates a stub if construct, leaving you with the task of filling it with the proper contents.
After editing, we get the following:
Let’s take a closer look to see how the debugger can show your what your code is doing.
Debugging in detail
The Debug tool window shows dedicated panes for frames, variables, and watches, and the console, where all the input and output information is displayed. If you want the console to be always visible, you can drag it to one of the PyCharm window’s edges.
Stepping
If you want to see what your code does line by line, there’s no need to put a breakpoint on every line, you can step through your code.
We can use the stepping toolbar buttons to choose on which line we’d like to stop next.
Watching
However, when the program execution continues to the scope that defines the variable, the watch gets the following view:
See Watches section for details.
Inline debugging
You may have noticed another PyCharm feature that makes it easy to see what your code is doing: the inline debugger. As soon as you press any breakpoint, PyCharm shows you the value of many of your variables right in the editor:
Summary
So, you’ve done it! Congrats! Let’s repeat what you’ve done with the help of PyCharm:
Debug
There is a variety of ways how you can run a debugging session, however, for simplicity this documentation assumes that you are building and running your project from PyCharm. This is the most common case, and it has fewer limitations as compared to more advanced techniques. The procedures for attaching to a process and debugging a remote application are covered in separate sections.
Configure debugging options
If you are new to debugging, the out-of-the-box configuration will work for you. The topics about each debugger functionality provide references and explain the related settings where applicable. If you are an advanced user and looking for some particular property, see the Debugger reference section.
Under the Build, Execution and Deployment section, select Python Debugger, and configure the Python debugger options.
Under the Project | Python Interpreter section, configure the Python packages that might be required for some debugging configurations.
Define a run/debug configuration if you are going to use a custom one. This is required if you need some arguments to be passed to the program or some special activity to be performed before launch. For more information on how to set up run/debug configurations, refer to the Run/debug configurations section. Most of the time, you don’t need this to debug a simple program that doesn’t expect arguments or have any special requirements.
General debugging procedure
There is no one-size-fits-all procedure for debugging applications. Depending on actual requirements you may have to use different actions in different order. This topic provides general guidelines, which represent typical debugging steps. The details on how and when to use particular features are provided in the respective topics.
The alternative to using breakpoints is manually suspending the program at an arbitrary moment, however this method imposes some limitations on the debugger functionality and doesn’t allow for much precision as to when to suspend the program.
Just right-click any line in the editor and select the Debug command from the context menu.
After the program has been suspended, use the debugger to get the information about the state of the program and how it changes during running.
The debugger provides you with the information about variable values, the current state of the threads, breakdown of objects that are currently in the heap, and so on. It also allows you to test your program in various conditions by throwing exceptions (for example, to check how they are handled) or running arbitrary code right in the middle of the program execution.
While these tools let you examine the program state at a particular instant, the stepping feature gives you the control over step-by-step execution of the program. By combining the tools you can deduce where the bug is coming from and test your program for robustness.
Part 1. Debugging Python Code
Preparing an example
Copy the following code into a file in your project (though it is recommended to type this code manually):
Placing breakpoints
To place breakpoints, just click the gutter next to the line you want your application to suspend at:
Refer to the section Breakpoints for details.
Starting the debugger session
OK now, as we’ve added breakpoints, everything is ready for debugging.
The debugger starts, shows the Console tab of the Debug tool window, and lets you enter the desired values:
Then the debugger suspends the program at the first breakpoint. It means that the line with the breakpoint is not yet executed. The line becomes blue:
Inline debugging
In the editor, you see the grey text next to the lines of code:
Inline debugging can be turned off.
Note that you can do it in course of the debugger session!
Let’s step!
Watching
However, when the program execution continues to the scope that defines the variable, the watch gets the following view:
Evaluating expressions
PyCharm gives you the possibility to evaluate any expression. For example:
Changing format of the decimal variables
In PyCharm debugger, you can preview int variables in the hexadecimal or binary format. This might be particularly helpful when you debug network scripts that include binary protocols.
To change the display format, select one or several int variables in the Variables list, right-click, and select View as | Hex from the context menu.
The format of the variables change both in the list of the variables and in the editor.
Summary
You’ve refreshed your knowledge of the breakpoints and learnt how to place them.
You’ve learnt how to begin the debugger session, and how to show the Python prompt in the debugger console.
You’ve refreshed your knowledge about the inline debugging.
You’ve tried hands on stepping, watches and evaluating expressions.
Отладка программ в среде разработки PyCharm
Перейдите в программе на интересующую Вас строку, начиная с которой будет начала отладка.
Теперь рядом со строкой появилась красная жирная точка. Это точка останова. Теперь при выполнении программы в режиме отладки среда остановит её в этом месте, и можно будет узнать состояние программы.
Нажмите правой кнопкой на название файла с программой и выберите Debug:
Теперь программа запустилась и остановилась на указанной строке. Текущее положение интерпретатора Python в программе отмечается синей строкой. В нижней части экрана появилась вкладка отладки. Там виден список переменных, доступных из данной точки программы.
Как и ожидалось, интерпретатор переместил фокус своего внимания на строку 2, вовнутрь функции get_third_from_end() :
Таким образом можно легко узнавать, что происходит в каждой точке Вашей программы. Это часто необходимо для поиска ошибок, когда Вы не понимаете, почему программа выдаёт некоторый неверный ответ. Удачной отладки!
Как использовать Pycharm для отладки вашего кода Python
Код отладки на любом языке может быть расстраивает, но это особенно так в Python, где мы немедленно не можем распознать ошибку.
Кроме того, Python предоставляет нам библиотеку PDB в качестве инструмента для отладки, что также может быть трудно обрабатывать.
К счастью, у нас есть пичарный IDE. Он использует Pydev и дает нам новый опыт отладки!
В этой статье я пойду на основную и наиболее полезную отладку функций Pycharm должен предложить и научить вас как эффективно использовать их.
Контрольные точки
Точки останова могут быть ненужными, когда мы сталкиваемся с ошибкой, который возникает в определенном состоянии.
Кроме того, когда у нас много из них, это беспорядок.
К счастью, Pycharm дает нам возможность управлять точками останова эффективным способом:
3. Как мы можем видеть, для каждой точки останова мы можем установить условие, которое будет запускать точку останова (см. 2)
4. Кроме того, мы можем установить очень особенное условие, которое контролирует, будет ли точка останова будет вызвать, когда происходит исключение (см. 3) в двух разных состояниях:
а. По окончании (после заканчивается сценарий)
б. На повышении (до заканчивается сценарий)
Прикрепить к локальным процессам
Вы когда-нибудь задавались вопросом, можно ли отладить удаленный процесс?
Выполните ли вы другие процессы на заднем плане или создаете их как часть потока, Pycharm предоставляет вам очень эффективный способ отладки удаленных процессов:
2. Теперь выберите процесс Python, который вы хотите отлавить:
3. Затем процесс, который вы выбрали, будут отлажены в Pycharm:
Переводчик Python с загруженной средой
Создание расчетов и манипулированием переменных текущего отлаженного кода экономит время и позволяет внести изменения на фактическую песочницу!
Pycharm предоставляет нам переводчик Python с загруженной средой.
2. Как вы можете увидеть ниже, переводчик признает наши переменные!
Заключение
Pycharm предоставляет нам много отличных инструментов, и этот отладчик является одним из них.
Иногда отладки могут быть тяжелыми, но если вы используете правильные инструменты, это может быть проще и даже весело!
Я надеюсь, что эта статья научила вам что-то новое, и я с нетерпением жду ваших отзывов. Пожалуйста, скажите – было ли это полезно для вас?