VB6 - 通过注册表设置调试模式?

时间:2013-04-16 13:51:57

标签: debugging logging vb6

我有一个VB6应用程序,我试图以不同的方式注销。我所拥有的是注册表(现有)中的一个标志,它指出应用程序是否设置为调试模式以便它将注销。

在我的代码中,我有很多if语句检查是否为真。这意味着有很多处理时间检查语句是否为真,这可能不是真的,但是因为它经常这是我想减少的开销。

代码中充满了像这样的语句

If isDebug = True Then
    LogMessage("Log what is happening")
End If

所以我正在寻找的是更好的方法。我知道我可以在Project Properties中设置调试模式 - > Make,但这需要在构建.exe之前设置,我希望能够通过注册表项在生产中设置它。

4 个答案:

答案 0 :(得分:3)

考虑使用命令行参数来设置调试模式。我曾经这样做过。

Dim sCommandLine() As String
sCommandLine = Split(Command$)
For I = 0 To UBound(sCommandLine)
    ' do something with each arg
Next I

您还可以在IDE中保留命令行参数,以便在调试时始终拥有它们。在IDE外部运行时,使用其中的参数创建编译应用程序的快捷方式。

答案 1 :(得分:1)

我在很多代码中做了几乎与你的想法相同的事情。加上这个:

Sub LogDebug(ByVal strMsg As String)
    If (isDebug) Then
        LogMessage(strMsg)
    End If
End Sub

然后只需在主程序体中调用LogDebug,或者直接调用LogMessage,无论调试标志如何,都可以直接调用{<1}}。

我假设isDebug在这里是一个布尔值。如果它是一个函数调用,您应该只创建一个在代码开头设置的全局标志,并检查它而不是一遍又一遍地查看注册表。我不认为检查布尔值是一个很大的处理负载,是吗?

答案 2 :(得分:0)

如果设置了运行时标志,则要调用函数。我能看到的唯一可能更快的是:

If isDebug Then
    LogMessage("Log what is happening")
End If

但我怀疑这两者都是性能问题的原因。大多数日志记录框架都会提升代码,甚至将标志/日志级别作为参数添加到函数中。请确保您没有其他地方在条件语句之外不必要地计算日志消息。

您可以评估需要记录的原因以及生成的日志是否有效。

如果您正在寻找可以使用VB错误处理捕获的问题,请考虑使用HuntERR31这样的错误处理库。有了它,您可以选择仅记录错误,而不是您正在执行的调试消息。即使您不使用该库,文档也可以很好地描述VB中的错误处理。

答案 3 :(得分:0)

另一个答案仍然是:

将您的注册表标记读入您的应用程序,以便它是基于会话的事物(即,当您关闭并重新启动应用程序时,将再次检查标记 - 每次测试都无法检查注册表。)

然后(根据Tom的帖子)将值赋给全局变量并测试它 - 远比函数快。

要加快日志记录速度,您可能需要考虑在应用程序中标注字符串缓冲区的尺寸,一旦达到特定大小,就将其激活到日志文件中。显然这种方法存在某些问题,即内存的波动性,但如果你想要性能优于磁盘访问,我会推荐这样的方法。

如果您可以向我们展示一些日志记录过程的代码等,这当然会容易得多。

相关问题