2013-10-11 2 views
0

У меня есть проект C++, где beahviour в режиме отладки и выпуска отличается. Например. в режиме освобождения я получаю ошибки с ошибками, если в режиме отладки все работает нормально. Возможно, это различие связано с разной скоростью выполнения.Отладка без отладки Символы

У вас есть подсказки и подсказки, как отлаживать программу без стандартного отладчика (например, gdb)? Я мог бы попытаться многое сделать в критических областях, но это, кажется, не самый умный способ ... Может быть, есть способ получить некоторую информацию о местонахождении некоторых видов ошибок без использования отладочных символов? Есть ли какие-нибудь инструменты?

+0

Вы уверены, что различие вызвано отладочным символом? какие команды компилируют для создания двоичных файлов отладки/выпуска? – tristan

+2

Вы можете иметь отладочные символы, доступные в сборке релизов, и не должны вообще изменять поведение программы. Если у вас возникли проблемы между сборками debug/release, вероятно, у вас есть неопределенное поведение или неинициализированные переменные, которые вызывают проблемы. –

+0

Является ли ошибка плоского исключения исключением? Можете ли вы поймать и зарегистрировать исключение с помощью stacktrace? Сколько памяти использует каждая версия? – doctorlove

ответ

0

Если вы можете получить трассировку стека после сбоя, вы можете позже ее описать. Например, на MacOS есть инструмент atos, который, в соответствии с man страницы:

преобразует числовые адреса их символические эквиваленты.

Это позволит вам работать без символов, но использовать их позже.

+0

Для инструментальной цепочки GNU эквивалент будет 'addr2line '. Это, однако, только частично связано с вопросом. – keltar

Смежные вопросы