стратегии для исправления ошибок во время выполнения - PullRequest
0 голосов
/ 23 августа 2009

Мне было интересно, какие стратегии вы, ребята, используете для исправления ошибок во время выполнения? Очень признателен, если бы вы могли поделиться некоторыми советами!

Вот некоторые из моих мыслей (возможно, с помощью GDB):

если во время выполнения произошла ошибка из-за неправильного доступа к какой-либо памяти, хранится ли в дамповом ядре адрес, показывающий, где находится эта память?

Если я могу найти адрес / память, доступ к которой вызывает ошибку времени выполнения, можно ли узнать, какая переменная использует этот адрес (который может быть в начале или в середине памяти переменной)? И найти ближайшие переменные, которые занимают память внизу и прямо над этим блоком памяти?

Если все это возможно, поможет ли это исправить ошибки?

Спасибо и всего наилучшего!

1 Ответ

1 голос
/ 29 августа 2009

Я использую опцию --args в gdb для запуска моих программ из командной строки.

Пример:

gdb --args foocode --with-super-awesome-option
run

Это загрузит программу foocode и передаст ей параметр --with-super-awesome-option. Когда программа завершится сбоем, у вас будет готовый к работе сеанс GDB для работы.

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

bt

Это покажет вам цепочку событий (вызовов функций), которые привели к вашей аварии.

...