Как получить как можно больше от dbx
Я ежедневно делаю TDD для моей разработки C++ на Solaris10. Это значительно сократило время, которое мне приходится тратить на использование моего отладчика, но иногда это единственный вариант.
DBX довольно мощный, но не такой удобный для пользователя. Обратите внимание, что я говорю о консоли DBX, а не о графическом интерфейсе SunStudio для DBX).
Какие лучшие советы по производительности вы можете дать для отладки dbx C++?
PS. Смена отладчика не вариант.
4 ответа
Я отметил несколько сайтов, связанных с dbx. Вот они, в произвольном порядке, если они могут быть вам полезны:
- Почему dbx не может найти мою функцию?
- Онлайн-справка для отладчика Dbx
- Sun Studio: отладка многопоточного приложения с dbx
- GDB против DBX: отображение команд и сравнение функций
- Импорт отладочной информации в dbx
- командная строка dbx: больше источников
- Sun Studio C++ - Ваш.dbxrc (примечание: адаптируйте целочисленный тип, используемый для приведения указателей, в соответствии с размером указателя)
- Sun Studio: исследование утечек памяти с помощью dbx
- Sun Studio: сбор данных о выделении / утечке памяти из запущенного процесса
РЕДАКТИРОВАТЬ на 19 июля 2012 года: я пытался исправить несколько ссылок, так как блог Криса Квинеля переехал. К некоторым статьям все еще можно получить доступ благодаря машине обратного хода.
Одной из мощных функций dbx является встроенный ksh. Вы можете написать функции оболочки, которые являются настолько сложными, насколько это возможно, для печати настраиваемых представлений структур данных или следования указателям по определенному маршруту. Оболочка - это старая разновидность pdksh, поэтому она не самая лучшая для программирования, но гораздо лучше, чем отсутствие встроенного языка. Существует также обширная помощь, доступная из командной строки. Одним из способов поиска справки является использование "vi $helpfile" из командной оболочки dbx. Это позволяет редактировать необработанные данные справочного файла в одном большом файле. Вы можете увидеть некоторые примеры функций оболочки в файле dbxrc, который поставляется с dbx и загружается по умолчанию. Вы можете увидеть более сложный пример, посмотрев на модуль интеграции libumem. Вы можете найти это здесь:
http://blogs.oracle.com/quenelle/entry/using_dbx_and_libumem_to
Я тоже должен использовать dbx на работе и понимать твои разочарования!
Я обнаружил несколько советов, которые делают мою жизнь немного проще:
Используя встроенную систему команд, как это: когда остановите {напечатайте что-нибудь; }
Очевидно, что не работает, когда что-то выходит за рамки, но я нахожу это достаточно полезным. Мне еще предстоит испытать большую радость от объекта "след", YMMV.
Создание собственного файла.dbxrc значительно облегчает жизнь, равно как и функция "pathmap".
Наконец, это очевидно только в том случае, если вы уже это знаете, но попробуйте руководство Sun.
Это не особенно хорошо написано, но все же необходимо прочитать.
Спасибо Люку Эрмитту! Вот обновленная версия его ссылок и некоторых других.
- Почему dbx не может найти мою функцию?
- Sun Studio: отладка многопоточного приложения с dbx
- Импорт отладочной информации в dbx
- командная строка dbx: см. больше источника
- Sun Studio: исследование утечек памяти с помощью dbx
- Sun Studio: сбор данных о выделении/утечке памяти из запущенного процесса
- Проверка утечки памяти с помощью libumem (если вы используете dbx, возможно, вы захотите узнать о libumem)
- Использование dbx с libumem (существенный пример скрипта dbx)
- Как использовать счетчики с точками останова
- Добавление автоматических симпатичных принтеров в dbx
- Oracle: начало работы с dbx 12.3
- Oracle: Руководство по dbx 12.2
Дополнительные советы:
- dbx имеет встроенную оболочку ksh, поэтому вы можете создавать мощные настраиваемые функции.
- Вы можете получить простую трассировку с чем-то вроде:
- когда в foo.cc:35 { print varname; }
- просмотреть всю интерактивную справку, используя: vi $helpfile