Linux программирование в примерах
Шрифт:
Управляющая строка состоит из набора опций и аргументов. Каждая группа опций и аргументов отделяется от других символом двоеточия. Каждая опция представлена одной буквой, а аргументы этой опции отделяются от нее запятыми. Например:
Опция
Следующий список опций и аргументов воспроизведен из руководства библиотеки
Разрешает вывод от макросов с указанными ключевыми словами. Пустой список ключевых слов предполагает, что выбраны все ключевые слова.
Помечает каждую строку вывода отладки именем исходного файла, содержащего макрос, осуществляющий вывод.
Идентифицирует процесс, выводящий каждую отладочную или трассировочную строку номером ID для этого процесса.
Помечает каждую строку вывода отладчика номером строки исходного файла, в котором находится осуществляющий вывод макрос.
Перенаправляет поток вывода отладчика в указанный файл. Потоком вывода по умолчанию является
Включает трассировку потока управления функций. Максимальная глубина вложения определяется
Для завершения нашего обсуждения вот остальные макросы, определенные библиотекой
Этот макрос похож на
Это значение типа
Этот макрос заключает в оболочку вызов
Этот макрос выталкивает из стека один уровень сохраненного состояния отладки, созданный макросом
Этот
В другом воплощении, в первой начинающей компании, для которой мы работали [177] , мы использовали в своем продукте библиотеку
177
Хотя нам следовало бы усвоить свой урок после первой компании, мы перешли ко второй. С тех пор, как мы это выяснили, мы обычно избегаем начинающие компании. Ваша выгода, конечно, может меняться — Примеч. автора.
Чтобы извлечь максимальную выгоду от библиотеки
Мы нашли, что библиотека
15.5.2. Отладчики выделения памяти
Игнорируя такие проблемы, как плохой дизайн программы, для любого крупномасштабного практического приложения единственной сложной задачей программиста на С является управление динамической памятью (посредством
Этот факт подкреплен большим количеством инструментов, доступных для отладки динамической памяти. Имеется значительное перекрывание того, что предлагают данные утилиты. Например:
• Обнаружение утечек памяти: память, которая выделяется, а затем становится недоступной.
• Обнаружение не освобождаемой памяти: память, которая выделяется, но никогда не освобождается. Не освобождаемая память не всегда является ошибкой, но определение таких случаев дает вам возможность проверить, что с ними все в порядке.
• Обнаружение неправильных освобождений: память, которая освобождается дважды, или функции