Разное

Отладчик с: Первое знакомство с отладчиком — Visual Studio

Содержание

Первое знакомство с отладчиком — Visual Studio



  • Чтение занимает 10 мин

В этой статье

В этом разделе представлены средства отладчика, предоставляемые Visual Studio.This topic introduces the debugger tools provided by Visual Studio. В контексте Visual Studio отладка приложения обычно означает запуск приложения с подключенным отладчиком (то есть в режиме отладчика).In the Visual Studio context, when you debug your app, it usually means that you are running the application with the debugger attached (that is, in debugger mode). При этом в отладчике доступно множество способов наблюдения за выполнением кода.When you do this, the debugger provides many ways to see what your code is doing while it runs. Вы можете пошагово перемещаться по коду и просматривать значения, хранящиеся в переменных, задавать контрольные значения для переменных, чтобы отслеживать изменение значений, изучать путь выполнения кода и т. д. Если вы не знакомы с процессом отладки, перед выполнением задач в этом разделе рекомендуется прочесть документ об отладке для начинающих.You can step through your code and look at the values stored in variables, you can set watches on variables to see when values change, you can examine the execution path of your code, et al. If this is the first time that you’ve tried to debug code, you may want to read Debugging for absolute beginners before going through this topic.

Описанные здесь функции применяются к C#, C++, Visual Basic, JavaScript и другим языкам, поддерживаемым Visual Studio (если не указано иное).The features described here are applicable to C#, C++, Visual Basic, JavaScript, and other languages supported by Visual Studio (except where noted).

Установка точки останова и запуск отладчикаSet a breakpoint and start the debugger

Для отладки нужно запустить приложение с отладчиком, подключенным к процессу приложения.To debug, you need to start your app with the debugger attached to the app process. Для этого чаще всего используется клавиша F5 (Отладка > Начать отладку).F5 (Debug > Start Debugging) is the most common way to do that. Однако сейчас у вас, возможно, не задано ни одной точки останова для проверки кода приложения, поэтому мы сначала зададим их, а затем начнем отладку.However, right now you may not have set any breakpoints to examine your app code, so we will do that first and then start debugging. Точки останова — это один из самых простых и важных компонентов надежной отладки.Breakpoints are the most basic and essential feature of reliable debugging. Точка останова указывает, где Visual Studio следует приостановить выполнение кода, чтобы вы могли проверить значения переменных или поведение памяти либо выполнение ветви кода.A breakpoint indicates where Visual Studio should suspend your running code so you can take a look at the values of variables, or the behavior of memory, or whether or not a branch of code is getting run.

Если вы открыли файл в редакторе кода, точку останова можно задать, щелкнув в поле слева от строки кода.If you have a file open in the code editor, you can set a breakpoint by clicking in the margin to the left of a line of code.

Нажмите клавишу F5 (Отладка > Начать отладку) или Начать отладку кнопку на панели инструментов отладки, при этом отладчик выполняется до первой встреченной точки останова.Press F5 (Debug > Start Debugging) or the Start Debugging button in the Debug Toolbar, and the debugger runs to the first breakpoint that it encounters. Если приложение еще не запущено, при нажатии клавиши F5 запускается отладчик и выполняется остановка в первой точке останова. If the app is not yet running, F5 starts the debugger and stops at the first breakpoint.

Точки останова полезны, если вам известны строка или раздел кода, которые вы хотите подробно изучить.Breakpoints are a useful feature when you know the line of code or the section of code that you want to examine in detail.

Переход по коду в отладчике с помощью пошаговых командNavigate code in the debugger using step commands

Мы указываем сочетания клавиш для большинства команд, так как они ускоряют навигацию по коду вашего приложения.We provide the keyboard shortcuts for most commands because they make navigation of your app code quicker. (Эквивалентные команды, например команды меню, приведены в круглых скобках.)(Equivalent commands such as menu commands are shown in parentheses.)

Для запуска приложения с подключенным отладчиком нажмите клавишу F11 (Отладка > Шаг с заходом).To start your app with the debugger attached, press F11 (Debug > Step Into). F11 — это команда Шаг с заходом, которая выполняет приложение с переходом к следующему оператору.F11 is the Step Into command and advances the app execution one statement at a time. При запуске приложения с помощью клавиши F11 отладчик останавливается на первом выполняемом операторе.When you start the app with F11, the debugger breaks on the first statement that gets executed.

Желтая стрелка представляет оператор, на котором приостановлен отладчик. В этой же точке приостанавливается выполнение приложения (этот оператор пока не выполнен).The yellow arrow represents the statement on which the debugger paused, which also suspends app execution at the same point (this statement has not yet executed).

Клавишу F11 удобно использовать для более детальной проверки потока выполнения.F11 is a good way to examine the execution flow in the most detail. (Мы также покажем другие варианты более быстрого перемещения по коду. ) По умолчанию отладчик пропускает непользовательский код (дополнительные сведения см. в статье об отладке в режиме «Только мой код»).(To move faster through code, we show you some other options as well.) By default, the debugger skips over non-user code (if you want more details, see Just My Code).

Примечание

В управляемом коде вы увидите диалоговое окно с запросом о том, хотите ли вы получать уведомления при автоматическом обходе свойств и операторов (поведение по умолчанию).In managed code, you will see a dialog box asking if you want to be notified when you automatically step over properties and operators (default behavior). Если вы хотите изменить этот параметр позже, отключите параметр Шаг с обходом свойств и операторов в меню Сервис > Параметры в разделе Отладка.If you want to change the setting later, disable Step over properties and operators setting in the Tools > Options menu under Debugging.

Шаг с обходом по коду для пропуска функцийStep over code to skip functions

Когда вы находитесь на строке кода, представляющей собой вызов функции или метода, можно нажать клавишу F10 (Отладка > Шаг с обходом) вместо F11.When you are on a line of code that is a function or method call, you can press F10 (Debug > Step Over) instead of F11.

Клавиша F10 продолжает выполнение отладчика без захода в функции или методы в коде приложения (код продолжает выполняться).F10 advances the debugger without stepping into functions or methods in your app code (the code still executes). Нажав клавишу F10, вы можете обойти код, который вас не интересует.By pressing F10, you can skip over code that you’re not interested in. Так можно быстро перейти к важному для вас коду.This way, you can quickly get to code that you are more interested in.

Шаг с заходом в свойствоStep into a property

Как упоминалось ранее, по умолчанию отладчик пропускает управляемые свойства и поля, однако команда Шаг с заходом в конкретное расположение позволяет переопределить это поведение. As mentioned earlier, by default the debugger skips over managed properties and fields, but the Step Into Specific command allows you to override this behavior.

Щелкните правой кнопкой мыши свойство или поле и выберите Шаг с заходом в конкретное расположение, а затем выберите один из доступных параметров.Right-click on a property or field and choose Step Into Specific, then choose one of the available options.

В этом примере команда Шаг с заходом в конкретное расположение приводит нас к коду для Path.set.In this example, Step Into Specific gets us to the code for Path.set.

Быстрое выполнение до точки в коде с помощью мышиRun to a point in your code quickly using the mouse

Находясь в отладчике, наведите курсор на строку кода, пока слева не появится кнопка выполнения до щелкнутого (Выполнить до этого места) отображается слева.appears on the left.

Примечание

Кнопка выполнения до щелкнутого (Выполнить до этого места) доступна начиная с версии Visual Studio 2017Visual Studio 2017.The Run to Click (Run execution to here) button is available starting in Visual Studio 2017Visual Studio 2017.

Нажмите кнопку выполнения до щелкнутого (Выполнить до этого места).Click the Run to Click (Run execution to here) button. Отладчик продолжает выполнение до строки кода, которую вы щелкнули.The debugger advances to the line of code where you clicked.

Использование этой кнопки аналогично установке временной точки останова.Using this button is similar to setting a temporary breakpoint. Кроме того, эта команда удобна для быстрой работы в видимой области кода приложения.This command is also handy for getting around quickly within a visible region of app code. Выполнение до щелкнутого можно использовать в любом открытом файле. You can use Run to Click in any open file.

Вывод отладчика из текущей функцииAdvance the debugger out of the current function

В некоторых случаях может потребоваться продолжить сеанс отладки, однако полностью проведя отладчик сквозь текущую функцию.Sometimes, you might want to continue your debugging session but advance the debugger all the way through the current function.

Нажмите клавиши SHIFT+F11 (или выберите Отладка > Шаг с выходом).Press Shift + F11 (or Debug > Step Out).

Эта команда возобновляет выполнение приложения (и перемещает отладчик) до возврата текущей функции.This command resumes app execution (and advances the debugger) until the current function returns.

Выполнить до текущей позицииRun to cursor

Если вы находитесь в режиме редактирования кода (то есть работа отладчика не приостановлена), щелкните правой кнопкой мыши строку кода в приложении и выберите команду Выполнить до текущей позиции (или нажмите клавиши CTRL+F10).When you are editing code (rather than paused in the debugger), right-click a line of code in your app and choose Run to Cursor (or press Ctrl to F10). Эта команда запускает отладку и задает временную точку останова на текущей строке кода.This command starts debugging and sets a temporary breakpoint on the current line of code.

Если имеются заданные точки останова, отладчик приостанавливается в первой достигнутой точке останова.If you have set breakpoints, the debugger pauses on the first breakpoint that it hits.

Нажимайте клавишу F5, пока не достигнете строки кода, для которой выбрали Выполнить до текущей позиции.Press F5 until you reach the line of code where you selected Run to Cursor.

Эта команда удобна, когда вы редактируете код и хотите быстро задать временную точку останова и одновременно запустить отладчик. This command is useful when you are editing code and want to quickly set a temporary breakpoint and start the debugger at the same time.

Примечание

Вы можете использовать функцию Выполнить до текущей позиции в окне Стек вызовов во время отладки.You can use Run to Cursor in the Call Stack window while you are debugging.

Быстрый перезапуск приложенияRestart your app quickly

Нажмите кнопку Перезапустить на панели инструментов отладки (или нажмите клавиши CTRL+SHIFT+F5).Click the Restart button in the Debug Toolbar (or press Ctrl + Shift + F5).

Кнопка Перезапустить позволяет сэкономить время, затрачиваемое на остановку приложения и перезапуск отладчика.When you press Restart, it saves time versus stopping the app and restarting the debugger. Отладчик приостанавливается в первой точке останова, достигнутой при выполнении кода.The debugger pauses at the first breakpoint that is hit by executing code.

Если вы хотите остановить отладчик и вернуться в редактор кода, вы можете нажать красную кнопку вместо Перезапустить.If you do want to stop the debugger and get back into the code editor, you can press the red stop button instead of Restart.

