Как можно построить postgresql с включенным LOCK_DEBUG?

#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 означает, что он закомментирован, так что исправьте это.