Если вы запустите:
strings $INFORMIXDIR/lib/cli/libifdmr.so | grep _OdbcSetTrace
Вы видите какие-либо ссылки. Если нет, то библиотека без вспомогательных функций. Если вы видите это, описанный механизм должен работать. Если это не так, возможно, у вас есть отчетная ошибка.
На каком уровне вы пытаетесь отследить проблемы? И поскольку unixODBC работает, почему бы не использовать менеджер драйверов, который работает?
Я взял пример distsel.c из $ INFORMIXDIR / demo / cli и скомпилировал его в Solaris 10, используя CSDK 3.50.FC3. Я дошел до того, что соединение установилось успешно, но таблица «item» отсутствует в используемой мной базе данных, поэтому программа останавливает SQLExecDirect (). Когда я запускаю его в «truss» (эквивалент «strace» в Linux), я не вижу никаких свидетельств того, что код даже пытается открыть файл трассировки.
Я скомпилировал с помощью:
gcc -I$INFORMIXDIR/incl/cli distsel.c -DNO_WIN32 \
-L$INFORMIXDIR/lib/cli -lifdmr -lifcli -o distsel
Я использовал следующий файл .odbc.ini:
;
; odbc.ini
;
[ODBC Data Sources]
odbc_demo = IDS 11.50.FC3 stores on black
[ODBC]
Trace = yes
TraceFile = /tmp/odbc.trace
[odbc_demo]
Driver = /usr/informix/11.50.FC1/lib/cli/libifcli.so
Description = IBM Informix CLI 3.50
Server = black_19
FetchBufferSize = 99
UserName = jleffler
Password = XXXXXXXX
Database = stores
ServerOptions =
ConnectOptions =
Options =
ReadOnly = no
А вот этот:
;
; odbc.ini
;
[ODBC Data Sources]
odbc_demo = IDS 11.50.FC3 stores on black
[odbc_demo]
Driver = /usr/informix/11.50.FC1/lib/cli/libifcli.so
Description = IBM Informix CLI 3.50
Server = black_19
FetchBufferSize = 99
UserName = jleffler
Password = XXXXXXXX
Database = stores
ServerOptions =
ConnectOptions =
Options =
ReadOnly = no
Trace = yes
TraceFile = /tmp/odbc.trace
Следовательно, я полагаю, вы нашли ошибку. Я не уверен, есть ли ошибка в FAQ, на который вы ссылались, или в продукте - я склонен думать о последнем. Вы должны сообщить об этой проблеме в службу технической поддержки IBM. (Я не проверял руководство по Informix CLI (ODBC); возможно, стоит проверить это перед попыткой сообщить об ошибке продукта; если руководство указывает, что Trace не работает, и, возможно, если оно не указывает, что оно работает работать, то есть ошибка на странице FAQ, которую вы перечислили.)
Если вы хотите посмотреть данные SQL, часть FAQ по SQLIDEBUG работает:
SQLIDEBUG=2:distsel ./distsel
Это сгенерировало для меня файл distsel_6004_0_102d40 - он будет другим для вас. Затем вы можете использовать утилиту sqliprint для просмотра данных, передаваемых между клиентом и сервером.
Если вы не можете найти 'sqliprint', вернитесь ко мне.