[содержание] [назад] [пред] [вверх] [след] [вперед] 4. навигация по исходному кодув данной главе обсуждается, как получить доступ к исходному коду из ddd. 4.1 компиляция для отладкичтобы эффективно отлаживать программу, вам необходимо сгенерировать при компиляции отладочную информацию. эта отладочная информация записывается в объектном файле; она описывает тип данных каждой переменной или функции и соответствие между номерами строк в исходном тексте и адресами в исполняемом файле.(9)
чтобы затребовать создание отладочной информации, укажите при запуске
компилятора ключ
многие компиляторы си не могут одновременно обрабатывать ключи
@acronym{gcc}, компилятор си gnu, поддерживает ключ
когда вы отлаживаете программу, скомпилированную с 4.2 открывание файловесли вы запустили ddd, не указав отлаживаемую программу, вы можете использовать меню `file' для открывания программ, дампов памяти и исходных файлов. 4.2.1 открывание программчтобы открыть программу для отладки, выберите `file => open program'.(10) чтобы открыть программу, щелкните на `open'. если вы отлаживаете в jdb, выберите `file => open class'. вы получите список доступных классов.
чтобы открыть программу или класс, которые вы уже недавно отлаживали, выберите `file => open recent' и укажите программу или класс из списка. см. раздел 4.3.4 указание каталогов с исходными файлами, как задать каталоги исходных файлов, если исходные файлы не найдены. 4.2.2 открывание дампов памятиесли предыдущий прогон программы завершился крахом, и вы хотите выяснить почему, вы можете исследовать в ddd дамп памяти этой программы.(11) чтобы открыть дамп памяти программы, выберите `file => open core dump'. для открывания дампа щелкните на `open'. перед использованием `open core dump' вы должны сначала выбрать `file => open program' и указать программу, которая сбросила дамп, и загрузить ее таблицу символов. 4.2.3 открывание исходных файловчтобы открыть исходный файл отлаживаемой программы, выберите `file => open source'.
чтобы открыть исходный файл, щелкните на `open'. см. раздел 4.3.4 указание каталогов с исходными файлами, если исходные файлы не найдены. 4.2.4 фильтрация файловкогда ddd предоставляет список файлов для выбора, при открывании исполняемых файлов, дампов памяти или исходных файлов он по умолчанию фильтрует файлы, так что показываются только подходящие. для этого ddd должен открывать каждый файл, что может занять некоторое время. см. раздел 4.4.6 настройка фильтрации файлов, если вы хотите выключить эту возможность. 4.3 поиск объектовкогда исходный файл отлаживаемой программы становится доступен, в окне исходного кода показывается его текущий текст. (см. раздел 4.3.4 указание каталогов с исходными файлами, если исходный текст не найден.) в этом окне вы можете искать и исследовать определения функций и переменных, а также искать появления произвольного текста. 4.3.1 поиск определенийесли вы хотите найти определение какой-то конкретной функции или переменной, чье имя видимо в исходном тексте, щелкните на имени этой функции или переменной первой кнопкой мыши. имя скопируется в поле аргумента. измените его, если необходимо, и щелкните на кнопке `lookup', чтобы найти определение.
есть более быстрый способ: вы можете просто нажать на имени функции третью кнопку мыши и выбрать во всплывающем меню пункт `lookup'. другой способ, еще быстрее: чтобы найти определение функции, дважды щелкните на ее вызове (это идентификатор, после которого стоит знак `('). если исходный файл не найден, см. раздел 4.3.4 указание каталогов с исходными файлами, о том, как указать каталоги с исходными файлами. 4.3.2 текстуальный поискесли объект, который вы хотите найти, виден в исходном тексте, щелкните на нем первой кнопкой мыши. идентификатор будет скопирован в поле аргумента. потом щелкните на кнопке `find >>', чтобы найти следующие появления, или `find >> => find << ()', чтобы найти предыдущие появления. по умолчанию ddd находит только полные слова. для поиска произвольной подстроки измените значение параметра `source => find words only'. 4.3.3 поиск предыдущих позицийчтобы вернуться к начальной позиции после поиска, используйте `edit => undo' (или кнопку `undo' в панели команд). `edit => redo' возвращает снова к найденной позиции.
4.3.4 указание каталогов с исходными файламииногда в исполняемых программах не записываются каталоги исходных файлов, использовавшихся для компиляции, а записаны только имена файлов. даже когда каталоги записаны, со времени компиляции их могли переместить. ниже описан способ, который применяется в gdb для обращения к исходным файлам; другие подчиненные отладчики пользуются сходными методами. в gdb есть список каталогов, которые следует просматривать при поиске исходных файлов; он называется путем исходных файлов. каждый раз, когда gdb нужен исходный файл, он пробует все каталоги из этого списка, в том порядке, в котором они в нем записаны, пока не найдет нужное имя. заметьте, что путь исполняемых файлов не используется для этой цели. не используется и текущий рабочий каталог, если только он не окажется в пути исходных файлов. если gdb не может найти файл по пути исходных файлов, а в объектной программе записан каталог, тогда gdb пробует его. если путь исходных файлов пуст, а каталог компиляции не записан, gdb напоследок ищет в текущем каталоге. чтобы указать подчиненному отладчику путь исходных файлов, используйте `edit => debugger settings' (см. раздел 3.6.5 установки отладчика) и отредактируйте соответствующие поля (для gdb это `search path for source files'). если в `debugger settings' нет подходящего вхождения, вы можете задать путь исходных файлов при запуске ddd. см. раздел 2.1.4 ключи подчиненного отладчика, для получения подробностей.
при использовании jdb вы можете установить переменную среды
если ddd по какой-либо причине не находит исходный файл, проверьте такие варианты:
4.4 настройка окна исходного кодаокно исходного кода можно по-разному настраивать, в основном через `edit => preferences => source'.
4.4.1 настройка глифовтекущая выполняемая позиция и точки останова отмечаются в исходном тексте графическими символами (глифами). в качестве альтернативы, ddd может показывать такие позиции с помощью текстовых знаков. если вы хотите выключить глифы, установите параметр `edit => preferences => source => show position and breakpoints => as text characters'. это также слегка ускоряет работу ddd, особенно прокрутку. эта установка связана со следующим ресурсом:
вы можете более детально контролировать отображение глифов с помощью таких ресурсов:
4.4.2 настройка поискапоиск в исходном тексте (см. раздел 4.3.2 текстуальный поиск) управляется посредством следующих ресурсов, которые можно изменить через меню `source':
4.4.3 настройка вида исходного текстаddd может показывать в окне исходного кода номера строк. используйте `edit => preferences => source => display source line numbers'.
вы можете велеть ddd делать в исходном коде отступы, оставляя больше
места для точек останова и глифов выполнения. это делается с помощью
ползунка `edit => preferences => source =>
source indentation'. по умолчанию принимается значение
по умолчанию ddd использует минимальный отступ для языков сценариев.
максимальная ширина номеров строк контролируется следующим ресурсом.
если в вашем исходном коде ширина знаков табуляции отличается от восьми (как по умолчанию), вы можете установить другую ширину, используя ползунок `edit => preferences => source => tab width'.
4.4.4 настройка прокрутки исходного текстаследующие ресурсы говорят, когда прокручивается окно исходного кода:
4.4.5 настройка поиска исходных файловнекоторые варианты dbx и xdb неправильно обрабатывают пути в спецификациях исходных файлов. если вы хотите, чтобы подчиненный отладчик ссылался на исходные позиции только по базовым именам файлов, снимите установку `edit => preferences => source => refer to program sources by full path name'. с этим связан следующий ресурс:
по умолчанию ddd кеширует исходные файлы в памяти. это удобно для удаленной отладки, поскольку удаленный доступ к файлам может быть медленным. если вы хотите уменьшить потребление памяти, снимите установку `edit => preferences => source => cache source files'. с этим связан следующий ресурс:
4.4.6 настройка фильтрации файловвы можете указать ddd, следует ли фильтровать файлы перед открыванием.
[содержание] [назад] [пред] [вверх] [след] [вперед] |