Top.Mail.Ru

Stack trace в разработке С++

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


Стектрейс в С++


Что такое stack trace вы уже знаете. Но представьте себе , что каких-то пару лет
назад он не был включен в стандарт С++. В 2018-м году Российская инициативная
группа разработчиков собирала мнения других программистов по поводу Стектрейс
в С++ и донесла их в Международный комитет по стандартизации. Четко обосновав,
что принятые изменения позволят упростить разработку на С++ и добавят в этот
язык больше логики.


Работая над большими проектами на С++, часто возникает потребность узнать
откуда берет начало та или иная функция. Допустим нужная нам функция
вызывается только после возникновения ошибки, тогда не лишним было бы узнать
какие «вызовы» вызвали ошибку и нужную функцию.
Самым простым методом было бы — применить отладчик и остановить его работу в
нужном месте и просмотреть стек. Но в некоторых сценариях отладки — это
невозможно сделать:

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


В этих случаях возможно получать стек только в процессе выполнения программы.
Тут и может помочь технолгия стектрэйс. Но для этого нужно внести классы для
просмотра стека прямо в стандарт С++. Именно это и инициировали русские
разработчики.
Это не значит что до сих пор никак это нельзя было сделать. До внедрения стектрэйс
в С++, это все делалось очень «громоздкими» методами:

  • использовать большое обилие форматов;
  • использовать компиляторы и платформы;
  • подключать различные библиотеки и др.


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


Плюсы использования Stack trace в разработчике С++


Стектрэйс в С++ принес с собой определенные «облегчения» при отладке программ:

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


Заключение

Возможно вам будет интересно почитать статью ” Разработка чат-ботов и подборка идей их применения

Stack trace — это то что облегчит вашу разработку и отладку приложений на языке
С++. Стектрэйс это достаточно новая технология для С++ и со временем он будет
только развиваться и дополняться новыми возможностями. К примеру ближайшее
дополнение — это добавление способности переноса стектресов между разными
машинами.

Text.ru - 100.00%
Поделись статьей с друзьями!

Ответить

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