转储或实时系统的远程(内核或用户模式)调试

在某些情况下,我们会执行实时调试以确定服务器故障的根本原因。在内存转储的情况下,文件通常非常大,因此通过网络复制文件,即使是在最快的广域网连接上,也可能需要很长时间。解决方案是远程调试。

你应该怎么做?

首先,需要两个人:一个是远程人员,另一个是通过使用安装在他们机器上的调试器调试进程来帮助远程用户的专家。
假设你是帮助远程人的专家。流程如下:
1、远程用户使用windbg打开转储文件、调试进程或内核调试远程位置的计算机。
2、远方的人决定,“我需要帮助!”
3、远程用户只在windbg提示符下需输入..server tcp:port=9999。

注意下面的输出。
服务器已启动。客户机可以使用这些命令行中的任何一个进行连接

0: <debugger> -remote tcp:Port=9999,Server=MyServerName
1、远程用户通过连接字符串<debugger>-remote将电子邮件或即时消息发送给需要帮助的人tcp:端口=9999,服务器=MyServerName

2、专家运行WINDBG-remotetcp:tcp:port=9999,来自调试器目录的Server=MyServerName。

3、此时,远程用户应该在远程调试器站点上看到以下消息。 EXPERTMACHINEexpert (tcp 165.33.5.122:54546) connected at Tue Mar 25 15:36:53 2020

一旦连接,专家可以发出任何命令来远程调试转储或目标机器。最重要的是,如果需要,许多人可以连接到远程调试器会话。远程调试时,我发现将调试会话保存在日志文件中很有用。就像打字一样简单。logopen C:mydebuggersession.log在远程调试会话开始之前。如果有必要,每个人都有机会在以后查看调试会话。
关于远程调试,最后要记住的一点是安全性。我建议使用.noshell命令来阻止远程shell命令的执行。没有.noshell命令,连接到会话的用户可以使用.shell(命令shell)命令直接从调试器执行应用程序或Microsoft MS-DOS命令。

原文地址:https://www.cnblogs.com/yilang/p/13618050.html