zoukankan      html  css  js  c++  java
  • 通过网线手动设置内核模式调试

    Windows的调试工具支持通过以太网进行内核调试。本主题介绍如何手动设置以太网调试。
    运行调试器的计算机称为主机,被调试的计算机称为目标计算机。主机必须运行Windows XP或更高版本,目标计算机必须运行Windows 8或更高版本。与其他类型的电缆相比,通过网络进行调试具有以下优点。
    • 主机和目标计算机可以在本地网络的任何位置。
    • 从一台主机上调试多台目标计算机很容易。
    • 网线价格便宜,而且很容易买到。
    • 对于任何两台计算机,它们都有以太网适配器。它们都有串行端口或1394端口的可能性较小。

    支持的网络适配器

    主机可以使用任何网络适配器,但目标计算机必须使用Windows调试工具支持的网络适配器。

    确定主机的IP地址

    使用以下过程之一确定主机的IP地址。

    •  在主机上,打开命令提示窗口并输入以下命令: ipconfig
      记下要用于调试的网络适配器的IPv4地址。
    • 在目标计算机上,打开命令提示窗口并输入以下命令,其中host name是主机名:ping -4 HostName

    选择网络调试端口

    选择将用于主机和目标计算机上调试的端口号。您可以选择49152到65535之间的任意数字。您选择的端口将被运行在主机上的调试器以独占访问方式打开。请注意选择主机上运行的任何其他应用程序都不使用的端口号。 可以用于网络调试的端口号的范围可能受到公司网络策略的限制。无法从主机上分辨出限制是什么。要确定公司的策略是否限制可用于网络调试的端口范围,请与网络管理员联系。如果将多台目标计算机连接到一台主机,则每个连接都必须具有唯一的端口号。例如,如果将100台目标计算机连接到一台主机,则可以将端口50000分配给第一个连接,将端口50001分配给第二个连接,将端口50002分配给第三个连接,依此类推。不同的主机可以使用相同范围的端口(50000到50099)连接到另外100台目标计算机。

    设置目标计算机

    1、验证目标计算机是否具有受支持的网络适配器。
    2、使用标准的Cat5或更好的网线将支持的适配器连接到网络集线器或交换机。不要使用交叉电缆,也不要在集线器或交换机中使用交叉端口。
    3、在提升的命令提示窗口中,输入以下命令,其中w.x.y.z是主机的IP地址,n是您选择的端口号:

    bcdedit /debug on 
    bcdedit /dbgsettings net hostip:w.x.y.z port:n 
    

    4、bcdedit 将显示自动生成的密钥。复制密钥并将其存储在可移动存储设备(如USB闪存驱动器)上。在主机上启动调试会话时,需要密钥。强烈建议您使用自动生成的密钥。但是,您可以创建自己的密钥,如后面“创建自己的密钥”部分中所述。

    5、如果目标计算机中有多个网络适配器,请使用设备管理器确定要用于调试的适配器的PCI总线、设备和函数号。然后在提升的命令提示窗口中,输入以下命令,其中b、d和f是适配器的总线号、设备号和功能号:

    bcdedit /set "{dbgsettings}" busparams b.d.f 
    

    6、重启计算机

    如果目标计算机位于扩展底座中,并且已为扩展底座中的网络适配器启用网络调试,请不要从扩展底座中删除计算机。如果需要从扩展底座中删除目标计算机,请先禁用内核调试。要在目标计算机上禁用内核调试,请以管理员身份打开命令提示窗口,然后输入命令bcdedit/debug off。重新启动目标计算机。

    设置主机

    使用标准Cat5(或更高级别)网线将主机的网络适配器连接到网络集线器或交换机。不要使用交叉电缆,也不要在集线器或交换机中使用交叉端口。

    启动调试会话

    在主机上,打开windbg。在“文件”菜单上,选择“内核调试”。在“内核调试”对话框中,打开“网络”选项卡。输入端口号和密钥。单击“确定”。您还可以通过打开命令提示窗口并输入以下命令来启动与windbg的会话,其中n是端口号,key是设置目标计算机时由bcdedit自动生成的密钥:
    windbg -k net:port=n,key=Key
    

    如果系统提示您允许windbg通过防火墙访问端口,则允许windbg访问所有不同网络类型的端口。首次尝试建立网络调试连接时,可能会提示您允许调试应用程序(windbg或kd)通过防火墙访问。Windows的客户端版本显示提示,但Windows的服务器版本不显示提示。您应该通过选中域、私有和公共三种网络类型的复选框来响应提示。如果没有得到提示,或者在提示可用时没有选中复选框,则必须使用“控制面板”允许通过防火墙进行访问。打开“控制面板>系统和安全”,然后单击“允许应用程序通过Windows防火墙”。在应用程序列表中,找到Windows GUI符号调试器和Windows内核调试器。使用复选框允许这两个应用程序通过防火墙。重新启动调试应用程序(windbg或kd)。

    调试器如何获取目标计算机的IP地址

    目标计算机上的内核调试驱动程序尝试使用动态主机配置协议(DHCP)来获取正在用于调试的网络适配器的可路由IP地址。如果驱动程序获得一个DHCP分配的地址,那么目标计算机可以由位于网络上任何位置的主机进行调试。如果驱动程序无法获得一个DHCP分配的地址,它将使用自动专用IP地址(APIPA)来获得一个本地链路IP地址。本地链路IP地址不可路由,因此主机和目标不能使用本地链路IP地址通过路由器进行通信。在这种情况下,如果将主机和目标计算机插入同一网络集线器或交换机,网络调试将工作。
  • 相关阅读:
    hdu 4183(网络流)
    hdu 1565&hdu 1569(网络流--最小点权值覆盖)
    hdu 1532(最大流)
    HDU 2141 Can you find it?
    HDU 1096 A+B for Input-Output Practice (VIII)
    HDU 1095 A+B for Input-Output Practice (VII)
    HDU 1094 A+B for Input-Output Practice (VI)
    HDU 1093 A+B for Input-Output Practice (V)
    HDU 1092 A+B for Input-Output Practice (IV)
    HDU 1091 A+B for Input-Output Practice (III)
  • 原文地址:https://www.cnblogs.com/yilang/p/11428744.html
Copyright © 2011-2022 走看看