разработчикам

изменение Makefile.am для установки стартовый скриптов и конфигурационных

Tags: •  •  •  •  •  • 

разрабатывая проекты в kdevelop я столкнулся с невозможностью гуевыми средствами заставить configure генерировать Makefile который бы инсталировал стартовые скрипты и конфигурационные файлы. методом научного тыка такого удалось достич записав к Makefile.am следующие строки:

init_SCRIPTS = bcipserv.sh
initdir=/etc/init.d

mainconfdir=/etc
mainconf_DATA = bcipserv.conf

В результате при вызове make install файл bcipserv.sh падает в директорию /etc/init.d, а bcipserv.conf в /etc. По аналогии можно сделать установку необходимых файлов и в другие директории

создание собственных стартовый скриптов в debian

Tags: •  •  •  • 

для написания стартовых скриптов в debian по совету ramok можно использовать темплейт /etc/init.d/skeleton, предварительно прочитав /etc/init.d/README

Изображение пользователя ramok.

Модуль perl для отладочного вывода сложных типов данных

Tags: •  • 

Если вы пишите на perl что нибуть сложнее однострочников, часто спасательным кругом становится модуль Data::Dumper.
Этот модуль очень полезен как для отладки и так и при разборе чужих программ и позволяет выводить содержимое любых сложных стукрур данных со всем их содержимым.

Например разбираемся в программе и видим что из модуля возвращается массив @data в котором находятся нужные нам данные.
Выводим его с помощью

use Data::Dumper;
print STDERR Dumper @data;

и видим что то типа
$VAR1 = {
          'TS' => '13550361229',
          'INDEX' => 1,
          'FL' => 1,
          'TD' => '73728',
          'DT' => 'addr'
        };
$VAR2 = {
          'TS' => '13550484957',
          'INDEX' => 2,
          'TD' => '82944',
          'FR' => 1,
          'DT' => 'mps'
        };
...
$VAR346 = { 
            'TS' => '13619541826',
            'INDEX' => 346,
            'TD' => '89088',
            'FR' => 1,
            'DT' => 'mps_ack'
          };

Ага. Сразу видно что это массив из хешей, и сразу видно и размер массива, и ключи в хешах и что по ним находится.

Изображение пользователя ramok.

Как просмотреть все макросы по умолчанию определенные gcc

Tags: •  • 

Иногда полезно узнать какие макросы предоставляет gcc по умолчанию.

$ touch test.h ;gcc -v -E -dM test.h ; rm test.h
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure linux gnu
Thread model: posix
gcc version 4.3.1 20080309 (prerelease) (Debian 4.3.0-1) 
COLLECT_GCC_OPTIONS='-v' '-E' '-dM' '-mtune=generic'
 /usr/lib/gcc/i486-linux-gnu/4.3.1/cc1 -E -quiet -v test.h -mtune=generic -dM
ignoring nonexistent directory "/usr/local/include/i486-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/i486-linux-gnu/4.3.1/../../../../i486-linux-gnu/include"
ignoring nonexistent directory "/usr/include/i486-linux-gnu"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/lib/gcc/i486-linux-gnu/4.3.1/include
 /usr/lib/gcc/i486-linux-gnu/4.3.1/include-fixed
 /usr/include
End of search list.
#define __DBL_MIN_EXP__ (-1021)
#define __FLT_MIN__ 1.17549435e-38F
#define __DEC64_DEN__ 0.000000000000001E-383DD
#define __CHAR_BIT__ 8
#define __WCHAR_MAX__ 2147483647
...

Изображение пользователя ramok.

Чем отличаются уровни оптимизации -O в gcc?

Tags: •  • 

В gcc 4.3 появилась интересная полезность: у флажка --help появились параметры, один из который --help=optimizers выводит флажки оптимизации для текущих ключей.
Вот такой вот командой можно узнать чем например отличаются уровни отпимизации -O2 от -O3

$ diff -u <(gcc -c -Q -O2 --help=optimizers) <(gcc -c -Q -O3 --help=optimizers) | sed -ne 's/^+ //p'
 -fgcse-after-reload         		[enabled]
 -finline-functions          		[enabled]
 -fpredictive-commoning      		[enabled]
 -ftree-vectorize            		[enabled]
 -funswitch-loops            		[enabled]
$

Изображение пользователя ramok.

Работа с исходным кодом не выходя из gdb

Tags: •  •  •  • 

Команды удобные для работы с исходным кодом прямо из gdb.

1. Команда edit: редактировать файла на месте
Указать нужный редактор можно в переменной окружения EDITOR.
У меня указано в ~/.zshrc EDITOR=vim, и прекрасно все работает.

http://sourceware.org/gdb/current/onlinedocs/gdb_8.html#SEC54

2. Команда make: запуск make прямо из gdb
Удобно после подправки исходника, пересобрать проект.

http://sourceware.org/gdb/current/onlinedocs/gdb_3.html#SEC12

Изображение пользователя ramok.

Встроенный текстовый интерфейс в gdb

Tags: •  •  •  • 

В gdb существует встроенный текстовый интерфейс для отображения исходников, дизассемблированного кода и состояния регистров.
Для этого нужно запустить gdb с ключиком -tui или просто запустить gdbtui можно вызвать из командной строки gdb сочетанием клавиш ctrl-x a.

Есть возможность переключатся в одно и двух оконный режим. Клавиши ctrl-x 1 и ctrl-x 2 соответственно.
Подробности тут, хотя там больше особо интересного и нет Ж:-)

RSS-материал