Изменение кода и продолжение отладки (C#, VB, C++, XAML)Edit your code and continue debugging (C#, VB, C++, XAML)

В большинстве языков, поддерживаемых Visual Studio, можно изменять код во время сеанса отладки, а затем продолжать отладку.In most languages supported by Visual Studio, you can edit your code in the middle of a debugging session and continue debugging. Для использования этой функции щелкните код, чтобы установить в нем курсор, когда отладчик приостановлен, внесите изменения и нажмите клавишу F5, F10 или F11, чтобы продолжить отладку. To use this feature, click into your code with your cursor while paused in the debugger, make edits, and press F5, F10, or F11 to continue debugging.

Дополнительные сведения об этой функции и ее ограничениях см. в статье Изменить и продолжить.For more information on using the feature and on feature limitations, see Edit and Continue.

Сведения об изменении кода XAML во время сеанса отладки см. в статье Создание и отладка выполняющегося кода XAML с помощью горячей перезагрузки XAML.To modify XAML code during a debugging session, see Write and debug running XAML code with XAML Hot Reload.

Проверка переменных с помощью подсказок по даннымInspect variables with data tips

Теперь, когда вы немного освоились, у вас есть хорошая возможность проверить состояние приложения (переменные) с помощью отладчика.Now that you know your way around a little, you have a good opportunity to start inspecting your app state (variables) with the debugger. Функции, позволяющие проверять переменные, являются одними из самых полезных в отладчике. Реализовывать эту задачу можно разными способами.Features that allow you to inspect variables are some of the most useful features of the debugger, and there are different ways to do it. Часто при попытке выполнить отладку проблемы пользователь старается выяснить, хранятся ли в переменных значения, которые требуются в определенном состоянии приложения.Often, when you try to debug an issue, you are attempting to find out whether variables are storing the values that you expect them to have in a particular app state.

Приостановив работу в отладчике, наведите указатель мыши на объект, чтобы просмотреть его значение свойства по умолчанию (в этом примере имя файла market 031.jpg является значением свойства по умолчанию).While paused in the debugger, hover over an object with the mouse and you see its default property value (in this example, the file name market 031. jpg is the default property value).

Разверните объект для просмотра его свойств (таких как свойство FullPath в этом примере).Expand the object to see all its properties (such as the FullPath property in this example).

Часто при отладке бывает необходимо быстро проверить значения свойств для объектов. Лучше всего для этого подходят подсказки по данным.Often, when debugging, you want a quick way to check property values on objects, and the data tips are a good way to do it.

Совет

В большинстве поддерживаемых языков можно изменять код во время сеанса отладки.In most supported languages, you can edit code in the middle of a debugging session. Дополнительные сведения см. в разделе Изменить и продолжить.For more info, see Edit and Continue.

Проверка переменных с помощью окон «Видимые» и «Локальные»Inspect variables with the Autos and Locals windows

Во время отладки взгляните на окно Видимые в нижней части редактора кода.While debugging, look at the Autos window at the bottom of the code editor.

В окне Видимые отображаются переменные вместе с текущим значением и типом.In the Autos window, you see variables along with their current value and their type. Окно Видимые содержит все переменные, используемые в текущей строке или предыдущей строке (в C++ в окне отображаются переменные в трех предыдущих строках кода;The Autos window shows all variables used on the current line or the preceding line (In C++, the window shows variables in the preceding three lines of code. сведения о зависящем от языка поведении см. в соответствующей документации).Check documentation for language-specific behavior).

Примечание

В JavaScript окно Локальные поддерживается, а окно Видимые — нет.In JavaScript, the Locals window is supported but not the Autos window.

Взгляните в окно Локальные.Next, look at the Locals window. В окне Локальные показаны переменные, которые находятся в текущей области.The Locals window shows you the variables that are currently in scope.

В этом примере объекты this и f находятся в области действия.In this example, the this object and the object f are in scope. Дополнительные сведения см. в статье Проверка переменных в окнах «Видимые» и «Локальные».For more info, see Inspect Variables in the Autos and Locals Windows.

Установка контрольного значенияSet a watch

В окне Контрольное значение можно указать переменную (или выражение), которую необходимо отслеживать.You can use a Watch window to specify a variable (or an expression) that you want to keep an eye on.

Во время отладки щелкните правой объект кнопкой мыши и выберите пункт Добавить контрольное значение.While debugging, right-click an object and choose Add Watch.

В этом примере у вас есть контрольное значение, заданное для объекта f, и по мере перемещения по отладчику вы можете наблюдать за изменением его значения.In this example, you have a watch set on the f object, and you can see its value change as you move through the debugger. В отличие от других окон переменных, в окне Контрольное значение всегда отображаются просматриваемые вами переменные (они выделяются серым цветом, когда находятся вне области действия).Unlike the other variable windows, the Watch windows always show the variables that you are watching (they’re grayed out when out of scope).

Дополнительные сведения см. в статье Установка контрольных значений с помощью окон «Контрольное значение» и «Быстрая проверка».For more info, see Set a Watch using the Watch and QuickWatch Windows

Просмотр стека вызововExamine the call stack

Во время отладки щелкните окно Стек вызовов, которое по умолчанию открыто в нижней правой области. Click the Call Stack window while you are debugging, which is by default open in the lower right pane.

В окне Стек вызовов показан порядок вызова методов и функций.The Call Stack window shows the order in which methods and functions are getting called. В верхней строке приведена текущая функция (в данном примере метод Update).The top line shows the current function (the Update method in this example). Во второй строке показано, что функция Update была вызвана из свойства Path.set и т. д.The second line shows that Update was called from the Path.set property, and so on. Стек вызовов хорошо подходит для изучения и анализа потока выполнения приложения.The call stack is a good way to examine and understand the execution flow of an app.

Примечание

Окно Стек вызовов аналогично перспективе «Отладка» в некоторых интегрированных средах разработки, например Eclipse.The Call Stack window is similar to the Debug perspective in some IDEs like Eclipse.

Дважды щелкните строку кода, чтобы просмотреть исходный код. При этом также изменится текущая область, проверяемая отладчиком.You can double-click a line of code to go look at that source code and that also changes the current scope being inspected by the debugger. Это не перемещает отладчик.This does not advance the debugger.

Для выполнения других задач можно воспользоваться контекстными меню из окна Стек вызовов.You can also use right-click menus from the Call Stack window to do other things. Например, можно вставлять точки останова в указанные функции, перезапускать приложение с помощью функции Выполнение до текущей позиции и изучать исходный код.For example, you can insert breakpoints into specific functions, restart your app using Run to Cursor, and to go examine source code. См. практическое руководство по просмотреть стек вызовов.See How to: Examine the Call Stack.

Изучение исключенияExamine an exception

Когда приложение выдает исключение, отладчик переходит к строке кода, вызвавшей исключение.When your app throws an exception, the debugger takes you to the line of code that threw the exception.

В этом примере помощник по исправлению ошибок показывает исключение System.Argument и сообщение об ошибке, где сказано, что путь имеет недопустимую форму.In this example, the Exception Helper shows you a System.Argument exception and an error message that says that the path is not a legal form. Таким образом, мы знаем, что ошибка произошла в аргументе метода или функции.So, we know the error occurred on a method or function argument.

В этом примере вызов DirectoryInfo выдал ошибку на пустой строке, хранящейся в переменной value.In this example, the DirectoryInfo call gave the error on the empty string stored in the value variable.

Помощник по исправлению ошибок — это отличная функция, которая помогает отлаживать ошибки.The Exception Helper is a great feature that can help you debug errors. Используя помощник по исправлению ошибок, вы также можете, например, просмотреть сведения об ошибке и добавить контрольное значение.You can also do things like view error details and add a watch from the Exception Helper. При необходимости вы также можете изменить условия для возникновения конкретного исключения.Or, if needed, you can change conditions for throwing the particular exception. См. дополнительные сведения об обработке исключений в коде в разделе Приемы и инструменты отладки.For more information on how to handle exceptions in your code, see Debugging techniques and tools.

Примечание

Помощник по исправлению ошибок заменил помощник по исключениям, который запускается в Visual Studio 2017Visual Studio 2017. The Exception Helper replaced the Exception Assistant starting in Visual Studio 2017Visual Studio 2017.

Разверните узел Параметры исключений, чтобы просмотреть дополнительные параметры для обработки исключения этого типа, однако в рамках этого тура ничего менять не требуется.Expand the Exception Settings node to see more options on how to handle this exception type, but you don’t need to change anything for this tour!

Настройка отладкиConfigure debugging

Вы можете настроить проект для сборки, как описано в статье о конфигурации отладки или выпуска, настроить свойства проекта для отладки или настроить общие параметры для отладки.You can configure your project to build as a Debug or Release configuration, configure project properties for debugging, or configure general settings for debugging. Кроме того, можно настроить отладчик для вывода пользовательских сведений с помощью таких компонентов, как атрибута DebuggerDisplay либо платформы NatVis для C/C++.In addition, you can configure the debugger to display custom information using features such as DebuggerDisplay attribute or, for C/C++, the NatVis framework.

Свойства отладки зависят от типа проекта.Debugging properties are specific to each project type. Например, можно задать аргумент, который будет передан в приложение при запуске.For example, you can specify an argument to pass to the application when you start it. Чтобы получить доступ к свойствам проекта приложения, щелкните имя проекта правой кнопкой мыши в обозревателе решений и выберите Свойства.You can access the project-specific properties by right-clicking the project in Solution Explorer and selecting Properties. Свойства отладки обычно отображаются на вкладке Сборка или Отладка в зависимости от типа проекта.Debugging properties typically appear in the Build or Debug tab, depending on the particular project type.

Отладка интерактивных приложений ASP.NET в Службе приложений AzureDebug live ASP.NET apps in Azure App Service

Средство Snapshot Debugger создает моментальный снимок рабочих приложений при выполнении интересующего вас кода.the Snapshot Debugger takes a snapshot of your in-production apps when code that you are interested in executes. Чтобы указать отладчику на необходимость создать моментальный снимок, следует установить точки прикрепления и точки ведения в коде.To instruct the debugger to take a snapshot, you set snappoints and logpoints in your code. Отладчик позволяет увидеть источник ошибки, не затрагивая трафик рабочего приложения.The debugger lets you see exactly what went wrong, without impacting traffic of your production application. Средство Snapshot Debugger позволяет значительно сократить затраты времени на устранение проблем, возникающих в рабочих средах.The Snapshot Debugger can help you dramatically reduce the time it takes to resolve issues that occur in production environments.

Коллекция моментальных снимков доступна для приложений ASP.NET, выполняющихся в Службе приложений Azure.Snapshot collection is available for ASP.NET applications running in Azure App Service. Приложения ASP.NET должны выполняться на платформе .NET Framework 4.6.1 или более поздней версии, а приложения ASP.NET Core должны выполняться на платформе .NET Core 2.0 или более поздней версии в Windows.ASP.NET applications must be running on .NET Framework 4.6.1 or later, and ASP.NET Core applications must be running on .NET Core 2.0 or later on Windows.

Дополнительные сведения см. в разделе Отладка интерактивных приложений ASP.NET с использованием Snapshot Debugger.For more information, see Debug live ASP.NET apps using the Snapshot Debugger.

Просмотр моментальных снимков с помощью возврата на шаг назад в IntelliTrace (Visual Studio Enterprise)View snapshots with IntelliTrace step-back (Visual Studio Enterprise)

Функция возврата на шаг назад в IntelliTrace автоматически создает моментальный снимок вашего приложения для каждого события точки останова и шага отладчика. IntelliTrace step-back automatically takes a snapshot of your application at every breakpoint and debugger step event. Используя записанные моментальные снимки, вы можете возвращаться к этим точкам останова и шагам, просматривая предыдущее состояние приложения.The recorded snapshots enable you to go back to previous breakpoints or steps and view the state of the application as it was in the past. Возможность возврата на шаг назад в IntelliTrace позволяет сэкономить время в тех случаях, когда вам нужно просмотреть предыдущее состояние приложения, но не требуется перезапускать отладку или воссоздавать необходимое состояние приложения.IntelliTrace step-back can save you time when you want to see the previous application state but don’t want to restart debugging or recreate the desired app state.

Для просмотра моментальных снимков и перехода между ними используйте кнопки На шаг назад и На шаг вперед на панели инструментов отладки.You can navigate and view snapshots by using the Step Backward and Step Forward buttons in the Debug toolbar. С помощью этих кнопок можно перейти к событиям, которые отображаются на вкладке События в окне Средства диагностики.These buttons navigate the events that appear in the Events tab in the Diagnostic Tools window.

Дополнительные сведения см. в разделе Проверка предыдущих состояний приложения с помощью IntelliTrace.For more information, see the Inspect previous app states using IntelliTrace page.

Отладка проблем производительностиDebug performance issues

Если приложение работает слишком медленно или использует слишком много памяти, возможно, вам следует протестировать его с помощью средств профилирования на раннем этапе.If your app runs too slowly or uses too much memory, you may need to test your app with the profiling tools early on. Дополнительные сведения о средствах профилирования, таких как средство загрузки ЦП и анализатор памяти, см. в разделе Знакомство со средствами профилирования.For more information about profiling tools such as the CPU Usage tool and the Memory Analyzer, see First look at the profiling tools.

Следующие шагиNext steps

В этом руководстве вы кратко познакомились с функциями отладчика.In this tutorial, you’ve had a quick look at many debugger features. Отдельные функции, например точки останова, вы можете изучить более подробно.You may want a more in-depth look at one of these features, such as breakpoints.



Как использовать отладчик с Ruby 2.0?

Я знаю, что отладчик gem не совместим и никогда не будет совместим с ruby 2.0 за » официально поддерживает ruby 2.X «.

В списке изменений Ruby 2.0 есть:

Поддержка отладки

Поддержка DTrace, которая позволяет диагностировать время выполнения в

производстве TracePoint, что является улучшенной трассировкой API

Есть ли что-то из коробки для отладки с Ruby 2.0? Кто-нибудь может мне это объяснить?

ruby

debugging

ruby-2.0

Поделиться

Источник


Intrepidd    

04 марта 2013 в 11:10

3 ответа


  • Есть ли отладочная установка pry, которая работает с ruby 2.0?

    Я использую ruby 2.0.0-p195 на OSX. pry-отладчик не работает (step/continue/next все, кажется, работают как continue ). есть ли отладка pry gem, которая работает с ruby 2.0? обновление: pry-debugger и pry-byebug оба, по-видимому, работают с ruby 2.0.0-p195 в простом проекте. У меня есть еще один…

  • Как использовать отладчик Ruby в Emacs?

    Я пишу Ruby в Emacs, но мои навыки Emacs на самом деле довольно низки. Что я могу сделать, так это открыть проект TDD с помощью M-x rinari-test или воспроизвести Ruby во втором окне с помощью M-x run-ruby. Теперь я хотел бы начать использовать отладчик с StdLib. Я могу вызвать его из ирб, сказав:…



54

Отладчик gem можно использовать, но у него все еще есть проблемы.

Установите byebug , который был написан для отладки Ruby 2.0.

Для точек останова используйте в коде команду byebug вместо debugger .

Поделиться


Alain Beauvois    

25 мая 2013 в 22:19



7

Версия 1.4.0 отладчика gem теперь устанавливается без проблем. Есть еще некоторые проблемы, но это должно быть исправлено в ближайшее время.

Отладчик gem плохо работает с Ruby 2. Вместо этого установите Byebug gem, который полностью совместим с Ruby 2.

Поделиться


Intrepidd    

07 марта 2013 в 11:06


Поделиться


Kevin Suttle    

16 декабря 2013 в 21:02


  • Куда ведет меня отладчик ruby?

    Я использую ‘debugger’ gem, чтобы пройти через какой-то код Ruby. После прохождения строки 2 в моем коде отладчик переходит в кадр за кадром непристойных функций и методов Ruby. Что здесь происходит? Я прошел через отладчик около 50 раз, и он еще не вернулся к моему коду. мой код [-3, 6] in…

  • Рубинус 2.0 для ruby 2.0

    Совместим ли Rubinus 2.0 с Ruby 2.0? Я попробовал последний Rubinus 2.0, но, похоже, он поддерживает только Ruby 1.9.3. У меня уже есть приложение, работающее на ruby 2.0, так что вернуться к 1.9.3-это не вариант.


Похожие вопросы:

Eclipse DLTK и Ruby быстрый отладчик

Я пытаюсь отладить Ruby скриптов с Eclipse ( DLTK установлен) на машине Windows Vista x64 и среде Ruby 1. 92. Я установил ruby-debug19, ruby-debug-base19, ruby-debug-ide19 драгоценных камней, но…

Ruby визуальный отладчик запускается с linux terminal

Есть ли визуальный отладчик ruby, который я могу запустить из linux terminal? И если да, то как мне его запустить?

Как я могу программно вызвать отладчик ruby из программы ruby в Ruby 1.9?

Я пишу веб-отладчик для Ruby, но для этого мне нужно иметь возможность вызывать отладчик Ruby из программы Ruby на стороне сервера. Это когда-нибудь делалось? Возможно ли это вообще? Создаваемый…

Есть ли отладочная установка pry, которая работает с ruby 2.0?

Я использую ruby 2.0.0-p195 на OSX. pry-отладчик не работает (step/continue/next все, кажется, работают как continue ). есть ли отладка pry gem, которая работает с ruby 2.0? обновление: pry-debugger…

Как использовать отладчик Ruby в Emacs?

Я пишу Ruby в Emacs, но мои навыки Emacs на самом деле довольно низки. Что я могу сделать, так это открыть проект TDD с помощью M-x rinari-test или воспроизвести Ruby во втором окне с помощью M-x…

Куда ведет меня отладчик ruby?

Я использую ‘debugger’ gem, чтобы пройти через какой-то код Ruby. После прохождения строки 2 в моем коде отладчик переходит в кадр за кадром непристойных функций и методов Ruby. Что здесь…

Рубинус 2.0 для ruby 2.0

Совместим ли Rubinus 2.0 с Ruby 2.0? Я попробовал последний Rubinus 2.0, но, похоже, он поддерживает только Ruby 1.9.3. У меня уже есть приложение, работающее на ruby 2.0, так что вернуться к…

Отладка Ruby 2.2 с Eclipse

Я пытаюсь использовать пошаговую отладку в Ruby 2.2. Я вижу, что byebug-это отладчик выбора для Ruby 2.x , но Eclipse, похоже, не распознает его. Шаги для воспроизведения: Сделайте новую установку…

Попытка использовать отладчик в rails 3 — ruby 1.9.3 [рефакторинг]

Я пытаюсь использовать отладчик в домашнем задании, над которым работаю. Я установил gem ruby-debug19, но не могу его использовать. Всякий раз, когда я помещаю оператор ruby-debug в метод и захожу…

указание homebrew использовать собственную установленную версию [email protected]

У меня есть High Sierra Beta 6, установленная на моем Mac Pro. High sierra beta поставляется с Ruby 2.2, и brew doctor жалуется на это, так как он был протестирован только с ruby 2.0. Я могу…

Отладчик

Отладчик является встроенным в конфигуратор инструментом. Он помогает отлаживать программные модули, создаваемые в процессе разработки прикладного решения. Отладчик позволяет отслеживать последовательность выполнения операторов встроенного языка и просматривать значения переменных.

Основные возможности отладки

  • отладка приложений, исполняемых на удаленных компьютерах, доступных по протоколу TCP/IP или HTTP, 
  • отладка кода, исполняемого рабочим процессом кластера серверов 1С:Предприятия 8; при этом поддерживается сквозной стек вызовов для клиента и сервера, и сквозная пошаговая отладка клиента и сервера;
  • отладка кода, исполняемого в таких видах соединений как внешнее соединение, фоновое задание и WS-соединение?
  • отладка мобильных приложений.

Точки останова


Отладчик позволяет установить на конкретную строку модуля специальный маркер — точку останова, — при достижении которой исполнение программного модуля останавливается и управление передается отладчику. Точки останова могут быть безусловными или с условием. При достижении безусловной точки останова исполнение программного модуля останавливается в любом случае:



При достижении точки останова с условием, выполнение программного модуля останавливается только в том случае, если заданное условие истинно:



Отладчик поддерживает возможность отключения точек останова. При этом строка модуля остается отмечена маркером, однако на ход исполнения модуля он никакого влияния не оказывает:



При большом количестве точек останова удобно использовать отдельное окно для работы с точками останова, позволяющее просматривать и редактировать их в едином списке:


Пошаговое выполнение


После того, как при достижении точки останова управление прикладным решением передано отладчику, существует возможность дальнейшего исполнения модуля в нескольких режимах: пошаговое выполнения, исполнение вызова функции или процедуры, прерывание пошагового исполнения функции или процедуры, выполнения модуля до той строки, на которой стоит курсор или продолжение свободного выполнения модуля:


Просмотр выражений


Во время пошагового выполнения существует возможность просматривать значения переменных, содержащихся в модуле, и рассчитывать произвольные значения. Для этого используется специальное окно, отображающее результат расчета:



Для объектов встроенного языка значения их свойств представляются в виде древовидной структуры. Для значений, являющихся строками, массивами и коллекциями значений также возможен просмотр в отдельном окне:



Текущее значение переменной также можно просмотреть, подведя указатель мыши к этой переменной. Текущее значение будет показано в виде короткой подсказки рядом с переменной.

Табло и локальные переменные


Результаты вычислений, которые требуется просматривать на протяжении выполнения некоторой части модуля, можно вывести в отдельное окно — табло, — в котором есть возможность распределить все просматриваемые выражения по четырем страницам:



Для удобного просмотра и изменения локальных переменных, что представляется наиболее частой задачей, существует команда Локальные переменные. Она открывает табло, которое уже автоматически заполнено всеми локальными переменными.

Изменение значений переменных


Значения примитивных типов можно изменить прямо в ячейке Значение.



В этом окне полностью функционирует контекстная подсказка.


Стек вызовов


Отладчик позволяет использовать стек вызовов, который показывает последовательность вызовов процедур и функций, приведшую к строке модуля, которая отлаживается в данный момент:



Двойным щелчком мыши на имени процедуры в стеке вызова можно перейти в соответствующую строку процедуры.

Остановка по ошибке


В платформе предусмотрена возможность использовать режим Остановка по ошибке. В этом режиме отладка может быть остановлена либо при каждой возникающей ошибке, либо при ошибке, в тексте которой присутствует подстрока, указанная разработчиком. Подстроки интересующих ошибок указываются в настройках отладки.



Во время отладки при такой настройке отладка будет останавливаться только при возникновении ошибок, связанных с делением на ноль.

Отладка кода — Разработка программ

В MetaEditor встроен отладчик — инструмент, который позволяет проверить работу программы по шагам (по отдельным функциям). Вы расставляете в коде программы точки останова — места, в которых исполнение программы должно быть приостановлено. Затем запускаете программу на обычном графике или в тестере стратегий. Как только исполнение программы дойдет до точки останова, оно будет прервано. Вы сможете посмотреть значения вычисленных переменных, а затем продолжить исполнение программы вручную по шагам, проверяя алгоритм работы.

Предварительная настройка #

Перед началом отладки задайте ее общие параметры в настройках MetaEditor. Вы можете указать символ и период графика, на котором будет происходить отладка приложений. Такой график будет временно создаваться каждый раз при начале отладке и удаляться сразу после ее завершения.


К графику, создаваемому для отладки, применяется шаблон «debug.tpl», расположенный в папке /profiles/templates торговой платформы.

Точки останова #

Точка останова — это команда, срабатывающая при переходе исполнения программы к указанной строке, и останавливающая ее выполнение в этом месте. Точки останова позволяют исследовать поведение программы в указанном участке кода: просмотреть значения переменных, стек функций. В дальнейшем процесс отладки может быть возобновлен или прекращен.

Перед запуском отладки установите хотя бы одну точку останова в коде программы. Для этого дважды щелкните мышью на сером поле слева от строки с кодом. Также вы можете установить курсор в строку и нажать » Переключить точку останова» в меню «Отладка» или «F9». Выключение точек останова происходит таким же образом.

Чтобы быстро перейти к точке, в которой остановлено исполнение программы, дважды нажмите на функцию в окне просмотра стека вызовов. Также через контекстное меню этого окна можно перейти к просмотру списка всех точек останова в отлаживаемой программе:

К любой из точек также можно перейти двойным кликом на ней.

Запуск отладки #

Для запуска отладки откройте основной файл программы или проект. Отладку можно производить в двух режимах:

  • На реальных данных. Запускается командой » Начать на реальных данных» в меню «Отладка» или клавишей «F5». В этом режиме отлаживаемая программа запускается на специальном графике в торговой платформе. Отладка осуществляется в реальных условиях на ценовых данных, поступающих от сервера.
  • На исторических данных. Запускается командой » Начать на исторических данных» в меню «Отладка» или клавишами «Ctrl+F5». Отладка происходит в режиме визуального тестирования в тестере стратегий. Этот режим позволяет проверить работу программы на любом интересующем участке истории, не дожидаясь наступления определенных рыночных условий.

Как только исполнение программы в режиме отладки дойдет до строки с точкой останова, оно будет прервано. Строка, на которой остановилось выполнение, будет помечена иконкой . Также в окне «Инструменты» появится вкладка «Отладка». В левой ее части будет показан стек вызова функции.

Наблюдаемые выражения #

В процессе отладки можно отслеживать значения различных выражений (переменных), получаемых на текущем этапе исполнения программы. Для этого предназначена правая часть вкладки «Отладка» окна «Инструменты». Чтобы отслеживать значения выражения, добавьте его в наблюдаемые:

  • Во время отладки установите курсор на выражение в исходном коде и нажмите » Добавить наблюдение» в контекстном меню.
  • Нажмите » Добавить» в контекстном меню правой части вкладки «Отладка». Далее введите имя выражения в появившейся строке.
  • Чтобы изменить название отслеживаемого выражения, дважды нажмите на него мышью.

В окне наблюдения за выражениями можно выполнять простые математические вычисления (сложение, вычитание, умножение и деление), а также просматривать значения в конкретных точках массива, например, указав запись A[3][4], где A — это название массива, а 3 и 4 — это позиции в его измерениях. При добавлении объектов в наблюдаемые выражения можно показать список их членов, указав в конце точку или нажав клавиши «Ctrl+Space»:

По умолчанию, целые числа отображаются в окне наблюдения в десятичном виде. Чтобы вывести значение в двоичном или шестнадцатеричном виде, в поле «Выражение» укажите через запятую модификатор b или x соответственно.

Просмотр стека вызовов #

В стек вызовов заносится информация для возврата управления из подпрограмм (вложенных функций) в программу (основной обработчик события OnInit, OnTick и т. д.). В стеке вы можете посмотреть весь путь от возникновения события в торговой платформе до вызова конкретной функции.

Для каждой функции отображается следующая информация:

  • Название файла, из которого была вызвана функция.
  • Название функции.
  • Номер строки в файле, где эта функция была вызвана.

Пошаговая отладка

Для пошаговой отладки с просмотром стека вызовов используются команды меню «Отладка» или панели инструментов «Стандартная»:

  • Шаг с заходом — пройти один шаг выполнения программы с заходом в вызываемые функции. Это же действие выполняется клавишей «F11».
  • Шаг с обходом — пройти один шаг выполнения программы без захода в вызываемые функции. Это же действие выполняется клавишей «F10».
  • Шаг наружу — переход к выполнению одного шага программы на один уровень выше. Это же действие выполняется клавишами «Shift+F11».

Команды пошаговой отладки можно использовать только после приостановки выполнения программы в режиме отладки:

  • После срабатывания точки останова.
  • После приостановки программы вручную командой » Приостановить» в меню «Отладка» или клавишей «Break».


Наступление событий в торговой платформе продолжается, даже когда программа находится в точке останова. Все наступившие события устанавливаются в очередь, и их обработка экспертом будет продолжена после выхода из кода текущего обработчика события.

Приостановка, возобновление и завершение отладки #

Остановка выполнения программы во время отладки происходит автоматически, как только оно доходит до строки, в которой установлена точка останова. Также отладкой можно управлять вручную:

  • Приостановка выполнения
    Выполнение программы в процессе отладки может быть прервано вручную командой » Приостановить» в меню «Отладка» или клавишей «Break». После приостановки выполнения вы можете использовать команды пошаговой отладки.
  • Возобновление выполнения
    Чтобы возобновить выполнение программы после прерывания, нажмите » Продолжить» в меню «Отладка» или «F5».
  • Завершение отладки
    Чтобы прекратить отладку программы, нажмите » Завершить» в меню «Отладка» или «Shift+F5». Программа будет снята со специального графика, на котором она была запущена для отладки, а сам график будет закрыт.


  • Без исходных MQ4, MQ5 и MQH-файлов отладка невозможна.
  • Не рекомендуется распространять исполняемые EX4/EX5-файлы, полученные в процессе отладки.

Отладка на истории #

Отладка торговых роботов и технических индикаторов может быть запущена не только на ценовых данных, обновляющихся в режиме реального времени, но и на исторических. Работу программы можно проверить на интересующем участке истории, не дожидаясь определенных торговых событий в режиме реального времени.

Отладка на исторических данных происходит в режиме визуального тестирования в тестере стратегий. Программа запускается на графике, который строится по смоделированной в тестере последовательности тиков или по накопленной истории тиков (полученных от брокера).

Чтобы запустить отладку на истории, задайте параметры запуска тестирования в настройках MetaEditor.

Расставьте точки останова в коде программы, а затем запустите отладку на исторических данных.

После этого будет запущено визуальное тестирование и начнется процесс отладки.

 

Инструкция по использованию отладчика с редактором emacs для языка C


gdb — отладчик, предназначенный для использования прежде всего как бэкенд отладки, это мощная программа с огромным набором возможностей, но предоставляющая достаточно примитивный интерфейс пользователя. Гораздо более удобный интерфейс обеспечивается фронтендами — программами-оболочками к отладчику gdb.

Как интерфейс к gdb можно использовать и редактор emacs!

Откроем пример программы на С в редакторе emacs.

Перейдем к отладчику, используя команду M-x gdb (напомним, что клавиша M — Meta — на большинстве современных клавиатур соответствует Alt). Набираемая команда отображается в нижней части экрана.

Редактор предложит запустить gdb с указанными ключами. Согласимся.

Теперь мы имеем возможность выполнять команды gdb в соответствии с предыдущей инструкцией. При этом команды можно не набирать, а использовать кнопки на панели инструментов.

Однако, emacs предоставляет и еще более комфортный интерфейс. В меню Gud выберем раздел Gud-MI, а в нем пункт Display Other Windows. Теперь наряду с консолью gdb мы видим исходный код, локальный переменные, консоль ввода-вывода и другие окна.

Установим контрольную точку. Это можно сделать, кликнув левой кнопкой мыши слева от нужной строки исходного кода.

Запускаем программу, нажав на кнопку Run с зеленой иконкой Go. Выполнение программы будет остановлено перед строкой с установленной контрольной точкой. В окне locals отображаются типы, имена и текущие значения локальных переменных.

Кнопкой Next Line выполним строку программы. Обратите внимание, что ввод данных со стандартного потока ввода и вывод в стандартный поток вывода обеспечивается через окно input/output, а значения переменных изменяются соответственно выполняемым инструкциям. Напомним, что команда Step Line в большинстве случае эквивалентна, но если, в выражении присутствует вызов функции, то Step Line переходит к ее инструкциям (вход в функцию), а Next Line выполняет строку за один шаг в любом случае.

Выполним еще один шаг.

И еще один. Обратите внимание на изменения.

Выполним оставшуюся часть программы, нажав на Continue.

Покажем пример подмены значения переменной. Пусть в ходе работы программы переменная some_variable получила значение 123.

Щелкнув средней кнопкой мыши по значению в окне locals, мы можем подменить его, напечатав новое значение

Набираем новое значение и подтверждаем изменение клавишей Enter.

Выполняя программу далее, убедимся, что в вычислениях используется новое значение.



%d0%be%d1%82%d0%bb%d0%b0%d0%b4%d1%87%d0%b8%d0%ba — со всех языков на все языки

Все языкиАбхазскийАдыгейскийАфрикаансАйнский языкАканАлтайскийАрагонскийАрабскийАстурийскийАймараАзербайджанскийБашкирскийБагобоБелорусскийБолгарскийТибетскийБурятскийКаталанскийЧеченскийШорскийЧерокиШайенскогоКриЧешскийКрымскотатарскийЦерковнославянский (Старославянский)ЧувашскийВаллийскийДатскийНемецкийДолганскийГреческийАнглийскийЭсперантоИспанскийЭстонскийБаскскийЭвенкийскийПерсидскийФинскийФарерскийФранцузскийИрландскийГэльскийГуараниКлингонскийЭльзасскийИвритХиндиХорватскийВерхнелужицкийГаитянскийВенгерскийАрмянскийИндонезийскийИнупиакИнгушскийИсландскийИтальянскийЯпонскийГрузинскийКарачаевскийЧеркесскийКазахскийКхмерскийКорейскийКумыкскийКурдскийКомиКиргизскийЛатинскийЛюксембургскийСефардскийЛингалаЛитовскийЛатышскийМаньчжурскийМикенскийМокшанскийМаориМарийскийМакедонскийКомиМонгольскийМалайскийМайяЭрзянскийНидерландскийНорвежскийНауатльОрокскийНогайскийОсетинскийОсманскийПенджабскийПалиПольскийПапьяментоДревнерусский языкПортугальскийКечуаКвеньяРумынский, МолдавскийАрумынскийРусскийСанскритСеверносаамскийЯкутскийСловацкийСловенскийАлбанскийСербскийШведскийСуахилиШумерскийСилезскийТофаларскийТаджикскийТайскийТуркменскийТагальскийТурецкийТатарскийТувинскийТвиУдмурдскийУйгурскийУкраинскийУрдуУрумскийУзбекскийВьетнамскийВепсскийВарайскийЮпийскийИдишЙорубаКитайский

 

Все языкиАбхазскийАдыгейскийАфрикаансАйнский языкАлтайскийАрабскийАварскийАймараАзербайджанскийБашкирскийБелорусскийБолгарскийКаталанскийЧеченскийЧаморроШорскийЧерокиЧешскийКрымскотатарскийЦерковнославянский (Старославянский)ЧувашскийДатскийНемецкийГреческийАнглийскийЭсперантоИспанскийЭстонскийБаскскийЭвенкийскийПерсидскийФинскийФарерскийФранцузскийИрландскийГалисийскийКлингонскийЭльзасскийИвритХиндиХорватскийГаитянскийВенгерскийАрмянскийИндонезийскийИнгушскийИсландскийИтальянскийИжорскийЯпонскийЛожбанГрузинскийКарачаевскийКазахскийКхмерскийКорейскийКумыкскийКурдскийЛатинскийЛингалаЛитовскийЛатышскийМокшанскийМаориМарийскийМакедонскийМонгольскийМалайскийМальтийскийМайяЭрзянскийНидерландскийНорвежскийОсетинскийПенджабскийПалиПольскийПапьяментоДревнерусский языкПуштуПортугальскийКечуаКвеньяРумынский, МолдавскийРусскийЯкутскийСловацкийСловенскийАлбанскийСербскийШведскийСуахилиТамильскийТаджикскийТайскийТуркменскийТагальскийТурецкийТатарскийУдмурдскийУйгурскийУкраинскийУрдуУрумскийУзбекскийВодскийВьетнамскийВепсскийИдишЙорубаКитайский

Прокачиваем навыки отладки с помощью инструментов разработчика Chrome (часть 2) — CSS-LIVE

Перевод статьи Improve Your Debugging Skills with Chrome DevTools (Part 2) с сайта telerik.com для css-live.ru, автор — Питер Милчев

В этой статье мы рассмотрим продвинутые функции отладчика Chrome, закрепив навыки, полученные в первой части.

Вы научились проверять сгенерированный HTML и применённые стили? Уже смело можете отлаживать JavaScript в браузере? Надеюсь, поскольку в этой серии мы рассмотрим продвинутые функции отладчика Chrome, закрепив навыки, полученные в первой части.

Освоив новые навыки, мы поэкспериментируем с базовыми примерами Kendo UI, а в конце статьи возьмём реальный пример jQuery Grid, чтобы отточить на нем свежеприобретенные знания.

В этой статье:

Умное автодополнение

Умное автодополнение — известная функция в IDE, помогающая эффективнее писать код. В Chrome 68 разработчики DevTools включили аналогичные функции в консоль. А именно: упреждающее вычисление, автодополнение после выполнения функции и подсказки для аргументов.

Давайте рассмотрим эти возможности на примере следующей функции:


function test(yourValue) {
  return {
    value: yourValue,
    multiplied: yourValue * 3
  };
}

Упреждающее вычисление

Вот что отобразится в консоли отладчика Chrome с включённым упреждающим вычислением:

Таким образом можно вычислять выражения в коде в консоли, если у этих выражений нет побочных эффектов (когда выполнение кода не только возвращает значение, но и делает ещё что-то). Подробнее о побочных эффектах можно узнать из вопроса «JavaScript-замыкания и побочные эффекты простым языком?» на StackOverflow

Совет: такое же вычисление происходит, когда вы открываете вкладку «Исходники» (Source) в режиме отладки и наводите на выражение или выделяете его.

Автодополнение после выполнения функции

Эта возможность зависит от упреждающего вычисления, поэтому у него то же ограничение — автодополнение недоступно, если у функции есть какие-либо побочные эффекты.

Совет: сохраните результат функции в переменной (см. «Автодополнение IntelliSense для объектов на стороне клиента») и для проверки результата выполните функцию в консоли.

Затем используйте API консоли и сохраните выражение в переменной как var lastEvaluatedExpression = $_;.

Подсказки для аргументов

Эта возможность предоставляет всплывающее окно с отображением подходящих аргументов, которые можно передать, когда вы пишите код для вызова функции в консоли или раскрываете ее скобки или наводите на них курсор мыши.

Лёгкое обращение к выбранным элементам и выполненным выражениям

В предыдущем разделе я не пояснил, что делает переменная $_. Это не магия, а часть встроенного API командной строки. Отладчик Chrome присваивает объекты и выражения списку предопределенных переменных. Например, при вычислении выражения 40+2 получится 42. И, допустим, мне лень запоминать, как называлась переменная или что это было за выражение, а тем более ждать 7.5 миллионов лет, пока компьютер высчитывает этот ответ. С отладчиком Chrome теперь достаточно переменной $_.

API командной строки в отладчике Chrome сохраняет объекты и результаты выражения в предопределённые переменные. Консоль предоставляет ещё и такие полезные сокращения: $0, $1, $2, $3 и $4. $0 ссылается на последний выбранный элемент в панели «Элементы», $1 — на предыдущий, и так далее. Это может оказаться полезным, когда нужно получить ссылку на DOM-элемент, предоставляющий компонент или виджет, и вам нужно быстро проверить его доступные части.

Давайте поупражняемся с этим на примере PanelBar для Kendo UI, где мы обратимся к первому элементу, скроем его, а после покажем снова.

Совет: отладчик Chrome может подсказать вам, как оптимизировать изменения HTML и DOM, которые происходят в вашем приложении (см. «Молниеносное отображение списка в Angular»)

Просматривать всплывающие подсказки бывает нелегко, поскольку они исчезают через какое-то время. С другими автоматически скрываемыми элементами — вроде тех, что отображаются при взаимодействии с юзером (к примеру, клик мышью или перетаскивание) — та же история. Чтобы их отловить, я часто прибегал ко всяким ухищрениям, придумывая жуткий код, который будет на них ссылаться. Встречайте setTimeout() и debugger.

setTimeout() нужен для выполнения определённой логики через заданное время. А ещё он меняет порядок выполнения функций. Это пригодится при выполнении функции после быстрой анимации (см. «Почему setTimeout(fn, 0) иногда полезен?»)

Разобравшись, как работает setTimeout(), мы можем объединить его мощь с оператором debugger, и тогда можно будет активировать режим отладки, когда автоматически скрываемый элемент виден, и не бояться, что он тотчас же исчезнет.

На анимации ниже показано, как можно просмотреть всплывающую подсказку, вызывая setTimeout(function(){debugger; }, 3000) в консоли:

На иллюстрации выше представлены API рисования и виджет jQuery Tooltip из Kendo UI

Совет: чтобы вывести в лог элементы, на которые в данный момент перешёл фокус, вставьте следующий код консоль: window.focusedelement; setInterval(function(){ if(window.focusedElement != document.activeElement){window.focusedElement = document.activeElement; console.log(document.activeElement)}})

Для отмены повторения с интервалом можно перезагрузить страницу или использовать clearInterval():

Давайте рассмотрим другие способы прервать выполнение скрипта на странице и проверить текущие значения переменных.

Точки останова по изменению DOM

Они прерывают выполнение скрипта, если у выбранного элемента в DOM меняется структура, атрибут или он удаляется с помощью JavaScript. Чтобы включить/выключить эту возможность, кликните правой кнопкой по элементу в панели «Элементы», наведите на пункт «Остановить» (Break) в контекстном меню и выберете «модификации поддерева» (subtree modifications), «модификации атрибута» (attribute modifications) или «удаление узла» (node removal).

Точки остановка для XHR/Fetch

Они прерывают выполнение скрипта, если адрес запрошенного ресурса содержит строку, на которую настроена точка останова. Чтобы включить/выключить эту возможность: разверните область «Точки останова для XHR» (XHR Breakpoints) в панели «Исходники», кликните на кнопку «Добавить точку останова» (Add breakpoint) и введите нужную часть URL.

Точки останова для обработчиков событий

Они прерывают выполнение скрипта при срабатывании событий мыши, клавиатуры, устройства, анимации и так далее. Чтобы включить/выключить эту возможность: разверните область «Точки останова для обработчиков событий» (Event Listeners Breakpoints) во вкладке «Исходники» и отметьте нужные (категории) события.

Точки останова для исключений

Они прерывают выполнение скрипта, когда выбрасываются обработанные или необработанные исключения. Чтобы включить/выключить эту возможность: нажмите кнопку «Пауза при исключении» (Pause on Exception) во вкладке «Исходники»; когда эта кнопка включена, появляется добавочная опция «Пауза при обработанных исключениях» (Pause on caught exceptions).

Когда точки останова станут для вас привычным делом, вы начнете расставлять их помногу, и в какой-то момент может оказаться, что большую часть расставленных точек вы пропускаете. В таком случае для продолжения выполнения скрипта на странице можете воспользоваться одной из следующих возможностей:

  • Нажмите на кнопку «Продолжить» (Continue), чтобы показать раскрывающийся список и выберите кнопку «Продолжить без прерывания» (Continue without interruption).
  • Нажмите F12, чтобы быстро закрыть отладчик Chrome.

Во вкладке «Исходники» стоит упомянуть еще несколько областей.

  • Вкладка «Выражения для отслеживания» (Watch expressions): позволяет отслеживать значения переменных и выражений в разные моменты времени.
  • Раздел «Стек вызовов» (Call Stack) показывает путь выполнения, который привёл код к этой точке останова в обратном хронологическом порядке.
  • Панель «Область видимости» (Scope): показывает, какие локальные и глобальные переменные определены в данный момент.

Контексты выполнения в отладчике Chrome

Вы когда-нибудь сталкивались с ошибкой ReferenceError (говорящей, что функция не определена) при попытке выполнить уже объявленную функцию в консоли браузера? Вы не одиноки, это частый случай.

К примеру, такую ошибку можно поймать, когда страница со скриптом загружаеся в <iframe>, поэтому находится в другом контексте выполнения. Вкратце, контекст выполнения похож на область видимости, и у каждой страницы, <iframe> или расширения браузера есть свой контекст выполнения. Между разными контекстами можно переключаться с помощью раскрывающегося списка в консоли:

Немного соображений насчёт контекста выполнения:

  • Когда вы просматриваете какой-либо элемент, в качестве контекста выполнения автоматически выбирается страница, содержащая этот элемент
  • Чтобы получить логи из всех контекстов в консоли, уберите галочку «Только выбранный контекст» (Selected context only) в настройках консоли.
  • С правой стороны есть ссылка на файл, выполнивший функцию, которая отвечает за запись в логе.

Эти контексты хорошо видны в «песочнице» по Kendo UI, в которой мы сейчас потестируем вышеприведенные советы.

Пример: компонент jQuery Grid из Kendo UI

Ну что, вы ждали именно этого, пока читали, да? Вот для примера задача, в которой будет задействованы большинство из наших свежеполученных навыков

Задача: используйте JavaScript для изменения фона плавающего элемента, созданного при перетаскивании заголовка в этом примере из «песочницы» на основе демо компонента jQuery Grid из Kendo UI.

Пробуйте сделать это сами, но если не выйдет, воспользуйтесь следующими советами:

К этому моменту вы должны быть уже на «ты» с отладчиком Chrome — никакая магия CLI, автоматически скрывающиеся элементы или сложные сценарии отладки не могут помешать вам. Мы здорово овладели всем этим и одолели тёмную сторону. Кроме шуток, надеюсь, что эта статья была полезной и ответила хотя бы на один сложный вопрос — дайте знать. А что насчёт ваших советов и приёмов? Пожалуйста, поделитесь ими (потому что вам не всё равно) в комментариях ниже.

P.S. Это тоже может быть интересно:

Первый взгляд на отладчик — Visual Studio

  • 11 минут на чтение

В этой статье

В этом разделе представлены инструменты отладчика, предоставляемые Visual Studio. В контексте Visual Studio, когда вы отлаживаете свое приложение , это обычно означает, что вы запускаете приложение с присоединенным отладчиком (то есть в режиме отладчика).Когда вы это делаете, отладчик предоставляет множество способов увидеть, что делает ваш код во время его выполнения. Вы можете пошагово просмотреть свой код и посмотреть значения, хранящиеся в переменных, вы можете установить наблюдение за переменными, чтобы увидеть, когда значения меняются, вы можете проверить путь выполнения вашего кода и т. Д. Если вы впервые пытаетесь отладить код, возможно, вы захотите прочитать «Отладка для абсолютных новичков», прежде чем переходить к этой теме.

Описанные здесь функции применимы к C #, C ++, Visual Basic, JavaScript и другим языкам, поддерживаемым Visual Studio (за исключением случаев, когда это указано).

Установить точку останова и запустить отладчик

Для отладки необходимо запустить приложение с отладчиком, подключенным к процессу приложения. F5 ( Отладка> Начать отладку ) — наиболее распространенный способ сделать это. Однако прямо сейчас вы, возможно, не установили какие-либо точки останова для проверки кода приложения, поэтому мы сначала сделаем это, а затем начнем отладку. Точки останова — это самая основная и важная функция надежной отладки. Точка останова указывает, где Visual Studio должна приостановить выполнение вашего кода, чтобы вы могли посмотреть на значения переменных или поведение памяти, а также на то, запускается ли ветвь кода.

Если у вас есть файл, открытый в редакторе кода, вы можете установить точку останова, щелкнув поле слева от строки кода.

Нажмите F5 ( Отладка> Начать отладку ) или кнопку Начать отладку на панели инструментов отладки, и отладчик перейдет к первой обнаруженной точке останова. Если приложение еще не запущено, F5 запускает отладчик и останавливается на первой точке останова.

Точки останова — полезная функция, когда вы знаете строку кода или часть кода, которую хотите подробно изучить.

Перемещение по коду в отладчике с помощью пошаговых команд

Мы предоставляем сочетания клавиш для большинства команд, потому что они ускоряют навигацию по коду вашего приложения. (Эквивалентные команды, такие как команды меню, показаны в скобках.)

Чтобы запустить приложение с подключенным отладчиком, нажмите F11 ( Debug> Step Into ). F11 — это команда Step Into , которая продвигает выполнение приложения по одному оператору за раз. Когда вы запускаете приложение с помощью F11, отладчик прерывает выполнение первого оператора.

Желтая стрелка представляет оператор, на котором остановился отладчик, который также приостанавливает выполнение приложения в той же точке (этот оператор еще не был выполнен).

F11 — хороший способ наиболее подробно изучить поток выполнения. (Чтобы ускорить прохождение кода, мы также покажем вам некоторые другие варианты.) По умолчанию отладчик пропускает непользовательский код (если вы хотите получить более подробную информацию, см. Только мой код).

Примечание

В управляемом коде вы увидите диалоговое окно с вопросом, хотите ли вы получать уведомление при автоматическом переходе через свойства и операторы (поведение по умолчанию).Если вы хотите изменить этот параметр позже, отключите параметр «Перешагнуть через свойства и операторы» в меню «Инструменты »> «Параметры » в разделе «Отладка ».

Код перехода для пропуска функций

Когда вы находитесь в строке кода, которая является вызовом функции или метода, вы можете нажать F10 ( Debug> Step Over ) вместо F11.

F10 продвигает отладчик без перехода к функциям или методам в коде вашего приложения (код все еще выполняется).Нажав F10, вы можете пропустить код, который вам неинтересен. Таким образом, вы можете быстро перейти к коду, который вас больше интересует.

Зайти в собственность

Как упоминалось ранее, по умолчанию отладчик пропускает управляемые свойства и поля, но команда Step Into Specific позволяет вам переопределить это поведение.

Щелкните правой кнопкой мыши свойство или поле и выберите Step Into Specific , затем выберите один из доступных вариантов.

В этом примере Step Into Specific возвращает нас к коду для Path.set .

Быстрый переход к определенному месту в коде с помощью мыши

В отладчике наведите указатель мыши на строку кода, пока слева не появится кнопка Run to Click (Run execute to here).

Примечание

Кнопка Выполнить до щелчка (Выполнить до сюда) доступна начиная с Visual Studio 2017.

Нажмите кнопку Run to Click (Выполнить здесь). Отладчик перейдет к строке кода, на которой вы щелкнули.

Использование этой кнопки аналогично установке временной точки останова. Эта команда также удобна для быстрого перемещения в видимой области кода приложения. Вы можете использовать Run to Click в любом открытом файле.

Продвинуть отладчик за пределы текущей функции

Иногда вам может потребоваться продолжить сеанс отладки, но продвинуть отладчик до конца текущей функции.

Нажмите Shift + F11 (или Debug> Step Out ).

Эта команда возобновляет выполнение приложения (и продвигает отладчик) до тех пор, пока не вернется текущая функция.

Перейти к курсору

Когда вы редактируете код (а не останавливаетесь в отладчике), щелкните правой кнопкой мыши строку кода в своем приложении и выберите Выполнить до курсора (или нажмите Ctrl на F10 ). Эта команда запускает отладку и устанавливает временную точку останова на текущей строке кода.

Если вы установили точки останова, отладчик останавливается на первой точке останова, в которую он попадает.

Нажимайте F5 , пока не дойдете до строки кода, где вы выбрали Перейти к курсору .

Эта команда полезна, когда вы редактируете код и хотите быстро установить временную точку останова и одновременно запустить отладчик.

Примечание

Вы можете использовать Run to Cursor в окне Call Stack во время отладки.

Быстро перезапустите приложение

Нажмите кнопку Restart на панели инструментов отладки (или нажмите Ctrl + Shift + F5 ).

Когда вы нажимаете Перезапустить , это экономит время по сравнению с остановкой приложения и перезапуском отладчика. Отладчик останавливается на первой точке останова, в которой выполняется код.

Если вы действительно хотите остановить отладчик и вернуться в редактор кода, вы можете нажать красную кнопку остановки вместо Перезапустить .

Измените свой код и продолжите отладку (C #, VB, C ++, XAML)

На большинстве языков, поддерживаемых Visual Studio, вы можете редактировать свой код в середине сеанса отладки и продолжать отладку. Чтобы использовать эту функцию, щелкните свой код курсором во время паузы в отладчике, внесите изменения и нажмите F5 , F10 или F11 , чтобы продолжить отладку.

Для получения дополнительной информации об использовании функции и об ограничениях функции см. «Изменить и продолжить».

Чтобы изменить код XAML во время сеанса отладки, см. Раздел Запись и отладка выполняющегося кода XAML с горячей перезагрузкой XAML.

Проверяйте переменные с помощью подсказок по данным

Теперь, когда вы немного разбираетесь, у вас есть хорошая возможность начать проверять состояние вашего приложения (переменные) с помощью отладчика. Функции, позволяющие проверять переменные, являются одними из самых полезных функций отладчика, и есть разные способы сделать это. Часто, когда вы пытаетесь отладить проблему, вы пытаетесь выяснить, хранят ли переменные те значения, которые вы ожидаете от них в определенном состоянии приложения.

Во время паузы в отладчике наведите указатель мыши на объект, и вы увидите его значение свойства по умолчанию (в этом примере имя файла market 031.jpg является значением свойства по умолчанию).

Разверните объект, чтобы увидеть все его свойства (например, свойство FullPath в этом примере).

Часто при отладке требуется быстрый способ проверки значений свойств объектов, и подсказки по данным — хороший способ сделать это.

Подсказка

На большинстве поддерживаемых языков вы можете редактировать код в середине сеанса отладки.Дополнительные сведения см. В разделе «Изменить и продолжить».

Проверять переменные с помощью окон Autos и Locals

Во время отладки посмотрите на окно Autos в нижней части редактора кода.

В окне Autos вы видите переменные вместе с их текущим значением и типом. Окно Autos показывает все переменные, используемые в текущей или предыдущей строке (в C ++ окно показывает переменные в предыдущих трех строках кода.Обратитесь к документации, чтобы узнать о поведении на конкретном языке).

Примечание

В JavaScript поддерживается окно Locals , но не окно Autos .

Затем посмотрите на окно Locals . Окно Locals показывает вам переменные, которые в настоящее время находятся в области видимости.

В этом примере , этот объект и объект f находятся в области видимости. Для получения дополнительной информации см. Проверка переменных в окнах «Авто» и «Локальные переменные».

Установить часы

Вы можете использовать окно Watch , чтобы указать переменную (или выражение), за которой вы хотите следить.

Во время отладки щелкните объект правой кнопкой мыши и выберите Добавить часы .

В этом примере у вас есть часы, установленные для объекта f , и вы можете видеть изменение его значения по мере прохождения через отладчик. В отличие от других окон переменных, в окнах Watch всегда отображаются наблюдаемые вами переменные (они неактивны, когда находятся вне области видимости).

Для получения дополнительной информации см. Настройка часов с помощью часов и QuickWatch Windows

.

Изучите стек вызовов

Щелкните окно Стек вызовов во время отладки, которое по умолчанию открыто в нижней правой панели.

Окно Стек вызовов показывает порядок, в котором вызываются методы и функции. В верхней строке отображается текущая функция (в этом примере метод Update ). Вторая строка показывает, что обновление было вызвано из пути .установить свойство и так далее. Стек вызовов — хороший способ изучить и понять поток выполнения приложения.

Примечание

Окно стека вызовов похоже на перспективу отладки в некоторых IDE, таких как Eclipse.

Вы можете дважды щелкнуть строку кода, чтобы просмотреть этот исходный код, и это также изменит текущую область, проверяемую отладчиком. Это не продвигает отладчик.

Вы также можете использовать контекстные меню из окна Call Stack , чтобы делать другие вещи.Например, вы можете вставить точки останова в определенные функции, перезапустить приложение, используя Run to Cursor , и перейти к изучению исходного кода. См. Как: изучить стек вызовов.

Изучить исключение

Когда ваше приложение выдает исключение, отладчик переводит вас на строку кода, в которой возникло исключение.

В этом примере помощник по исключениям показывает исключение System.Argument и сообщение об ошибке, в котором говорится, что путь не является допустимой формой.Итак, мы знаем, что ошибка произошла в аргументе метода или функции.

В этом примере вызов DirectoryInfo выдал ошибку в пустой строке, хранящейся в переменной value .

Помощник по исключениям — отличная функция, которая может помочь вам отладить ошибки. Вы также можете делать такие вещи, как просматривать сведения об ошибках и добавлять часы из помощника по исключениям. Или, если необходимо, вы можете изменить условия выдачи конкретного исключения. Дополнительные сведения о том, как обрабатывать исключения в коде, см. В разделе «Методы и инструменты отладки».

Примечание

Помощник по исключениям заменил помощника по исключениям, начиная с Visual Studio 2017.

Разверните узел Exception Settings , чтобы увидеть дополнительные параметры того, как обрабатывать этот тип исключения, но вам не нужно ничего менять в этом обзоре!

Настроить отладку

Вы можете настроить свой проект на сборку как конфигурацию отладки или выпуска, настроить свойства проекта для отладки или настроить общие параметры для отладки.Кроме того, вы можете настроить отладчик для отображения пользовательской информации, используя такие функции, как атрибут DebuggerDisplay или, для C / C ++, платформу NatVis.

Свойства отладки специфичны для каждого типа проекта. Например, вы можете указать аргумент, который будет передаваться приложению при его запуске. Вы можете получить доступ к свойствам проекта, щелкнув правой кнопкой мыши проект в обозревателе решений и выбрав Свойства . Свойства отладки обычно отображаются на вкладке Build или Debug , в зависимости от конкретного типа проекта.

Отладка живых приложений ASP.NET в службе приложений Azure

Отладчик моментальных снимков делает снимок ваших рабочих приложений при выполнении кода, который вас интересует. Чтобы дать команду отладчику сделать снимок, вы устанавливаете точки привязки и точки журнала в своем коде. Отладчик позволяет точно увидеть, что пошло не так, не влияя на трафик вашего производственного приложения. Отладчик моментальных снимков может помочь вам значительно сократить время, необходимое для решения проблем, возникающих в производственных средах.

Сборник моментальных снимков доступен для приложений ASP.NET, работающих в Службе приложений Azure. Приложения ASP.NET должны работать на .NET Framework 4.6.1 или более поздней версии, а приложения ASP.NET Core должны работать на .NET Core 2.0 или более поздней версии в Windows.

Дополнительные сведения см. В разделе «Отладка живых приложений ASP.NET с помощью отладчика моментальных снимков».

Просмотр снимков с шагом назад IntelliTrace (Visual Studio Enterprise)

IntelliTrace step-back автоматически делает снимок вашего приложения при каждой точке останова и событии шага отладчика.Записанные снимки позволяют вернуться к предыдущим точкам останова или шагам и просмотреть состояние приложения, которое было в прошлом. Откат IntelliTrace может сэкономить ваше время, если вы хотите увидеть предыдущее состояние приложения, но не хотите перезапускать отладку или воссоздавать желаемое состояние приложения.

Вы можете перемещаться по снимкам и просматривать их с помощью кнопок Step Backward и Step Forward на панели инструментов Debug. Эти кнопки используются для навигации по событиям, которые появляются на вкладке События в окне Средства диагностики .

Дополнительные сведения см. На странице Проверка предыдущих состояний приложения с помощью IntelliTrace.

Проблемы с производительностью отладки

Если ваше приложение работает слишком медленно или использует слишком много памяти, вам может потребоваться заранее протестировать приложение с помощью инструментов профилирования. Дополнительные сведения об инструментах профилирования, таких как инструмент использования ЦП и анализатор памяти, см. В разделе «Первый взгляд на инструменты профилирования».

Следующие шаги

В этом руководстве вы быстро ознакомились со многими функциями отладчика.Возможно, вам захочется более подробно изучить одну из этих функций, например точки останова.

Визуальный отладчик для Jupyter. Большинство достижений в программном обеспечении… | by Project Jupyter

Большая часть прогресса, достигнутого в проектах программного обеспечения, связана с инкрементализмом . Возможность быстро увидеть результат выполнения и выполнить итерацию была одной из основных причин успеха Jupyter, особенно в научных исследовательских рабочих процессах.

Пользователи Jupyter любят проводить эксперимент в ноутбуке и использовать ноутбук в качестве интерактивного средства общения.Однако для решения более классических задач разработки программного обеспечения, таких как рефакторинг большой кодовой базы, они часто переключаются на универсальные IDE.

Среда JupyterLab.

За последние несколько лет проект Jupyter добился успехов в заполнении этого пробела, в частности с помощью проекта JupyterLab , который обеспечивает более богатый пользовательский интерфейс, включая файловый браузер, текстовые редакторы, консоли, ноутбуки и богатую систему компоновки.

Однако недостающий элемент (который остается одной из основных причин для перехода пользователей на другой инструмент) — это визуальный отладчик .Эта функция давно востребована пользователями, особенно теми, кто привык к средам разработки общего назначения.

Сегодня, после нескольких месяцев разработки, мы рады объявить о первом публичном выпуске визуального отладчика Jupyter!

Это только первый выпуск, но мы уже можем устанавливать точки останова в ячейках записной книжки и исходных файлах, проверять переменные, перемещаться по стеку вызовов и многое другое.

Скринкаст визуального отладчика JupyterLab в действии

Вы также можете попробовать отладчик в Интернете с помощью связующего.Просто щелкните ссылку связующего файла:

Щелкните ссылку связующего файла, чтобы запустить демонстрацию

  • Отладчик внешнего интерфейса можно установить как расширение JupyterLab.
 jupyter labextension install @ jupyterlab / debugger 

Интерфейс отладчика будет включен в JupyterLab по умолчанию в будущем выпуске.

  • В бэкэнде требуется ядро, реализующее протокол отладки Jupyter (который будет подробно описан в следующем разделе).На данный момент единственным ядром, реализующим этот протокол, является xeus-python , новое ядро ​​Jupyter для языка программирования Python. (Поддержка протокола отладчика в ipykernel также входит в план).
 conda install xeus-python -c conda-forge 

После установки xeus-python и расширения отладчика вы должны быть готовы к использованию визуального отладчика Jupyter!

Примечание: В зависимости от платформы для xeus-python доступны колеса PyPI, но они по-прежнему являются экспериментальными .

Новые типы сообщений для каналов Control и IOPub

Ядра Jupyter (часть инфраструктуры, выполняющая код пользователя) взаимодействуют с остальной частью инфраструктуры с помощью четко определенного протокола межпроцессного взаимодействия.

Существует несколько каналов связи, таких как

  • канал Shell , который является каналом запроса / ответа, например, для выполняет запросы
  • канал IOPub , который является однонаправленным каналом связи от ядра к клиенту, и используется e.грамм. для пересылки содержимого стандартных выходных потоков (stdout и stderr).

Канал Control похож на Shell, но работает на отдельном сокете, поэтому сообщения не ставятся в очередь после запросов на выполнение и имеют более высокий приоритет. Control уже использовался для запросов на прерывание и выключение, и мы решили использовать один и тот же канал для команд, отправляемых отладчику.

В протокол были добавлены два типа сообщений:

  • debug_ [запрос / ответ] для запроса определенных действий, которые должны быть выполнены отладчиком, таких как добавление точки останова или переход в код, который отправляется на Контрольный канал .
  • debug_event однонаправленное сообщение, используемое ядрами отладки для отправки событий отладки во внешний интерфейс. События отладки отправляются по каналу IOPub.

Расширение протокола адаптера отладки

Ключевым принципом дизайна Jupyter является агностицизм по отношению к языку программирования . Важно, чтобы протокол отладки Jupyter мог быть адаптирован к другим реализациям ядра.

Популярным стандартом отладки является протокол Microsoft « Debug Adapter Protocol » (DAP), который представляет собой протокол на основе JSON, лежащий в основе отладчика кода Visual Studio и для которого уже существует многоязычная серверная часть.

Поэтому для нас было естественным использовать сообщения DAP вместо сообщений debug_ [запрос / ответ] и debug_event , которые мы только что добавили.

Однако в случае с Jupyter было недостаточно . Действительно,

  • Для поддержки перезагрузки страницы или подключения клиента на более позднем этапе ядра Jupyter должны сохранять состояние отладчика (точки останова, независимо от того, остановлен ли отладчик в данный момент). Внешний интерфейс может запросить это состояние с помощью сообщения debug_request .
  • Для поддержки отладки ячеек записной книжки и консолей Jupyter, которые не основаны на исходных файлах, нам также потребовались сообщения для отправки кода отладчику, в который можно добавить точки останова.

Помимо этих двух различий, содержимое запросов и ответов отладки соответствует протоколу адаптера отладки.

Все эти расширения протокола ядра Jupyter были предложены для включения в официальную спецификацию. JEP (предложение по расширению Jupyter) можно найти здесь.

Xeus — это реализация протокола ядра Jupyter на C ++. Это не ядро ​​само по себе, а библиотека, которая помогает при разработке ядра. Xeus полезен при разработке ядра для языка, имеющего C или C ++ API (например, Python, Lua или SQL). Автору ядра требуется сложная задача реализации протокола обмена сообщениями Jupyter, чтобы сосредоточиться на основных задачах интерпретатора: выполнение кода, проверка и т. Д.

Несколько ядер были разработаны с xeus, включая популярное ядро ​​xeus-cling для C ++ язык программирования, основанный на интерпретаторе C ++ от CERN.Ядро xeus-python — это ядро ​​Python, альтернативное ipykernel, основанное на xeus. В начале этого года в этом блоге было объявлено о первом выпуске ядра xeus-python: https://blog.jupyter.org/a-new-python-kernel-for-jupyter-fcdf211e30a8

Xeus-python был подходящим выбором. для этой первой реализации протокола отладки, поскольку

  • он имеет подключаемую модель параллелизма , которая позволяет запускать обработку канала управления в другом потоке.
  • имеет более легкую кодовую базу , что сделало его удобной песочницей для итераций. Реализация первой версии протокола в ipykernel потребовала бы более значительного рефакторинга и достижения консенсуса на ранней стадии.

Дорожная карта Xeus-python

Краткосрочная дорожная карта для xeus-python включает

  • добавление поддержки магии IPython в xeus-python, что является основной недостающей функцией по отношению к ipykernel.
  • улучшение колес PyPI xeus-python.

А как насчет других ядер?

Работа во внешнем интерфейсе допустима для любого ядра, реализующего расширенный протокол ядра.

В 2020 году мы будем работать над тем, чтобы включить отладку с максимально возможным количеством ядер.

Это скоро будет в случае с другими ядрами на основе xeus, которые разделяют большую часть реализации с xeus-python, например xeus-cling.

Расширение отладчика для JupyterLab предоставляет то, что пользователи обычно ожидают от IDE:

  • боковая панель с обозревателем переменных, списком точек останова, предварительным просмотром исходного кода и возможностью навигации по стеку вызовов
  • возможность устанавливать точки останова непосредственно рядом с кодом, а именно в ячейках кода и консолях кода
  • визуальных маркеров, указывающих, где остановилось текущее выполнение

При работе с записными книжками Jupyter состояние выполнения сохраняется в ядре.Но ячейку можно выполнить, а затем удалить из записной книжки. Что должно произойти, если пользователь захочет ввести удаленный код?

Расширение поддерживает этот конкретный вариант использования и позволяет получить доступное только для чтения представление ранее выполненной ячейки.

Переход в удаленную ячейку

Консоли и файлы также поддерживают отладку.

Консоли отладки кода в JupyterLab Отладка файлов в JupyterLab

Отладка может быть включена на уровне записной книжки, что позволяет пользователям отлаживать записную книжку и одновременно работать с другой записной книжкой.

Отладка нескольких записных книжек одновременно

Переменные можно проверить с помощью средства просмотра дерева и средства просмотра таблиц:

Обозреватель переменных

Расширение отладчика для JupyterLab было разработано для работы с любым ядром, которое поддерживает отладку.

Опираясь на протокол адаптера отладки, расширение отладчика абстрагирует специфичные для языка функции и предоставляет пользователю согласованный интерфейс отладки.

На следующей схеме показано, как сообщения отладки передаются между пользователем, расширением JupyterLab и ядром во время сеанса отладки.

Использование протокола адаптера отладки в расширении отладчика (исходный код)

В 2020 году мы планируем существенно улучшить возможности отладчика:

  • Поддержка рендеринга расширенного MIME-типа в проводнике переменных.
  • Поддержка условных точек останова в пользовательском интерфейсе.
  • Общие улучшения взаимодействия с пользователем отладчика.
  • Включите отладку информационных панелей Voilà из расширения предварительного просмотра JupyterLab Voilà.

Отладчик JupyterLab является результатом сотрудничества и координации разработчиков из нескольких организаций, включая QuantStack, Two Sigma и Bloomberg.

Джереми Тулуп

Джереми Тулуп — разработчик научного программного обеспечения в QuantStack. Он является автором значительной части внешнего интерфейса отладчика JupyterLab.
.
.
.

Борис Палка

Борис Палка — разработчик программного обеспечения в Codete. Он является автором значительной части внешнего интерфейса отладчика JupyterLab.
.
.
.

Johan Mabille

Johan Mabille — разработчик научного программного обеспечения в QuantStack. Йохан является соавтором xeus и разработал расширение отладчика для xeus-python.Он также является автором значительной части интерфейса отладчика.
.

Мартин Рену

Мартин Рену — разработчик научного программного обеспечения в QuantStack. Он является первоначальным автором xeus-python, ядра Python на основе xeus, и внес свой вклад в новую модель параллелизма, используемую для отладчика.

Афшин Дарьян

Афшин Дарьян — разработчик программного обеспечения в Two Sigma и один из авторов JupyterLab.
.
.
.
.

Sylvain Corlay

Sylvain Corlay — основатель и генеральный директор QuantStack, а также основной разработчик Jupyter.Он был соавтором xeus и xeus-python.

Отладчик иммунитета

Скачать

Загрузите отладчик иммунитета здесь!

Обзор
  • Отладчик с функциями, разработанными специально для индустрии безопасности
  • Сокращает время разработки эксплойта на 50%
  • Простые, понятные интерфейсы
  • Надежный и мощный язык сценариев для автоматизации интеллектуальной отладки
  • Легкая и быстрая отладка для предотвращения повреждений во время сложного анализа
  • Возможность подключения к фаззерам и инструментам разработки эксплойтов
Лучшее из обоих миров

Интерфейсы

Immunity Debugger включают графический интерфейс и командную строку.Командная строка всегда доступна
внизу графического интерфейса. Это позволяет пользователю вводить ярлыки, как если бы они были в типичном текстовом
отладчик, например WinDBG или GDB. В Immunity реализованы псевдонимы, чтобы пользователи WinDBG могли
не нужно переучиваться, и вы получите полный прирост производительности, который дает лучший отладчик
интерфейс на маркете.

Команды также могут быть расширены в Python или запускаться из строки меню.

Команды

Python также можно запускать прямо из нашей панели команд. Пользователи могут вернуться к ранее введенному
команды или просто щелкните в раскрывающемся меню и просмотрите все недавно использованные команды.

Панель удаленных команд

Из меню командной строки вы можете выбрать запуск многопоточного сервера командной строки, чтобы вы могли отлаживать
удаленно с другого компьютера:

Создание сценариев на Python

Сценарии

Python можно загружать и изменять во время выполнения.Включенный интерпретатор Python загрузит любой
изменения ваших пользовательских скриптов на лету. Включены образцы сценариев, а также полная документация о том, как
создать свой собственный.

API-интерфейс Python

Immunity Debugger включает множество полезных утилит и функций. Ваши скрипты могут быть как
интегрирован в отладчик как собственный код. Это означает, что ваш код может создавать настраиваемые таблицы, графики,
и интерфейсы всех видов, которые остаются в пределах пользовательского опыта Immunity Debugger.Например, когда
запускается сценарий Immunity SafeSEH, он выводит результаты в таблицу в отладчике Immunity Debugger
окно.

Другие сценарии могут запрашивать ввод данных пользователем с помощью диалоговых окон и полей со списком:

Наличие полностью интегрированного движка сценариев Python означает, что вы можете легко рисовать переменные размеры и отслеживать
использование переменных, что, в свою очередь, может пригодиться при попытке автоматического поиска ошибок!

Крючки для Python

Часто возникает необходимость запускать скрипт Python для определенных программных событий, например, когда точка останова
попадание или исключение.Поддержка ловушки Immunity Debugger включает в себя множество событий отладчика и многое другое.
добавляются с каждым выпуском.

Python для построения графиков

Встроенные графики Еще одна функция отладчика Immunity Debugger — это возможность создавать графики функций. Наш
Библиотека Python VCG создаст окно внутри Immunity Debugger одним нажатием кнопки, чтобы построить график вашего
выбранная функция. Никакого стороннего программного обеспечения не требуется.

Отладчик иммунитета легкий

Immunity Debugger стремится поглощать как можно меньше ресурсов системы.Слишком высокая загрузка ЦП приведет к
вызывают переполнение кучи и другие сложные уязвимости, которые ведут себя иначе, чем в
нормальная нагрузка. Точно так же фаззинг и другой анализ уязвимостей возможен только тогда, когда отладчик
не вызывая чрезмерной нагрузки на систему.

Immunity Debugger предоставляет необходимую информацию

Большинство отладчиков предлагают только один метод, позволяющий подключиться к интересующему процессу — pid и
Имя процесса.Immunity Debugger предлагает pid, имя процесса, службы внутри этого процесса, TCP и UDP.
порты, которые прослушиваются этим процессом, полное двоичное имя и имя окна. Это позволяет быстро и легко
доступ к точному процессу, который вы хотите проанализировать.

Отладчик Visual Python для ноутбуков Jupyter, которые вы всегда хотели | Дэвид Тайеб | Центр данных с открытым исходным кодом и технологий искусственного интеллекта

Представляем PixieDebugger

Я использую Jupyter Notebooks с большим удовольствием уже много лет, в основном с Python, и это подтверждает, что их популярность продолжает расти как в академических кругах, так и в промышленности. .Однако меня беспокоит отсутствие первоклассного визуального отладчика, аналогичного тем, которые доступны в других IDE, таких как Eclipse, IntelliJ или Visual Studio Code.

Некоторые справедливо отметили бы, что Jupyter уже поддерживает pdb для простой отладки, где вы можете вручную и последовательно вводить команды для таких вещей, как проверка переменных, установка точек останова и т. Д. — и этого, вероятно, достаточно, когда дело доходит до отладки простой аналитики. Чтобы поднять планку, команда PixieDust рада представить первый (насколько нам известно) визуальный отладчик Python для Jupyter Notebooks.

Короткая демонстрация PixieDebugger на YouTube в действии

Примечание редактора: PixieDebugger в настоящее время работает только с классическими блокнотами Jupyter; JupyterLab пока не поддерживается.

Как было объявлено, PixieDebugger — это визуальный отладчик Python, созданный как PixieApp, который включает в себя редактор исходного кода, инспектор локальных переменных, вывод консоли, возможность оценивать выражения Python в текущем контексте, управление точками останова и панель инструментов для управления выполнение кода.

Чтобы вызвать PixieDebugger для определенной ячейки, просто добавьте магию %% pixie_debugger вверху ячейки и запустите ее.

В качестве примера рассмотрим следующий пример кода, который находит максимальное значение в массиве.

Примечание: В качестве предварительного условия установите PixieDust, используя следующую команду pip: pip install pixiedust . Вам также необходимо импортировать его в отдельную ячейку: import pixiedust .

При запуске ячейки PixieDebugger будет автоматически вызван для прерывания на первой исполняемой строке кода.

PixieDebugger в действии

Некоторые детали, на которые следует обратить внимание:

  • Панель инструментов в верхнем левом углу позволяет вам управлять потоком выполнения вашего кода: возобновлять выполнение, переходить, переходить, переходить, переходить, перемещать текущий кадр на один вверх и один вниз.
  • Редактор исходного кода показывает текущий код и выделяет текущую выполняемую строку. В желобе слева показаны номера строк и значок для каждой строки, для которой установлена ​​точка останова.
  • Панель переменных справа автоматически показывает локальные переменные для текущего контекста.
  • На вкладке консоли отображаются любые выходные данные текущей программы или PixieDebugger.
  • Вкладка Evaluate позволяет вам ввести любое выражение Python и запустить его, чтобы получить его значение.

Панель Evaluate в PixieDebugger

  • Вкладка Breakpoints отображает список активных точек останова и позволяет добавить новую. Когда вы добавляете новую точку останова, к соответствующей строке автоматически добавляется значок.

Установка точек останова

Также есть функция «запуск в строку», при которой вы можете запустить только часть кода.Вы можете напрямую перейти к определенной строке кода, наведя указатель мыши на номер строки в желобе, чтобы появился значок, и щелкнув его, чтобы переместить выполнение кода в целевую строку. Это может быть полезно, если у вас есть цикл на , и вы не хотите переходить к каждой части цикла.

PixieDebugger, функция «до строки»

Еще одна оптимизация, которую вы, возможно, захотите использовать, — это возможность устанавливать точки останова в качестве директивы магии %% pixie_debugger с помощью переключателя аргументов -b и указывать список точек останова разделенные пробелом.Точки останова могут быть либо именем метода, либо номером строки.

Используя наш предыдущий пример, давайте запустим PixieDebugger с двумя точками останова: одна останавливается на методе find_max , а другая — на строке 9.

Примечание: Строка 9 соответствует строке 7 в исходном коде ячейки. Это потому, что PixieDebugger добавляет несколько строк при запуске. Вы всегда должны использовать номер строки, показанный в редакторе PixieDebugger.

Теперь код автоматически остановится на первой точке останова, которую мы установили в магических аргументах.

Установка точек останова в PixieDebugger

Вызов PixieDebugger посмертно (после того, как произошло исключение), также возможен с помощью строки magic % pixie_debugger . (Обратите внимание на разницу между магией ячейки , которая имеет два символа%, и строкой магией , которая имеет только один аргумент и не имеет никакого аргумента.) Это полезно для устранения трудно воспроизводимых ошибок.

В следующем примере кода имитируется исключение ZeroDivisionError. Затем мы вызываем % pixie_debugger в отдельной ячейке.

Посмертная отладка после возникновения исключения

Примечание: В отладчике основной поток ядра приостанавливается; следовательно, никакой другой код не может быть выполнен до завершения сеанса отладки. Вы узнаете, что выполнение других ячеек безопасно, когда индикатор «ядро занято» в правом верхнем углу страницы записной книжки снова перейдет в режим ожидания.

Что еще интереснее, так это то, что PixieDebugger также работает для отладки PixieApps.Чтобы проиллюстрировать, как это работает, давайте рассмотрим пример простого приложения PixieApp, в котором есть одна кнопка, которая вызывает маршрут с именем bad_route для заполнения элемента div. В свою очередь, реализация bad_route вызывает bad_method , что вызывает исключение ZeroDivisionError.

Для отладки bad_route мы просто используем аргумент ключевого слова debug_route со значением bad_route. Это запустит отладчик, когда bad_route вызывается при нажатии кнопки:

Отладка PixieApp с PixieDebugger

Давайте запустим эту ячейку и посмотрим, как срабатывает PixieDebugger при вызове bad_route.Более того, PixieDebugger фактически отображается в целевом div, который должен заполнять маршрут.

PixieDebugger, вызываемый для отладки маршрута PixieApp

В случае, если вы не указали маршрут для отладки и возникло исключение, инфраструктура PixieApp теперь предоставляет расширенную трассировку с двумя дополнительными кнопками:

  • Post-Mortem: Вызов отладчика для проведите сеанс вскрытия неисправностей.
  • Маршрут отладки: хотя post mortem используется только для проверки локальных переменных, вы можете использовать кнопку маршрута отладки, чтобы воспроизвести маршрут, остановившись на первом исполняемом операторе.

Вот как выглядит новая трассировка с образцом PixieApp, приведенным выше:

Расширенная трассировка для PixieApp со средствами отладки

Новая функция PixieDebugger предоставляет долгожданный визуальный отладчик Python для экосистемы Jupyter Notebook, которая занимает один шаг от записных книжек для анализа данных ближе к тому, чтобы стать настоящей IDE как для специалистов по данным, так и для разработчиков.

Первая версия будет доступна начиная с PixieDust 1.1.8, и я надеюсь, что вы попробуете.Как всегда, мы с нетерпением ждем ваших отзывов о том, как его улучшить, отправив запрос на вытягивание или создав проблемы в репозитории PixieDust на GitHub.

От команды PixieDust: Наслаждайтесь!

Добро пожаловать обратно, отладчик T-SQL с завершенным SQL — Отладчик SQL — {coding} Sight

Когда вы разрабатываете большие фрагменты кода T-SQL с помощью инструмента SQL Server Management Studio, важно протестировать «живое» поведение вашего кода, убедившись, что каждый небольшой фрагмент кода работает нормально и может выделить любое сообщение об ошибке, которое может вызвать сбой в этом коде.

Самый простой способ сделать это — использовать функцию отладчика T-SQL, которая раньше была встроена в инструмент SQL Server Management Studio. Но поскольку функция отладчика T-SQL была полностью удалена из SQL Server Management Studio 18 и более поздних версий, нам нужна замена этой функции. Это связано с тем, что мы не можем продолжать использовать старые версии SSMS только для поддержки функции отладчика T-SQL, не «наслаждаясь» новыми функциями и исправлениями ошибок, выпущенными в новых версиях SSMS.

Если вы планируете дождаться, пока SSMS вернет функцию отладчика T-SQL, проголосуйте за возвращение отладчика в SSMS 18, чтобы попросить Microsoft повторно ввести его.

Что касается меня, я искал альтернативный инструмент для встроенной функции SSMS T-SQL Debugger и обнаружил, что компания Devart развернула новую функцию T-SQL Debugger для версии 6.4 SQL — Complete tool. SQL Complete — это надстройка для Visual Studio и SSMS, которая предлагает возможности автозаполнения сценариев, которые помогают разрабатывать и отлаживать проект базы данных SQL.

Функция отладчика SQL в SQL Complete позволяет вам проверять выполнение ваших сценариев, процедур, функций и триггеров шаг за шагом, добавляя точки останова в строки, где вы планируете запускать, приостанавливать, оценивать, выполнять пошаговое выполнение и затем продолжать выполнение вашего скрипта.

Вы можете загрузить SQL Complete со страницы загрузки dbForge и установить его на свой компьютер с помощью простого мастера установки. Мастер попросит вас указать путь установки для инструмента SQL Complete и версии SSMS и Visual Studio, на которые вы планируете установить SQL Complete в качестве надстройки, из версий, установленных на вашем компьютере, как показано ниже:

После того, как SQL Complete будет полностью установлен на вашем компьютере, мастер установки dbForge SQL Complete сообщит вам, была ли установка завершена успешно или мастер столкнулся с какой-либо конкретной проблемой, которую вы можете легко устранить и исправить.Если проблем нет, мастер предоставит вам возможность открыть инструмент SSMS и начать использовать инструмент SQL Complete, как показано ниже:

Когда вы откроете SSMS, вы увидите новое меню инструментов «Отладка», в котором вы можете перемещаться по параметрам функции отладчика SQL. Кроме того, в крайней левой части инструмента SSMS вы увидите список значков, которые будут использоваться для управления режимом отладки запроса T-SQL. Если вы не видите список, вы можете перейти в меню «Просмотр» -> «Панели инструментов» -> «Отладчик», чтобы сделать эти значки видимыми.

Во время сеанса отладки значки отладчика SQL будут иметь следующий вид:

Функциональность этих значков в отладчике SQL можно резюмировать следующим образом:

  • Добавление точек останова для управления паузой выполнения сценария T-SQL в конкретном операторе позволяет вам проверять отладочную информацию операторов T-SQL, такую ​​как значения параметров и переменных.
  • Step Into — это «переход» по операторам сценария один за другим, что позволяет вам проверить, как ведет себя каждый оператор.
  • Step Over — это «выполнить» определенную хранимую процедуру, если вы уверены, что она не содержит ошибок.
  • Step Out — это «возврат» из хранимой процедуры, функции или триггера в главное окно отладки.
  • Продолжить выполнение сценария до достижения следующей точки останова.
  • Остановить отладку — «завершить» сеанс отладки.
  • Перезапустить «остановить и запустить» текущий сеанс отладки.

Чтобы отладить сценарий с помощью надстройки SSMS отладчика SQL, откройте новое окно запроса в SSMS, напишите код и разместите точки останова в соответствии с вашими требованиями к отладке, щелкнув серую полосу слева от каждого оператора. Щелкните оператор правой кнопкой мыши и выберите параметр «Вставить точку останова» или используйте параметр «Переключить точку останова» (F9) в меню инструментов отладки, как показано ниже:

Точки останова определяют оператор, на котором выполнение сценария будет приостановлено, что позволит вам проверить сценарий до этого момента.Щелкните параметр Продолжить , чтобы запустить отладчик и посмотреть, как он приостанавливается на первом операторе с точкой останова в сценарии, как показано ниже:

Перед тем, как запустить первую точку останова, проверьте вкладку Breakpoints в нижней части окна запроса, которое содержит список точек останова, установленных в вашем сценарии. Обратите внимание, что вы можете отключить и включить его здесь. Кроме того, окно Call Stack показывает стек вызовов вашего скрипта, а окно Watches отображает значения переменных и параметров, которые используются в вашем коде во время выполнения скрипта.

Чтобы запустить первую точку останова, которую вы установили, и перейти к следующей точке останова, используйте опцию Continue , где он выполнит все операторы и остановится на следующей точке останова. В нашем примере ниже нам нужно проверить количество строк, которые будут затронуты перед выполнением операции модификации, как показано ниже:

Продолжите отладку сценария, используя правильную операцию, которая соответствует типу операторов сценария и отвечает требованиям отладки.Продолжайте отслеживать вызовы стека и значения переменных, пока не выполните последний оператор точки останова, при котором сеанс отладки будет завершен, как показано ниже:

Когда вы закончите процесс отладки, вы можете легко отключить или включить существующие точки останова на вкладке «Точки останова», щелкнув опцию Отключить все точки останова , где отключенные точки останова будут в форме пустых красных кружков, а активные. в виде закрашенных красных кружков, как показано ниже:

Кроме того, вы можете легко удалить существующие точки останова на вкладке «Точки останова», щелкнув Удалить все точки останова .В результате точки останова будут полностью удалены из окна запроса и вкладки «Точки останова», как показано ниже:

Выводы

В этой статье мы показали хорошую альтернативу функции T-SQL Debugger, которая была удалена из SSMS 18.0 и более поздних версий, и продемонстрировали использование dbForge SQL Complete — инструмента SQL Debugger. Этот инструмент позволяет легко отлаживать сценарий, хранимую процедуру, функцию или триггер, добавляя столько точек останова, сколько вам нужно.Кроме того, вы можете отслеживать поведение своего скрипта и, в то же время, делать паузу в любом операторе, переходить по операторам в соответствии с вашими требованиями к отладке и наблюдать за вызовами стека ваших операторов скрипта, значениями параметров и переменных. в процессе отладки скрипта.

Ахмад Ясин (Ahmad Yaseen) — руководитель администрирования баз данных SQL Server в компании Aramex International Company со степенью бакалавра в области компьютерной инженерии, а также опытом разработки .NET.
Он является сертифицированным специалистом Microsoft с большим опытом разработки SQL-серверов, администрирования, настройки производительности, мониторинга и технологий обеспечения высокой доступности и аварийного восстановления.

Последние сообщения Ахмада Ясина (посмотреть все)

pdb — Отладчик Python — Документация Python 3.9.2

Исходный код: Lib / pdb.py


Модуль pdb определяет интерактивный отладчик исходного кода для Python
программы. Он поддерживает установку (условных) точек останова и пошаговое выполнение
уровень исходной строки, проверка кадров стека, листинг исходного кода и
оценка произвольного кода Python в контексте любого фрейма стека.Это также
поддерживает посмертную отладку и может вызываться под управлением программы.

Отладчик расширяемый — фактически он определен как класс Pdb .
В настоящее время это недокументировано, но легко понять, прочитав источник. В
Интерфейс расширения использует модули bdb и cmd .

Приглашение отладчика — (Pdb) . Типичное использование для запуска программы под контролем
отладчика:

 >>> импорт pdb
>>> import mymodule
>>> pdb.запустить ('mymodule.test ()')
> <строка> (0)? ()
(Pdb) продолжить
> <строка> (1)? ()
(Pdb) продолжить
NameError: 'спам'
> <строка> (1)? ()
(PDB)
 

Изменено в версии 3.3: Завершение табуляции с помощью модуля чтения доступно для команд и
аргументы команды, например текущие глобальные и локальные имена предлагаются как
аргументы команды p .

pdb.py также можно вызывать как сценарий для отладки других сценариев. Для
пример:

 python3 -m pdb myscript.ру
 

При вызове в качестве сценария pdb автоматически входит в посмертную отладку, если
отлаживаемая программа завершает работу ненормально. После посмертной отладки (или
после нормального выхода из программы) pdb перезапустит программу. Автоматический
перезапуск сохраняет состояние PDB (например, точки останова), и в большинстве случаев
полезно, чем выход из отладчика при выходе из программы.

Новое в версии 3.2: pdb.py теперь принимает параметр -c , который выполняет команды, как если бы они были заданы.
в .pdbrc , см. Команды отладчика.

Новое в версии 3.7: pdb.py теперь принимает параметр -m , который запускает модули аналогично
python3 -m делает. Как и в случае со сценарием, отладчик просто приостановит выполнение.
перед первой строкой модуля.

Типичное использование для взлома отладчика из работающей программы:
вставка

 импорт PDB; pdb.set_trace ()
 

в том месте, где вы хотите взломать отладчик.Затем вы можете пройти через
код, следующий за этим оператором, и продолжить работу без отладчика
используя команду continue .

Новое в версии 3.7: можно использовать встроенную точку останова () при вызове со значениями по умолчанию.
вместо import pdb; pdb.set_trace () .

Типичное использование для проверки сбойной программы:

 >>> импорт pdb
>>> import mymodule
>>> mymodule.test ()
Отслеживание (последний вызов последний):
  Файл "", строка 1, в 
  Файл "./mymodule.py ", строка 4, в тесте
    test2 ()
  Файл "./mymodule.py", строка 3, в test2
    печать (спам)
NameError: спам
>>> pdb.pm ()
> ./mymodule.py (3) test2 ()
-> печать (спам)
(PDB)
 

Модуль определяет следующие функции; каждый входит в отладчик в
немного иначе:

пдб. запустить ( инструкция , глобальные = нет , локальные = нет )

Выполнить оператор (заданный как строка или объект кода) в отладчике
контроль.Приглашение отладчика появляется перед выполнением любого кода; ты можешь
установите точки останова и введите , продолжить , или вы можете пройти через
оператор с использованием шага или следующего (все эти команды
объяснено ниже). Необязательные аргументы globals и locals указывают
среда, в которой выполняется код; по умолчанию словарь
модуль __main__ используется. (См. Объяснение встроенного
exec () или eval () функций.)

пдб. runeval ( выражение , globals = None , locals = None )

Вычислить выражение (заданное как строка или объект кода) в отладчике
контроль. Когда runeval () возвращается, он возвращает значение
выражение. В остальном эта функция аналогична run () .

пдб. runcall ( функция , * args , ** kwds )

Вызовите функцию (объект функции или метода, а не строку) с
приводятся аргументы.Когда runcall () возвращается, он возвращает все, что
вызов функции возвращен. Запрос отладчика появляется, как только функция
введен.

пдб. set_trace ( * , заголовок = Нет )

Войдите в отладчик в вызывающем кадре стека. Это полезно для жесткого кодирования
точка останова в данной точке программы, даже если код не
в противном случае выполняется отладка (например, когда утверждение не выполняется). Если дано,
Заголовок выводится на консоль непосредственно перед началом отладки.

Изменено в версии 3.7: Аргумент только для ключевого слова , заголовок .

пдб. post_mortem ( traceback = Нет )

Введите посмертную отладку данного объекта трассировки . Если нет
traceback , он использует одно из исключений, которое в настоящее время
обрабатывается (исключение должно обрабатываться, если значение по умолчанию
использовал).

пдб. вечера ()

Введите посмертную отладку трассировки, найденной в
sys.last_traceback .

Функции запуска * и set_trace () являются псевдонимами для создания экземпляра
Pdb class и вызов одноименного метода. Если хотите
доступ к дополнительным функциям, вы должны сделать это сами:

класс pdb. Pdb ( completekey = ‘tab’ , stdin = None , stdout = None , skip = None , nosigint = False , readrc = True )

Pdb — класс отладчика.

completekey , stdin и stdout аргументы передаются в
лежащий в основе cmd.Cmd class; см. описание там.

Аргумент пропуска , если он задан, должен быть повторением имени модуля в стиле глобуса
узоры. Отладчик не будет переходить к кадрам, исходящим из модуля.
что соответствует одному из этих шаблонов.

По умолчанию Pdb устанавливает обработчик для сигнала SIGINT (который отправляется, когда
пользователь нажимает Ctrl-C на консоли), когда вы даете команду продолжить .Это позволяет вам снова войти в отладчик, нажав Ctrl-C . если ты
хотите, чтобы Pdb не касался обработчика SIGINT, установите для nosigint значение true.

Аргумент readrc по умолчанию имеет значение true и определяет, будет ли Pdb загружаться.
.pdbrc файлы из файловой системы.

Пример вызова для включения трассировки с пропуском :

 импорт PDB; pdb.Pdb (skip = ['django. *']). set_trace ()
 

Вызывает событие аудита pdb.Pdb без аргументов.

Новое в версии 3.1: пропустить аргумент .

Новое в версии 3.2: аргумент nosigint . Ранее обработчик SIGINT никогда не устанавливался
Pdb.

Изменено в версии 3.6: Аргумент readrc .

запустить ( инструкция , глобальные = нет , локальные = нет )
runeval ( выражение , globals = None , locals = None )
runcall ( функция , * args , ** kwds )
set_trace ()

См. Документацию по функциям, описанным выше.

Команды отладчика

Команды, распознаваемые отладчиком, перечислены ниже. Большинство команд можно
сокращенно до одной или двух букв, как указано; например ч (эл.) означает, что
для ввода команды справки можно использовать h или help (но не he
или hel , или H или Help или HELP ). Аргументы команд должны быть
разделены пробелами (пробелами или табуляциями).Необязательные аргументы заключены в
квадратные скобки ( [] ) в синтаксисе команды; квадратные скобки не должны быть
набрал. Альтернативы в синтаксисе команд разделены вертикальной чертой
( | ).

При вводе пустой строки повторяется последняя введенная команда. Исключение: если последний
команда была командой list , перечислены следующие 11 строк.

Команды, которые отладчик не распознает, считаются операторами Python.
и выполняются в контексте отлаживаемой программы.Python
операторы также могут иметь префикс восклицательного знака (! ). Это
мощный способ проверки отлаживаемой программы; это даже возможно
изменить переменную или вызвать функцию. Когда возникает исключение в таком
оператор, имя исключения печатается, но состояние отладчика не
измененный.

Отладчик поддерживает псевдонимы. Псевдонимы могут иметь
параметры, которые обеспечивают определенный уровень адаптации к контексту в
экспертиза.

В одной строке можно ввести несколько команд, разделенных ;; .(А
одиночный ; не используется, так как это разделитель для нескольких команд в строке
который передается синтаксическому анализатору Python.) Никакой интеллект не применяется к разделению
команды; вход разделен на первые ;; пара, даже если она находится в
середина строки в кавычках.

Если файл .pdbrc существует в домашнем каталоге пользователя или в текущем
каталог, он читается и выполняется, как если бы он был набран в отладчике
быстрый. Это особенно полезно для псевдонимов.Если существуют оба файла, один
в домашнем каталоге сначала читается, и псевдонимы, определенные там, могут быть переопределены
локальным файлом.

Изменено в версии 3.2: .pdbrc теперь может содержать команды, продолжающие отладку, например
продолжить или следующий . Ранее в этих командах не было
эффект.

h (elp) [команда]

Без аргумента распечатать список доступных команд. С командой как
аргумент, выведите справку по этой команде. help pdb отображает полную
документация (строка документации модуля pdb ). Поскольку команда
аргумент должен быть идентификатором, help exec необходимо ввести, чтобы получить справку по
! команда.

w (здесь)

Распечатайте трассировку стека с самым последним кадром внизу. Стрелка
указывает текущий кадр, который определяет контекст большинства команд.

д (собственный) [кол-во]

Переместить текущий кадр count (по умолчанию) на уровни вниз в трассировке стека
(в более новую рамку).

u (p) [кол-во]

Переместить текущий кадр count (по умолчанию) уровней вверх в трассировке стека (чтобы
старый кадр).

b (reak) [([имя файла:] белье | функция) [, условие]]

С аргументом lineo установите разрыв в текущем файле. С
функция аргумент, установите перерыв в первом исполняемом операторе в пределах
эта функция.Номер строки может начинаться с имени файла и двоеточия,
чтобы указать точку останова в другом файле (возможно, тот, который не был загружен
все же). Файл ищется по sys.path . Обратите внимание, что каждая точка останова
присваивается номер, на который ссылаются все остальные команды точки останова.

Если присутствует второй аргумент, это выражение, которое должно оцениваться как
истина до того, как будет соблюдена точка останова.

Без аргумента перечислить все перерывы, включая для каждой точки останова номер
раз, когда эта точка останова была достигнута, текущий счетчик игнорирования и
связанное условие, если таковое имеется.

tbreak [([имя файла:] белье | функция) [, условие]]

Временная точка останова, которая автоматически удаляется при первом достижении.
Аргументы те же, что и для break .

cl (ухо) [имя файла: белье | bpnumber ...]

С аргументом имя_файла: белье очистите все точки останова в этой строке.
С помощью списка номеров точек останова, разделенных пробелами, удалите эти точки останова.Без аргументов удалите все перерывы (но сначала спросите подтверждение).

отключить [bpnumber ...]

Отключить точки останова, указанные как список точек останова, разделенных пробелами
числа. Отключение точки останова означает, что она не может привести к остановке программы.
выполнения, но в отличие от очистки точки останова, он остается в списке
точки останова и могут быть (повторно) включены.

включить [bpnumber...]

Включить указанные точки останова.

игнорировать bpnumber [количество]

Установить счетчик игнорирования для заданного номера точки останова. Если счетчик опущен,
счетчик игнорирования установлен на 0. Точка останова становится активной, когда игнорирование
счетчик равен нулю. Если не равен нулю, счет уменьшается каждый раз, когда
точка останова достигнута, и точка останова не отключена, и все связанные
условие оценивается как истинное.

условие bpnumber [состояние]

Установить новое условие для точки останова, выражение, которое должно вычисляться
значение true до того, как будет соблюдена точка останова.Если условие отсутствует, любое
существующее состояние удалено; т.е. точка останова делается безусловной.

команд [bpnumber]

Укажите список команд для точки останова с номером bpnumber . Команды
сами появляются в следующих строках. Введите строку, содержащую только
конец , чтобы завершить команды. Пример:

 (Pdb) команды 1
(com) p some_variable
(com) конец
(PDB)
 

Чтобы удалить все команды из точки останова, введите команд и следуйте за ним.
сразу с концом ; то есть не отдавать команд.

Без аргумента bpnumber команды ссылаются на последнюю установленную точку останова.

Вы можете использовать команды точки останова, чтобы снова запустить вашу программу. Просто используйте
продолжить команду или шаг ,
или любая другая команда, возобновляющая выполнение.

Указание возобновления выполнения любой команды
(в настоящее время продолжить , шаг , следующий ,
вернуть , перейти , выйти и их сокращения)
завершает список команд (как если бы
за этой командой сразу же следовало end).Это потому, что каждый раз, когда ты
возобновить выполнение (даже с простым next или step), вы можете столкнуться с другим
точка останова — у которого может быть собственный список команд, что приводит к двусмысленности
какой список выполнить.

Если вы используете команду «без звука» в списке команд, обычное сообщение о
остановка в точке останова не печатается. Это может быть желательно для точек останова
которые должны напечатать конкретное сообщение, а затем продолжить. Если никто другой
команды печатают что-нибудь, вы не видите никаких признаков того, что точка останова была достигнута.

с (теп)

Выполнить текущую строку, остановить при первой возможности (либо в
вызываемой функции или в следующей строке текущей функции).

n (доб)

Продолжать выполнение, пока не будет достигнута следующая строка в текущей функции или
он возвращается. (Разница между следующим и шагом составляет
что шаг останавливается внутри вызываемой функции, а следующий
выполняет вызываемые функции на (почти) полной скорости, останавливаясь только на следующем
строка в текущей функции.)

Unt (il) [белье]

Без аргумента продолжить выполнение до строки с номером больше
чем достигается текущий.

С номером строки продолжить выполнение до тех пор, пока не появится строка с номером больше или
равный этому достигается. В обоих случаях также остановитесь, когда текущий кадр
возвращается.

Изменено в версии 3.2: Разрешено указывать явный номер строки.

r (этурн)

Продолжить выполнение, пока не вернется текущая функция.

c (ont (inue))

Продолжить выполнение, останавливаться только при обнаружении точки останова.

j (ump) полотно

Установить следующую строку, которая будет выполняться. Доступно только в самом нижнем
Рамка. Это позволяет вам вернуться назад и снова выполнить код или перейти вперед к
пропустить код, который вы не хотите запускать.

Следует отметить, что не все прыжки разрешены — например, это запрещено.
можно прыгнуть в середину цикла на цикл или выйти из
наконец пункт.

л (ист) [первая [, последняя]]

Вывести исходный код текущего файла. Без аргументов перечислить 11 строк
вокруг текущей строки или продолжить предыдущее перечисление. С . как
аргумент, перечислить 11 строк вокруг текущей строки. С одним аргументом,
перечислите 11 строк вокруг этой строки. С двумя аргументами укажите указанный диапазон;
если второй аргумент меньше первого, он интерпретируется как счетчик.

Текущая строка в текущем кадре обозначается как -> .Если
исключение отлаживается, строка, в которой изначально было исключение
поднятый или размноженный обозначается как >> , если он отличается от текущего
линия.

Новое в версии 3.2: Маркер >> .

ll | длинный список

Вывести весь исходный код для текущей функции или кадра. Интересные строчки
помечены как для списка .

а (rgs)

Распечатать список аргументов текущей функции.

p выражение

Вычислить выражение в текущем контексте и распечатать его значение.

Примечание

print () также можно использовать, но это не команда отладчика — она ​​выполняет
Функция Python print () .

pp выражение

Аналогично команде p , за исключением того, что значение выражения равно
красиво напечатано с использованием модуля pprint .

whatis выражение

Вывести тип выражения .

источник выражение

Попробуйте получить исходный код для данного объекта и отобразить его.

дисплей [выражение]

Отображать значение выражения, если оно изменилось, каждый раз, когда выполнение останавливается
в текущем кадре.

Без выражения, перечислить все отображаемые выражения для текущего кадра.

не отображать [выражение]

Больше не отображать выражение в текущем кадре. Без
выражение, очистить все отображаемые выражения для текущего кадра.

взаимодействовать

Запустите интерактивный интерпретатор (используя модуль code ), глобальный
пространство имен содержит все (глобальные и локальные) имена, найденные в текущем
объем.

псевдоним [имя [команда]]

Создайте псевдоним name , который выполняет команду . Команда должна
, а не следует заключать в кавычки. Заменяемые параметры могут быть обозначены
% 1 , % 2 и т. Д., А % * заменяются всеми параметрами.
Если команда не задана, отображается текущий псевдоним для имя . Если нет
приведены аргументы, перечислены все псевдонимы.

Псевдонимы могут быть вложенными и содержать все, что разрешено вводить на
приглашение pdb. Обратите внимание, что внутренние команды pdb могут быть отменены
псевдонимы. Затем такая команда скрывается до тех пор, пока псевдоним не будет удален. Сглаживание
рекурсивно применяется к первому слову командной строки; все остальные слова
в очереди остались одни.

В качестве примера, вот два полезных псевдонима (особенно при размещении в
.pdbrc файл):

 # Печатать переменные экземпляра (использование "pi classInst")
псевдоним pi для k в% 1.__dict __. keys (): print ("% 1.", k, "=",% 1 .__ dict __ [k])
# Печатать переменные экземпляра в себе
псевдоним ps pi self
 
unalias имя

Удалить указанный псевдоним.

! ведомость

Выполнить (однострочный) оператор в контексте текущего кадра стека.
Восклицательный знак можно опустить, если только первое слово утверждения
напоминает команду отладчика.Чтобы установить глобальную переменную, вы можете префикс
команда присвоения с глобальным оператором в той же строке,
например:

 (Pdb) global list_options; list_options = ['-l']
(PDB)
 
запустить [аргументы ...]
перезапуск [аргументы ...]

Перезапустите отлаженную программу Python. Если указан аргумент, он разбивается
с shlex , и результат используется как новый sys.argv .
История, точки останова, действия и параметры отладчика сохраняются.
restart — это псевдоним для run .

кв (уит)

Выйти из отладчика. Выполняемая программа прерывается.

Отладка код

Введите рекурсивный отладчик, который выполняет код
аргумент (который является произвольным выражением или утверждением, которое
выполняется в текущей среде).

возврат

Распечатать возвращаемое значение для последнего возврата функции.

Сноски

Отладчик воспроизведения Apex

Настройка отладчика воспроизведения Apex

При первом использовании отладчика Apex Replay Debugger создайте конфигурацию запуска. Затем каждый раз при отладке проблемы настраивайте сеанс отладчика Apex Replay Debugger.

Создание конфигурации запуска

Чтобы создать конфигурацию запуска для отладчика Apex Replay Debugger, создайте или обновите вашего проекта.vscode / launch.json файл.

  1. Откройте проект Salesforce DX в VS Code.
  2. Если ваш проект Salesforce DX еще не содержит файла JSON с путем к файлу .vscode / launch.json , создайте файл (и, если необходимо, папку).
  3. Откройте файл .vscode / launch.json .
  4. Добавьте конфигурацию с именем Launch Apex Replay Debugger .
  {
  // Используйте IntelliSense, чтобы узнать о возможных атрибутах.// Наведите указатель мыши, чтобы просмотреть описания существующих атрибутов.
  // Для получения дополнительной информации посетите: https://go.microsoft.com/fwlink/?linkid=830387
  "версия": "0.2.0",
  "конфигурации": [
    {
      "name": "Запустить отладчик Apex Replay Debugger",
      "тип": "апекс-повтор",
      "запрос": "запуск",
      "logFile": "$ {command: AskForLogFileName}",
      "stopOnEntry": правда,
      "след": правда
    }
  ]
}
  

Установить точки останова и контрольные точки

Перед созданием журнала отладки для отладки воспроизведения установите точки останова и контрольные точки.

  1. Чтобы установить точки останова на строку, откройте файл .cls или .trigger и щелкните столбец слева от номеров строк.
  2. Чтобы получить больше информации, чем предоставляют точки останова на строку, добавьте контрольные точки. Вы можете установить до пяти контрольных точек для получения дампов кучи при выполнении строк кода. Все локальные переменные, статические переменные и переменные контекста триггера имеют лучшую информацию на контрольных точках. Переменные контекста триггера не существуют в журналах и доступны только на контрольных точках.
    В Visual Studio Code контрольная точка — это тип точки останова. Контрольные точки функционируют как точки останова при воспроизведении отладки из журнала. Настройте и загрузите свои контрольные точки, прежде чем запускать сеанс отладчика Apex Replay Debugger.

    1. Установите контрольные точки на пяти строках в классах или триггерах Apex.
    2. Щелкните строку кода, в которой вы хотите установить контрольную точку.
    3. Откройте палитру команд (нажмите Ctrl + Shift + P в Windows или Linux или Cmd + Shift + P в macOS).
    4. Запустить SFDX: переключить контрольную точку .
      • Или щелкните правой кнопкой мыши в поле слева от номеров строк и выберите Добавить условную точку останова | Expression и задайте для выражения значение Checkpoint .
      • Или, чтобы преобразовать существующую точку останова в контрольную, щелкните точку останова правой кнопкой мыши и выберите Изменить точку останова | Выражение . Задайте для выражения значение Контрольная точка .
    5. Чтобы загрузить контрольные точки в организацию для сбора информации о дампе кучи, откройте палитру команд и запустите SFDX: Обновить контрольные точки в организации .

Настройка сеанса отладчика Apex Replay для временной организации или организации разработки по умолчанию

Если вы отлаживаете проблему в пустой организации, или в изолированной программной среде, или в организации DE, которую вы установили в качестве организации по умолчанию в VS Code, мы предоставляем инструменты для создания журнала отладки для воспроизведения.Включите ведение журнала, воспроизведите проблему, получите журнал отладки из организации, а затем запустите сеанс отладки.

  1. Чтобы включить ведение журнала, из VS Code откройте палитру команд (Ctrl + Shift + P в Windows или Linux или Cmd + Shift + P в macOS) и запустите SFDX: включите журнал отладки Apex для отладчика воспроизведения .
  2. Воспроизведите сценарий, который нужно отладить. Вы можете сделать это:
    • Запуск SFDX: Запуск тестов Apex
    • Запуск SFDX: выполнение анонимного Apex с текущим выделенным текстом
    • Запуск SFDX: выполнение анонимного Apex с содержимым редактора
    • Выполнение шагов вручную в организации в веб-браузере
  3. Чтобы получить список журналов отладки в вашей организации, запустите SFDX: Получить журналы отладки Apex .
  4. Щелкните журнал, который нужно воспроизвести. Журнал загружается и открывается в VS Code.
  5. Запустить SFDX: запустить отладчик воспроизведения Apex с текущим файлом .

Настройка сеанса отладчика Apex Replay для песочницы или производственной организации

Если вы не используете временную организацию или организацию, которую вы установили в качестве организации по умолчанию для разработки в VS Code, загрузите журнал отладки из своей организации, прежде чем начинать отладку. Откройте этот журнал в VS Code, а затем запустите сеанс отладки.

  1. В VS Code откройте журнал отладки, который вы хотите проанализировать. Создайте журнал с уровнем журнала FINER или FINEST для VISUALFORCE и уровнем журнала FINEST для APEX_CODE .
  2. Запустить SFDX: запустить отладчик воспроизведения Apex с текущим файлом .

СОВЕТ. Если файл журнала является частью проекта Salesforce DX, вам не нужно открывать файл журнала и затем запускать отдельную команду. Вместо этого вы можете найти файл журнала в представлении проводника, щелкнуть его правой кнопкой мыши и выбрать Запустить отладчик воспроизведения Apex с текущим файлом .

Отладка кода

Просмотрите журнал отладки и проверьте значения переменных.

  1. Чтобы переключиться в режим отладки VS Code, щелкните значок ошибки в левом углу окна.
  2. Чтобы воспроизвести выполнение кода, которое было зарегистрировано в журнале отладки, пока не будет достигнута первая точка останова, щелкните зеленый значок воспроизведения на панели действий отладки в верхней части редактора.
  3. Пошагово пройдитесь по вашему коду и изучите состояния ваших переменных в разделе ПЕРЕМЕННЫЕ представления отладки.Дополнительные сведения см. В разделе «Отладка» в документации по Visual Studio Code.
    По мере выполнения кода во время сеанса отладки отладчик Apex Replay Debugger предоставляет подробную информацию о ваших переменных из дампов кучи в строках, где вы устанавливаете контрольные точки.
  4. Когда вы прошли через все зарегистрированные события, сеанс отладки завершается. Если вы хотите начать заново с начала журнала, запустите SFDX: Запустите отладчик воспроизведения Apex с последним файлом журнала .

Соображения

Помните об этих соображениях и известных проблемах при работе с отладчиком Apex Replay Debugger.

  • Вы можете использовать этот отладчик только в своих организациях. Отладка клиентов независимых поставщиков программного обеспечения недоступна в отладчике Apex Replay Debugger. Для отладки организаций клиентов используйте отладчик ISV Customer Debugger.
  • Одновременно можно воспроизводить только один журнал отладки. Это ограничение может затруднить отладку асинхронного Apex, который создает несколько журналов отладки.
  • Обязательно начинайте сеанс вскоре после загрузки ваших контрольных точек, потому что контрольные точки истекают через 30 минут.
  • Не забудьте отладить свой код вскоре после запуска сеанса, потому что дампы кучи истекают примерно через день после их создания.
  • Невозможно воспроизвести журнал отладки, созданный запланированной программой Apex.
  • Значения длинных строковых переменных усекаются в точках останова. В контрольных точках переменные с расширенным дампом кучи имеют полные строки.
  • При просмотре стандартного или настраиваемого объекта в точке останова можно перейти только к непосредственным дочерним переменным объекта (на один уровень в глубину). В контрольных точках переменные с расширенным дампом кучи имеют полную детализацию до дочерних стандартных объектов, а не только до непосредственных потомков.
  • Вы не можете развернуть коллекцию (список, набор или карту), потому что ее элементы показаны в строковой форме.
  • Изменение коллекции не приводит к обновлению переменной коллекции в разделе VARIABLES представления Debug.
  • Вы не можете установить метод или условные точки останова.
  • Вы не можете оценивать или просматривать переменные или выражения в разделе WATCH представления Debug.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *