Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #51, ФЕВРАЛЬ 2005 г.

Особенности национальной отладки

Крис Касперски ака мыщъх

Спецвыпуск: Хакер, номер #051, стр. 051-096-7


Вот протокол, полученный truss. Смотри, перед тем как умереть, программа открывает файл my_good_file, не находит его и, как следствие, сбрасывает кору впадая в нирвану. Разумеется, это простейший случай, но правило "десяти" гласит, что девяносто процентов времени отладки уходит на поиск ошибок, которые вообще недостойны того, чтобы их искали!

__sysctl(0xbfbffb28,0x2,0x2805bce8,0xbfbffb24,0x0,0x0) = 0 (0x0)

mmap(0x0,32768,0x3,0x1002,-1,0x0) = 671469568 (0x2805d000)

geteuid() = 0 (0x0)

getuid() = 0 (0x0)

getegid() = 0 (0x0)

getgid() = 0 (0x0)

open("/var/run/ld-elf.so.hints",0,00) = 3 (0x3)

read(0x3,0xbfbffb08,0x80) = 128 (0x80)

lseek(3,0x80,0) = 128 (0x80)

read(0x3,0x28061000,0x4b) = 75 (0x4b)

close(3) = 0 (0x0)

access("/usr/lib/libc.so.4",0) = 0 (0x0)

open("/usr/lib/libc.so.4",0,027757775600) = 3 (0x3)

fstat(3,0xbfbffb50) = 0 (0x0)

read(0x3,0xbfbfeb20,0x1000) = 4096 (0x1000)

mmap(0x0,626688,0x5,0x2,3,0x0) = 671502336 (0x28065000)

mmap(0x280e5000,20480,0x3,0x12,3,0x7f000) = 672026624 (0x280e5000)

mmap(0x280ea000,81920,0x3,0x1012,-1,0x0) = 672047104 (0x280ea000)

close(3) = 0 (0x0)

sigaction(SIGILL,0xbfbffba8,0xbfbffb90) = 0 (0x0)

sigprocmask(0x1,0x0,0x2805bc1c) = 0 (0x0)

sigaction(SIGILL,0xbfbffb90,0x0) = 0 (0x0)

sigprocmask(0x1,0x2805bbe0,0xbfbffbd0) = 0 (0x0)

sigprocmask(0x3,0x2805bbf0,0x0) = 0 (0x0)

open("my_good_file",0,0666) ERR#2 'No such file or directory'

SIGNAL 11

SIGNAL 11

Process stopped because of: 16

process exit, rval = 139

“…отладка подобна охоте или рыбной ловле: те же эмоции, страсть и азарт. Долгое сидение в засаде в конце концов вознаграждается. Очередной невидимой миру победой…” - (с) Евгений Коцюба.

Добротно сверстанная документация на GDB (на русском языке): www.linux.org.ru/books/GNU/gdb/gdb-ru.pdf.

Отличное руководство по внутреннему миру GDB (на английском языке). Очень помогает при доработке исходников: http://gnuarm.org/pdf/gdbint.pdf.

Статья про трассировку в Linux с примерами простейших трассировщиков (во FreeBSD иначе): http://gazette.linux.ru.net/lg81/sandeep.html.

Использование библиотеки CTrace для отладки многопоточных программ (на английском языке): www.linux-mag.com/2004-04/code_01.html.

Исследование и отладка ELF-файлов на i386-платформе без исходных текстов: www.sstic.org/SSTIC03/articles/SSTIC03-Vanegue_Roy-Reverse_Intel_ELF.pdf.

Назад на стр. 051-096-6  Содержание