我正在尝试解决我无法访问的机器上的一些问题。这些问题非常断断续续,无法在本地重现。我正在考虑让他们安装 WinDbg,以便他们可以生成进程的堆栈跟踪/转储。这是最好的方法吗?你用什么方法来解决这样的问题?
4 回答
如果您正在使用 Windows 系统,您可以要求另一台机器的所有者允许您的机器远程桌面访问。这样一来,您就可以访问其他系统的所有详细信息,就像它是您自己的系统一样。如果您正在使用 linux 机器,您可以通过 ssh 客户端访问另一台机器的命令行,另一台机器的所有者必须授予用户 ssh 访问权限并告诉您该用户名和密码。然后通过进一步询问root密码,您可以在其他系统的命令行上工作,这在linux机器上是最强大的。
试试副驾驶
如果您可以将其构建到您的代码及其 Windows 中,您可以让它在崩溃时自动生成崩溃转储。为此,您必须编写自己的异常处理程序,并使用 SetUnhandledExceptionFilter API 函数挂钩它。然后,您的处理程序可以调用 MiniDumpWriteDump 为您写出一个小型转储。如果用户向您发送了 mini-dump,您可以将其加载到 windbg 并获取堆栈跟踪和其他信息(运气好)。
我过去曾成功使用过它,但它很棘手。特别是,您机器上的编译符号必须是分布式构建中的符号。
我最终创建了一个 .bat 文件,该文件使用 cdb.exe(包含在 WinDbg 中)来生成我需要的转储。它工作得很好,我永远不需要触摸远程机器。更好的是,用户不需要任何技术知识。只需安装 WinDbg 并运行 .bat 文件。