#postgresql
#postgresql
Вопрос:
Я изо всех сил пытался создать posqlgresql 9.1 с включенными trace_locks, чтобы я мог проверить адреса памяти, используемые блокировками, но после нескольких дней усилий я все еще не добился никакого прогресса.
для компиляции:
./configure --prefix=/usr/local/pgsql --enable-depend --enable-cassert --enable-debug
make
make install
Согласно документации postgresql, LOCK_DEBUG должен быть установлен во время компиляции,
./configure --prefix=/usr/local/pgsql --enable-depend --enable-cassert --enable-debug LOCK_DEBUG='on'
но, похоже, это не работает.
Пожалуйста, помогите! Спасибо!!!
Ответ №1:
Я думаю, вы просто хотите получить -DLOCK_DEBUG
доступ к флагам компилятора, попробуйте сделать это так:
./configure
--prefix=/usr/local/pgsql
--enable-depend --enable-cassert
--enable-debug
CPPFLAGS='-DLOCK_DEBUG'
Я добавил обратную косую черту, чтобы ее было легче читать, вы можете использовать это, если хотите, чтобы все это было в одной строке:
./configure --prefix=/usr/local/pgsql --enable-depend --enable-cassert --enable-debug CPPFLAGS='-DLOCK_DEBUG'
Вы можете найти примеры подобных вещей в документации по установке, просто найдите «CFLAGS»:
Вы можете указать переменные среды в командной строке configure, например:
./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'
Комментарии:
1. @Peter: Спасибо (и спасибо за вашу работу над двумя моими любимыми проектами). Предположительно, для макроса тоже нет значения, просто проверка существования.
2. @jess: Большое спасибо за быстрый ответ!!! Я включил CPPFLAGS=’-DLOCK_DEBUG’ в сборку. но я все еще не вижу, чтобы что-то изменилось в файле postgresql.conf. Поэтому я добавил #trace_locks = true в postgresql.conf и перезапустил сервер. Я не вижу трассировку блокировки, которую я хочу получить из lock.c в моем файле журнала, когда я вставляю строку в таблицу (я изменил минимальный уровень ведения журнала на log, и все остальное регистрируется нормально, кроме трассировки журнала). Есть идеи??? Спасибо!!!
3. @Peter — эксперт, надеюсь, у него будет несколько советов.
4. @jess:
#trace_locks = true
означает, что он закомментирован, так что исправьте это.