我注意到客户方面的一个错误,我无法重现。它与99%的MS SQL Server Windows身份验证相关联。
如果涉及Windows身份验证,如何调试应用程序?
是否可以(如果是的话)使用远程调试器(我从未尝试过)?
作为替代方案,我可以做一个特殊的构建,记录文件中的错误。
答案 0 :(得分:2)
始终使用完整的堆栈跟踪记录错误,以便准确了解错误发生的位置。您可以使用MadExcept之类的东西,它允许用户向您发送错误日志,并在发生时附加所有相关数据。
调试Windows API错误时,单个相关信息是API本身返回的API返回码,或者您可以通过GetLastError函数获取它。成功通常为零(但不总是)并且错误一些正整数(DWORD)代码。只看MSDN意味着什么。你继续从那里开始。我很确定只是返回错误代码本身会给你足够的信息(以及你的堆栈跟踪等......)关于错误。
如果不是,则需要更详细的分析。然后,您可以尝试复制用户环境或远程调试应用程序。
哦,请注意,Windows API不会引发异常。如果您认为有必要,您有责任自行检查返回代码并提出异常。它是一种旧式的“C功能型”编程。
编辑:
如果您正在寻找一个简单而免费的解决方案,您可以查看我自己的日志记录解决方案SimpleLog。但MadExcept更好,并且有很多不同的选择。
答案 1 :(得分:1)
您可以使用远程调试器来调试在与IDE不同的主机上运行的应用程序,但它需要:
如果您的客户允许远程调试器是一个选项。恕我直言,有一个应用程序切换(命令行参数,注册表项等)总是一个好主意,它允许在需要时详细记录登录错误(但要注意安全性)。
另一个选择是使用OutputDebugStr,然后使用像SysInternals这样的工具。 DebugView获取输出。还有一个单元可以将输出写入SysInternal的Process Monitor。