HOW-TO: Программа на Си. Часть 6 Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
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}}