我的实际目标是找出导致 HP ProBook 450 G3 大约一周出现一次死机的原因(除了电源按钮外,对任何按键均无反应;但是有明显的活动,并且冷却器实际上变得比平均水平更活跃)。但我意识到,以这种形式提出的问题非常笼统,可能有几十种非常不同的原因。所以我决定具体询问是否有某种工具可以用来窥视系统内部 - 找出正在运行的进程等。
如果它是一台 Android 平板电脑,我会知道该尝试什么:通过 USB 将它连接到一台健康的计算机并运行 adb;如果设备可见,那么我就可以使用 logcat。
所以我的问题只是这个:是否有类似于 adb 的工具可以在两个 Windows 系统之间运行?
我在这里发现的一个相关问题是使用 WinDbg“闯入”严重挂起的内核崩溃并查看发生了什么?;它没有答案,但在问题本身中提到了 WinDbg。如果我理解正确的话,这在这里没有帮助,因为 WinDbg 是在同一台机器上安装和运行的。或者有没有办法将 WinDbg 用作两台机器之间的调试桥?
另一个相关问题是当任务管理器也冻结时(直到 Windows 解冻),如何找到冻结 Windows 10 的罪魁祸首?,它有一个答案,但这对我也没有什么帮助——它建议像一直运行任务管理器这样的操作,即不涉及其他计算机,并且对于很少发生的冻结来说是不切实际的。
答案1
答案取决于你想做什么:
用户空间 - 如果操作系统正常运行,但视频输出卡住
ADB 通常仍然需要目标设备具有可运行的操作系统 - 诸如此类,adb shell
或者adb logcat
实际上只是连接到一个特殊的应用程序,让您检查其他与应用程序相关的事情。
类似地,如果您的 Windows 操作系统仍然能够接收网络连接并启动新进程,则您可以使用多种服务来提供标准命令行访问:
SSH –OpenSSH最新版本的 Windows 10 默认自带此功能,并且易于启用。(对于较旧的版本,Bitvise WinSSHD是最不烦人的选择。)您可以使用
ssh
命令或使用 PuTTY 进行连接。PowerShell 具有PS 远程处理,设置起来稍微麻烦一些,通常需要另一个 Windows 系统进行连接。
还有各种半遗留的 DCOM RPC 接口,允许您在远程系统上运行列表进程(
qprocess /server:<target>
或tasklist /s <target>
)或访问事件日志(eventvwr.msc 有“连接到另一台计算机”)或各种其他管理任务。
(当然还有图形远程桌面但由于它的工作方式——分离当您通过 RDP 连接时,从 GPU 中获取整个桌面——在您的情况下它可能不是一个好的调试工具。
另一方面,还有一个隐藏的快捷方式,WinCtrlShiftB如果这是唯一的问题,它会尝试重置 GPU 驱动程序。)
内核空间 — 如果你确定操作系统已完全挂起
如果操作系统完全被卡住,远程内核调试就不是什么新鲜事了。(我想,这是驱动程序开发不可或缺的一部分。)我对此没有任何经验,但请参阅Microsoft Docs 上的此部分了解将在第二个系统上运行的调试器附加到您的操作系统的各种方法。
(例如,链接的帖子猜测 FireWire(IEEE 1394)——曾经是 USB 的强大竞争对手——可能会通过其 DMA 支持被滥用。事实上,Windows 长期以来支持的1394 调试连接,尽管由于硬件支持越来越少,这个连接最近被删除了。)
从网站上看来,首选方法是通过以太网,只要被调试系统上的驱动程序支持此功能。该站点上列出的其他方法是串行(如果您的台式电脑带有“COM1”针头)或 USB(需要专门的有线电缆)。