19 октября 2011 г.

Хокку от меня :)

у начальника префектуры - музыкальный инструмент с мехами и кнопками,
у специалиста по механизмам - с клавишами.
мы сильно устали и хотим всех вертеть на горе Фудзияма

моя знакомая гейша из бедной семьи,
навещает меня, чтобы омыться в хижине для дзена.
когда омываю ее белоснежный стан, хочется делать отроков.

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

вышел самурай на порог своего жилища.
что-то беспокоит его пониже чёрного пояса.
сунул руку - неожиданная пропажа! потерял равновесие.

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

самурай на посту, а самурай на посту?!
совершите отдолжение мне, приличной гейше!
соедините пуговицей мой срамной орган с вашим головным убором!

из-за зарослей сакуры, из-за горы Фудзи, 
показал простолюдин орудие для рубки бамбука. 
не все догадались, к чему был привязан предмет. ​ ​

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

полюбила водителя железного коня.
посидела с ним на склоне Фудзи.
о боги! целый день мне не было покоя от зловоний!

13 октября 2011 г.

дамп процесса с помощью GDB под Linux

Старая тема с VBto на иной лад старая тема была здесь: "взлом" результатов программы VBto дампингом памяти
так вот, дамп памяти можно произвести отладчиком, без вспомогательных программ из интернета

первым делом, узнаём номер процесса, к которому нужно прицепиться gdb:

ps -ef |grep nameOfYourProcess

левая колонка с номером покажет на номер процесса. затем вызываем отладчик, если номер нужного процесса 2575

gdb -q – 2575

после этого из консоли отладчика

(gdb) generate-core-file

"открепиться" от процесса

(gdb) detach

и выйти из дебаггера


(gdb) quit

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


strings core.2575 > core.txt

успехов!

10 октября 2011 г.

нахождение потенциальных проблем "undefined symbol" в бинарниках

Ранее мной был написан скрипт для нахождения бинарников, к которым нет внешних библиотек. Но есть еще минимум одна неприятность, это устаревшие библиотеки. К примеру, бинарник компилировался с новейшей версией, а в дистрибутиве по недосмотру, или какой другой причине, была установлена старая версия. В этом случае программа может вывалиться с сообщением undefined symbol:
kdevelop: symbol lookup error: /usr/lib/kde4/kdevcmakemanager.so: undefined symbol: _ZN16CMakeParserUtils13includeScriptERK7QStringN8KDevelop22ReferencedTopDUContextEP16CMakeProjectDataS2_
На первый взгляд, не совсем понятно, что за символ такой, и к чему он принадлежит.
Но в Linux есть утилиты binutils, среди которых есть программка c++filt, которая, собственно, и может декодировать такие символьные строки.

c++filt _ZN16CMakeParserUtils13includeScriptERK7QStringN8KDevelop22ReferencedTopDUContextEP16CMakeProjectDataS2_

результат выполнения:
CMakeParserUtils::includeScript(QString const&, KDevelop::ReferencedTopDUContext, CMakeProjectData*, QString const&)

Ранее написанный скрипт здесь можно расширить для поиска таких бинарных файлов.

Применять для фильтрации "undefined symbol" можно командой

ldd -d -r nameOfBinFile

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

ссылка на документ c++filt: link