Вернуться




Stack trace в разработчике С++: что это, для чего нужен и как его использовать



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

До определенного момента стектрейс не был включен в стандарты разработки С++. Но в последнее время ситуация поменялась и отечественные разработчики тоже к тому приложили свои усилия.

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

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

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

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

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

  • когда невозможно «внешнее» вмешательство в отлаживаемое приложение.

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

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

  • использование большого обилия форматов;

  • использование компиляторов и платформ;

  • подключение различных библиотек и др.

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

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

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

  • больше не нужно ограничивать себя одной определенной платформой;

  • отпадает зависимость от определенного компилятора — теперь можно использовать многие компиляторы, которые поддерживают стандарт стектрейс в С++;

  • больше не нужно переживать по поводу формата отладочной информации;

  • отпадает зависимость от использования определенных библиотек;

  • и др.

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

 



Если вам понравилась эта статья поделитесь ею с друзьями, тем самым вы помогаете нам развиваться и добавлять всё больше интересного и полезного контента!




Cхожие статьи





Стоит ли учиться программировать в 2021

Стоит ли учиться программировать в 2021

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

21 Февраля 2021    Другое

Плюсы и минусы Baas для разработки мобильных приложений

Плюсы и минусы Baas для разработки мобильных приложений

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

23 Марта 2021    Другое

Начинающий программист

Начинающий программист

Самыми легкими в изучении можно считать такие языки как JavaScript, Python, ...

23 Марта 2021    Другое