Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
fullcircle:22:программа_на_си_ч6 [2010/04/12 23:46] |
fullcircle:22:программа_на_си_ч6 [2010/04/14 00:30] (текущий) |
||
---|---|---|---|
Строка 86: | Строка 86: | ||
</code> | </code> | ||
мы можем найти следующий кусок (некоторые пробелы пропущены): | мы можем найти следующий кусок (некоторые пробелы пропущены): | ||
- | **strlen("www.google.com") = 14*dcgettext(0, 0x8075c8a, 5, 0x804e66d, 0xbf8e1761) = 0x8075c8a*getaddrinfo("www.google.com", NULL, 0xbf8e1780, 0xbf8e17b4) = 0*calloc(1, 20) = 0x909c1e0*malloc(96) = 0x909c1f8*freeaddrinfo(0x909c100) = <void> | + | **strlen("www.google.com") = 14*dcgettext(0, 0x8075c8a, 5, 0x804e66d, 0xbf8e1761) = 0x8075c8a*getaddrinfo("www.google.com", NULL, 0xbf8e1780, 0xbf8e17b4) = 0*calloc(1, 20) = 0x909c1e0*malloc(96) = 0x909c1f8*freeaddrinfo(0x909c100) = <void> ** |
- | ** | + | |
Это то, что ltrace видит на этапе разрешения имени (DNS), рассмотренном нами ранее с помощью strace. Все сетевые коммуникации скрыты за простым вызовом 'getaddrinfo()'. | Это то, что ltrace видит на этапе разрешения имени (DNS), рассмотренном нами ранее с помощью strace. Все сетевые коммуникации скрыты за простым вызовом 'getaddrinfo()'. | ||
Я надеюсь, что теперь вы оценили значение strace и ltrace. Они позволяют вам изучить внутреннее устройство исполняемых файлов - без дополнительных усилий - с одной лишь разницей: выполнение происходит немного медленнее, это позволяет вам понять, что делает приложение, и где что-то пошло не так. | Я надеюсь, что теперь вы оценили значение strace и ltrace. Они позволяют вам изучить внутреннее устройство исполняемых файлов - без дополнительных усилий - с одной лишь разницей: выполнение происходит немного медленнее, это позволяет вам понять, что делает приложение, и где что-то пошло не так. | ||
Строка 190: | Строка 189: | ||
=====Выводы===== | =====Выводы===== | ||
В этой статье я рассказал об утилитах, позволяющих легко найти и устранить неисправности в исполняемых файлах, без необходимости иметь их исходники или дополнительные знания о файлах. В следующий раз мы попытаемся немножко углубиться и затем посмотрим на настоящий отладчик. | В этой статье я рассказал об утилитах, позволяющих легко найти и устранить неисправности в исполняемых файлах, без необходимости иметь их исходники или дополнительные знания о файлах. В следующий раз мы попытаемся немножко углубиться и затем посмотрим на настоящий отладчик. | ||
- | |||
=====Упражнения:===== | =====Упражнения:===== | ||
- | • vmstat - утилита, печатающая отчёт об использовании виртуальной памяти; используя strace, определите, какие файлы из /proc/ используются при генерации вывода. | + | * vmstat - утилита, печатающая отчёт об использовании виртуальной памяти; используя strace, определите, какие файлы из /proc/ используются при генерации вывода. |
- | • Повторите пример с ltrace/strace и wget, но с неправильным URL. Чей вывод позволит быстрее определить, что выведена неправильная DNS-запись? | + | * Элемент ненумерованного спискаПовторите пример с ltrace/strace и wget, но с неправильным URL. Чей вывод позволит быстрее определить, что выведена неправильная DNS-запись? |
- | • Прочтите man-страницу strace. Проследует ли strace автоматически в дочерний процесс? Какие меры вы должны принять при трассировке многопоточных приложений? | + | * Прочтите man-страницу strace. Проследует ли strace автоматически в дочерний процесс? Какие меры вы должны принять при трассировке многопоточных приложений? |
- | • Трассирует ли автоматически valgrind дочерние процессы? | + | * Трассирует ли автоматически valgrind дочерние процессы? |
- | • Попробуйте запустить valgrind с какой-нибудь из ваших любимых утилит командной строки. И проверьте, правильно ли она управляет памятью. | + | * Попробуйте запустить valgrind с какой-нибудь из ваших любимых утилит командной строки. И проверьте, правильно ли она управляет памятью. |
- | • Какие ещё утилиты являются частью набора valgrind, и как они могут вам помочь в написании высококачественных приложений? | + | * Какие ещё утилиты являются частью набора valgrind, и как они могут вам помочь в написании высококачественных приложений? |
---- | ---- | ||
Строка 217: | Строка 215: | ||
</style> | </style> | ||
- | {{tag>howto Си Програмирование Full_Circle}} | + | {{tag>howto Си Программирование Full_Circle}} |