我尝试跟踪ODBC功能的电话从我的程序工作上的Linux。这个程序动态链接ODBC管理并随后连接到数据库和获取某些数据。

我可以追踪ODBC话与unixODBC通过添加到odbcinst.ini:

[ODBC]
Trace=yes
TraceFile=/tmp/sql.log

这种方法记录的IBM: 收集的数据对于ODBC问题

但是,当我改变管理从unixODBC到Informix自己的管理(libifdmr.因此),跟踪文件的不是创造。任何人都成功地获得ODBC跟踪从Informix管理(和司机)在Linux上?

客户的版本:CSDK3.50UC3

我希望它是不是一个错误的和什么是错的我的配置。

作为unixODBC:我不能使用unixODBC在多线程的应用程序。我使用连接池和我的应用程序segfaulted时断线是从另外一个线程于连接。它还要慢得多,在多线程的应用程序。

有帮助吗?

解决方案 2

我ODBC跟踪,在我的odbc.ini这些设置:

[ODBC]
TRACE=1
TRACEFILE=/tmp/odbc_trace.txt
TRACEDLL=idmrs09a.so

我从IBM Informix ODBC驱动程序程序员手册版本3.50复制它们。 所以其他IBM文件似乎不是有效的,而那些设置在ODBC.INI而不是ODBCINST.INI并且必须设置这是不是在文件“为一个ODBC问题收集数据。”

提到TRACEDLL

更新: 看来IBM改变了文档:有上TRACEDLL信息,但仍ODBCINST.INI

其他提示

如果您运行:

strings $INFORMIXDIR/lib/cli/libifdmr.so | grep _OdbcSetTrace

你能看到的任何引用。如果没有,那么该库是不支持的功能。如果你看到的是,列出的机制应该工作。如果没有,你可能有一个报告错误。

什么水平,你想跟踪的问题是什么?而且,因为unixODBC的工作,为什么不使用驱动程序管理器,它的工作?


我已经采取从$ INFORMIXDIR /演示/ CLI中的示例distsel.c和使用CSDK 3.50.FC3编译它在Solaris 10。我把它拿到的地方连接成功了点,但表“项目”在我使用的数据库丢失,所以程序停止SQLExecDirect的()。当我在“桁架”(在Linux“strace的”等价)运行它,然后我看不出代码的证据,甚至试图打开跟踪文件。

我使用编译:

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

因此,我相信你已经发现了一个bug。我不知道该错误是否是你所引用的FAQ或产品 - 我倾向于认为是后者。你应该将问题报告给IBM技术支持。 (我没有检查的Informix CLI(ODBC)手册;它可能是值得检查之前试图提交产品的错误;如果说明书表明,跟踪不工作,也许,如果它并不表明它确实工作,再有就是在你列出的常见问题解答页面错误。)

如果您想看到的SQL数据,常见问题解答的SQLIDEBUG部分作品:

SQLIDEBUG=2:distsel ./distsel

这是生成的文件distsel_6004_0_102d40我 - 它会为你不同。然后可以使用“sqliprint”实用程序以查看客户机和服务器之间的数据流动。

如果你不能找到 'sqliprint',拿回来给我。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top