LINUX.ORG.RU

Избранные сообщения Vlad-76

Отдебажить где именно произошла ошибка разыменования ссылки в perl

Форум — Development

Предположим есть такой код (добавил нумерацию строк для наглядности)

1:  use strict;
2:
3:  my %a = (
4:     a => 12,
5:     b => '',
6:     x => { z => 22 },
7:     l => 'sd'
8:  );
9:
10: my %c = (
11:    f => 'test',
12:    b => $a{b}{c},
13:    g => $a{a},
14:    d => $a{x}{z},
15: );

он выдает такую ошибку: Can't use string ("") as a HASH ref while "strict refs" in use at /tmp/t.pl line 15. Из него совершенно неочевидно где именно произошла ошибка. Если структура %c будет ещё сложнее и длиннее, то поиск ошибки вообще превратится в боль. Можно ли как-то сделать, чтобы perl явно показал, что проблема в данном случае в $a{b}{c}?

 ,

Olegymous
()

Это рассинхронизация массива?

Форум — Admin

Здравствуйте, форумчане. Похоже, запустил систему без одного диска (кабель выпал). Подключил его обратно, и теперь массив не стартует. Запустил его сам: mdadm --assemble --readonly --force --name --scan. Теперь он отображается в /proc/mdstat как неполный:

6442186752 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/3] [_UUU]

На всех трёх ЖД, которые рабочие, запускал mdadm --examine УСТРОЙСТВО, и на последней строчке массив так же отображается как неполный: Array State : .AAA ('A' == active, '.' == missing, 'R' == replacing). А вот у виновника эта строчка гласит, что массив полный: Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing).

Как так, это глюк какой-то? Чтобы его вернуть назад, его нужно удалить из массива и снова добавить? Стоит ли сначала проверить контрольные суммы, или это бесполезно? Сами данные вроде целые, файловая система проходит проверку и монтируется.

 

fingolfin
()

как правильно линковать в make?

Форум — Development

есть пакет в Debian из репозитория libssh2-1 создающий в /usr/lib/x86_64-linux-gnu/
соответственно
libssh2.a
libssh2.so
libssh2.so.1
libssh2.so.1.0.1

он кривой, скачал с исходника последнуюю версию, сделал конфиг и мейк, без мейк инсталл, как прилинковать эту библиотеку при компиляции, т.к. то что делаю ниже все равно почему то тянет старую версию, приходится просто подменять файл libssh2.so.1.0.1 в /usr/lib/x86_64-linux-gnu/

g++ -o AddWork AddWork.cpp -L./ibpp/core -lfbclient -libpp -DIBPP_LINUX -L./libssh2-1.8.2/src -lssh2-1.8.2-ssl-dbg

 

wolverin
()