0

我有一个在 Win Server 2016 中运行的 clarion 应用程序与一个 sybase 数据库通信,在过去的几周里,我们发现该应用程序在给定时间为不同的用户冻结。然而,用户可以这样离开会话并开始一个新的会话并且效果很好。已知用户在一台远程服务器或多台服务器上使用同一应用程序的多个实例。话虽如此,我想获得有关冻结的更多信息,并查看了系统中的应用程序事件日志,我看到 explorer.exe 崩溃,但这些与问题在某些时候发生的时间相关,但并非总是如此,检查了来自 Sybase 的数据库事务日志,我没有发现任何崩溃、错误或连接卡住。话说回来,

我很想知道我们可以用来收集 Windows 上冻结的 clarion 应用程序日志的任何应用程序/工具。也很高兴知道是否有人遇到过这种情况以及你们在哪里以及如何调查这个问题。

在此先感谢您的帮助。

4

1 回答 1

2

Clarion 的运行时库和数据库驱动程序需要持久连接。远程 ODBC 的正常断开连接可能会导致问题(包括应用程序挂起),除非您在 ABC 文件管理器级别对其进行测试并重新连接,或者使用类似的步骤进行测试和恢复。

如果您正在寻找有关驱动程序和 SQL 后端之间发生了什么的详细信息,我建议使用 Clarion 的数据库驱动程序跟踪工具。从帮助主题:“记录驱动程序 I/O 以进行调试”:

要在调试视图中查看跟踪详细信息,请将目标跟踪文件命名为“DEBUG:”

日志记录会打开指定的日志文件以进行独占访问。如果文件存在,则将新的日志数据附加到文件中。

按需记录

对于按需日志记录,您可以在程序中使用属性语法来有条件地打开和关闭各种级别的日志记录。日志记录对目标表和目标表为主表的任何视图都有效。

file{PROP:Profile}=Pathname   !Turns Clarion I/O logging on
file{PROP:Profile}="DEBUG:"   !Turns Clarion I/O logging on and 
                              !sends output via OutputDebugString()
                              !(viewable via debugview, etc)

file{PROP:Profile}=''         !Turns Clarion I/O logging off

PathName = file{PROP:Profile} !Queries the name of the log file

file{PROP:Log}=string         !Writes the string to the log file
file{PROP:Log}="DEBUG:"       !Writes the string to the log file

file{PROP:Details}=1          !Turns Record Buffer logging on

fFile{PROP:Details}=0         !Turns Record Buffer logging off

其中 Pathname 是要创建的日志文件的完整路径名或文件名。如果不指定路径,驱动程序会将日志文件写入当前目录。

您还可以使用 SEND() 命令和 LOGFILE 驱动程序字符串完成按需记录。有关详细信息,请参阅日志文件。

我经常使用的示例,这是基于上面的帮助:

SYSTEM{PROP:DriverTracing} = '1'
 CRMNotes{PROP:TraceFile} = 'DEBUG:'
 CRMNotes{PROP:Details}=1 
 CRMNotes{PROP:Profile}= 'DEBUG:' 
 CRMNotes{PROP:LogSQL} = 1
于 2017-12-06T01:44:07.367 回答