[Содержание]   [Назад]   [Пред]   [Вверх]   [След]   [Вперед]  


C. Замечания о конфигурации

10.13 Использование DDD с GDB

Некоторые установки GDB крайне важны для корректной работы DDD. Вот эти установки и их правильные значения:

set height 0
set width 0
set verbose off
set prompt (gdb) 

DDD автоматически устанавливает эти значения при вызове GDB; если их изменить, возможны неполадки, особенно в отображении данных.

При отладке на уровне машинного кода с применением в качестве подчиненного отладчика GDB 4.12 или более раннего используйте команду `display /x $pc', чтобы гарантировать обновление значения счетчика инструкций при каждом останове программы. Можно также написать эту команду в `~/.gdbinit' или (даже лучше) поставить последнюю версию GDB.

10.14 Использование DDD с DBX

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

С некоторыми версиями DBX (в частности, с Solaris DBX) для правильной интерпретации вывода DBX DDD удаляет из него комментарии в стиле Си и Си++. Это также относится к выводу отлаживаемой программы, когда он посылается на консоль отладчика. Этих проблем можно избежать, используя отдельное окно выполнения.

В некоторых версиях DBX (а именно, DEC DBX и AIX DBX) нет автоматического отображения данных. В качестве альтернативы, DDD использует для доступа к данным команду DBX `print'. Это означает, что имена переменных интерпретируются в соответствии с текущим фреймом; переменные вне текущего фрейма не могут отображаться.

10.15 Использование DDD с Ladebug

Все ограничения DBX (см. раздел 10.14 Использование DDD с DBX) существуют и в Ladebug.

10.16 Использование DDD с XDB

В XDB нет автоматического отображения данных. Чтобы обойти это, DDD использует для доступа к данным команду `p'. Это означает, что имена переменных интерпретируются в соответствии с текущим фреймом; переменные вне текущего фрейма не могут отображаться.

10.17 Использование DDD с JDB

В JDB нет автоматического отображения данных. Чтобы обойти это, DDD использует для доступа к данным команду `dump'. Это означает, что имена переменных интерпретируются в соответствии с текущим фреймом; переменные вне текущего фрейма не могут отображаться.

Команды JDB `dump' и `print' не поддерживают вычисления выражений. Следовательно, вы не можете отображать произвольные выражения.

Разбор вывода JDB требует довольно много процессорного времени из-за распознавания асинхронных подсказок (любая нить может в любое время что-то напечатать, в том числе подсказки). Поэтому программа, которая много выводит на консоль, скорее всего сильно замедлит работу DDD. В этом случае запустите программу с ключом -debug в отдельном окне и подсоедините к ней JDB с помощью ключа -passwd.

10.18 Использование DDD с Perl

В Perl нет автоматического отображения данных. Чтобы обойти это, DDD использует для доступа к данным команду `x'. Это означает, что имена переменных интерпретируются в соответствии с текущим фреймом; переменные вне текущего фрейма не могут отображаться.

10.19 Использование DDD с LessTif

В DDD включены несколько хаков, позволяющих запускать DDD с LessTif, свободным клоном Motif, без потери функциональности. Поскольку двоичный файл DDD может быть динамически скомпонован и использован как с библиотекой OSF/Motif, так и с LessTif, эти хаки для Lesstif можно включать и выключать на время выполнения.

Включены ли хаки для Lesstif во время выполнения или нет, зависит от установки ресурса `lessTifVersion':

Ресурс: lessTifVersion (класс LessTifVersion)
Говорит номер версии LessTif, с которым запущен DDD. Для версии LessTif x.y значение x умножается на 1000 и добавляется y -- например, 79 обозначает LessTif 0.79, а 1005 обозначает LessTif 1.5.

Если значение этого ресурса меньше 1000, что указывает на LessTif 0.99 или более ранний, DDD задействует зависящие от версии хаки, чтобы обойти ошибки и недостатки LessTif.

Если DDD был скомпонован с LessTif, по умолчанию принимается значение макроса `LessTifVersion' из файла `<Xm/Xm.h>'. Если DDD скомпонован с OSF/Motif, по умолчанию принимается 1000, что выключает все специфичные для LessTif хаки.

Чтобы установить ресурс `lessTifVersion' во время запуска DDD и указать номер версии библиотеки LessTif, вы можете также использовать ключ --lesstif-version версия.

Принимаемое по умолчанию значение ресурса `lessTifVersion' определяется библиотекой LessTif, с которой DDD был скомпонован (или это 1000, при компиляции с OSF/Motif). Поэтому вам обычно не нужно беспокоиться о значении этого ресурса. Однако, если вы используете динамически скомпонованный двоичный файл DDD не с той библиотекой, с которой его компилировали, вы должны указать номер версии этой библиотеки используя этот ресурс. (К сожалению, DDD не может определять это во время выполнения.)

Вот некоторые сценарии для иллюстрации этой схемы:

  • Исполняемый файл DDD был скомпилирован с OSF/Motif, но вы вместо этого используете динамическую библиотеку LessTif 0.88. Вызывайте DDD с ключом --lesstif-version 88.
  • Исполняемый файл DDD был скомпилирован с LessTif, но вы используете динамическую библиотеку OSF/Motif. Вызывайте DDD с ключом --lesstif-version 1000.
  • Исполняемый файл DDD был скомпилирован с LessTif 0.85, и вы обновили его до LessTif 0.90. Вызывайте DDD с ключом --lesstif-version 90.

Чтобы выяснить, с какой версией LessTif или OSF/Motif был скомпилирован DDD, вызовите его с ключом --configuration.

В исходном коде DDD специфичные для LessTif хаки контролируются строкой `lesstif_version'.


[Содержание]   [Назад]   [Пред]   [Вверх]   [След]   [Вперед]  

Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости