我有一个 PowerBuilder 项目调用我的 .Net 类库暴露给 COM。我是 PowerBuilder 的新手,刚开始接触它。我想为我的 COM 调用创建一些简单的测试,我已经找了很长时间,但找不到任何类似于 VS 诊断方法的东西。
这个功能存在吗?
非常感谢!
您可以通过 Windows 调试 API 记录消息,然后使用合适的查看器可以看到您的消息。
我假设您想编写自定义数据,而不仅仅是执行的行(遗憾的是,这是您从 PBDEBUG 获得的所有内容;我一直想要将自定义数据写入 PBDEBUG 跟踪,但我一直无法说服Sybase 的任何人都可以将其添加到产品中)。
全氟化碳
PFC 提供执行此操作的调试服务,但如果您尚未使用 PFC 构建您的应用程序,则可能需要适度的努力才能使其适应您的基础架构。如果你有一个基于 PFC 的应用程序,你所要做的就是
of_SetDebug (TRUE)
在应用程序管理器的 pfc_Open 事件中(或其他一些合适的地方),然后开始用
填充你的代码IF IsValid (gnv_App.inv_Debug) THEN gnv_App.inv_Debug.of_Message (...)
这样,您只需删除 of_SetDebug() 即可关闭消息传递,而无需删除所有消息的代码。 (好吧,理论上这会稍微减慢你的应用程序,检查是否 IsValid () 一直。)我什至输入代码以便我可以使用命令行选项打开调试服务(我不不要告诉用户)。这样,我就可以在最终用户的工作站上进行这种类型的故障排除(假设我已经预料到了我需要写入的数据)。
其他
如果我坚持使用非 PFC 应用程序,恐怕我通常太匆忙(阅读:太懒惰)来适应 PFC 调试服务,所以我只是创建一个全局函数来执行 FileOpen、FileWrite 和FileClose 在一个硬编码的文件名上,写入作为参数传入的消息。然后我通过调用这个函数来加载我的代码。从理论上讲,您可以在部署时将其设为空函数,但我通常会删除所有调用。
您可以使用“/pbdebug”运行时开关,它会创建一个日志文件。除了您必须滚动自己的日志记录之外,众所周知,PB (IMO) 很难执行单元测试。
你在为 .NET 目标编译吗?
在那种情况下,您应该能够使用您的 .NET 函数:
#if defined PBDOTNET
System.Diagnostics.Debug.WriteLine( .. )
#endif