Activación de un servidor de conexión KD
El servidor de conexión KD que se incluye en herramientas de depuración para Windows se denomina KdSrv (kdsrv.exe). Para activar un servidor de conexión KD, abra una ventana del símbolo del sistema con privilegios elevados (Ejecutar como administrador) y escriba el comando kdsrv .
Nota Puede activar un servidor de conexión KD sin tener privilegios elevados y los clientes de depuración podrán conectarse al servidor. Sin embargo, los clientes no podrán detectar un servidor de conexión KD a menos que se haya activado con privilegios elevados. Para obtener información sobre cómo detectar servidores de depuración, consulte Búsqueda de servidores de conexión KD.
Importante
Hay consideraciones de seguridad importantes al usar la depuración remota. Para obtener más información, incluida la información sobre cómo habilitar el modo seguro, consulta Security During Remote Debugging and Security Considerations for Windows Debugging Tools.
KdSrv admite varios protocolos de transporte: canalización con nombre (NPIPE), TCP, puerto COM, canalización segura (SPIPE) y capa de sockets seguros (SSL).
La sintaxis de la línea de comandos KdSrv depende del protocolo usado. Existen las siguientes opciones:
métodos de conexión recomendados, con algunos de seguridad adicionales
kdsrv -t spipe:proto=Protocol,{certuser=Cert|machuser=Cert},pipe=PipeName[,hidden][,password=Password]
kdsrv -t ssl:proto=Protocol,{certuser=Cert|machuser=Cert},port=Socket[,hidden][,password=Password]
kdsrv -t ssl:proto=Protocol,{certuser=Cert|machuser=Cert},port=Socket,clicon=Client[,password=Password]
métodos de conexión no seguros
kdsrv -t npipe:pipe=PipeName[,hidden][,password=Password][,IcfEnable]
kdsrv -t tcp:port=Socket[,hidden][,password=Password][,ipversion=6][,IcfEnable]
kdsrv -t tcp:port=Socket,clicon=Client[,password=Password][,ipversion=6]
kdsrv -t com:port=COMPort,baud=BaudRate,channel=COMChannel[,hidden][,password=Password]
Los parámetros de los comandos anteriores tienen los siguientes valores posibles:
pipe=PipeName
Cuando se usa el protocolo NPIPE o SPIPE, PipeName es una cadena que servirá como nombre de la canalización. Cada nombre de canalización debe identificar un servidor de procesos único. Si intenta reutilizar un nombre de canalización, recibirá un mensaje de error.
PipeName no debe contener espacios ni comillas.
PipeName puede incluir un código numérico de formato printf estilo, como %x o %d. Esto se reemplazará por el identificador de proceso de KdSrv. Un segundo código de este tipo se reemplazará por el identificador de subproceso de KdSrv.
puerto de
Cuando se usa el protocolo TCP o SSL, socket es el número de puerto de socket.
También es posible especificar un intervalo de puertos separados por dos puntos. KdSrv comprobará cada puerto de este intervalo para ver si es gratis. Si encuentra un puerto libre y no se produce ningún error, se creará el servidor de conexión KD. El cliente inteligente tendrá que especificar el puerto real que se usa para conectarse al servidor. Para determinar el puerto real, use cualquiera de los métodos descritos en Buscar servidores de conexión KD; cuando se muestra este servidor de conexión KD, el puerto se verá seguido de dos números separados por dos puntos. El primer número será el puerto real utilizado; se puede omitir el segundo. Por ejemplo, si el puerto se especificó como port=51:60y el puerto 53 se usó realmente, los resultados de la búsqueda mostrarán "port=53:60". (Si usa el parámetro clicon para establecer una conexión inversa, el cliente inteligente puede especificar un intervalo de puertos de esta manera, mientras que el servidor de conexión KD debe especificar el puerto real usado).
clicon de =cliente
Cuando se usa el protocolo TCP o SSL y se especifica el parámetro clicon
Dado que el servidor de conexión KD busca un cliente específico, no puede conectar varios clientes al servidor si usa este método. Si la conexión se rechaza o se interrumpe, tendrá que reiniciar el servidor de procesos. Un servidor de conexión KD de conexión inversa no aparecerá cuando alguien use el -QR opción de línea de comandos para mostrar todos los servidores activos.
Nota Cuando se usa clicon, es mejor iniciar el cliente inteligente antes de crear el servidor de conexión KD, aunque también se permite el orden habitual (servidor antes del cliente).
port=COMPort
Cuando se usa el protocolo COM, COMPort especifica el puerto COM que se va a usar. El prefijo "COM" es opcional; por ejemplo, tanto "com2" como "2" son aceptables.
baud=BaudRate
Cuando se usa el protocolo COM, BaudRate especifica la velocidad de baudios a la que se ejecutará la conexión. Se permite cualquier velocidad de baudios compatible con el hardware.
channel=COMChannel
Si se usa el protocolo COM, COMChannel especifica el canal COM que se usará para comunicarse con el cliente de depuración. Puede ser cualquier valor entre 0 y 254, ambos incluidos. Puede usar un único puerto COM para varias conexiones mediante números de canal diferentes. (Esto es diferente del uso de puertos COM para un cable de depuración, en esa situación no se pueden usar canales dentro de un puerto COM).
proto=Protocol
Si se usa el protocolo SSL o SPIPE, Protocol especifica el protocolo de canal seguro (canal S). Puede ser cualquiera de las cadenas tls1, pct1, ssl2 o ssl3.
cert de
Si se usa el protocolo SSL o SPIPE, cert especifica el certificado. Puede ser el nombre del certificado o la huella digital del certificado (la cadena de dígitos hexadecimales proporcionado por el complemento del certificado). Si se usa la sintaxis certuser=Cert, el depurador buscará el certificado en el almacén del sistema (el almacén predeterminado). Si se usa la sintaxis Cert, el depurador buscará el certificado en el almacén de máquinas. El certificado especificado debe admitir la autenticación del servidor.
ocultas
Impide que el servidor de conexión KD aparezca cuando alguien usa la opción de línea de comandos -QR para mostrar todos los servidores activos.
password=password
Requiere un cliente inteligente para proporcionar la contraseña especificada para conectarse al servidor de conexión KD.
contraseña puede ser cualquier cadena alfanumérica, hasta doce caracteres de longitud.
Importante
El uso de una contraseña con el protocolo TCP, NPIPE o COM solo ofrece una pequeña cantidad de protección, ya que la contraseña no está cifrada. Cuando se usa una contraseña junto con un protocolo SSL o SPIPE, la contraseña se cifra. Si desea establecer una sesión remota más segura, debe usar el protocolo SSL o SPIPE.
ipversion=6
(Herramientas de depuración para Windows 6.6.07 y versiones anteriores) Obliga al depurador a usar la versión 6 de IP en lugar de la versión 4 cuando se usa TCP para conectarse a Internet. En Windows Vista y versiones posteriores, el depurador intenta establecer el valor predeterminado automático en la versión 6 de IP, lo que hace que esta opción sea innecesaria.
IcfEnable
Hace que el depurador habilite las conexiones de puerto necesarias para la comunicación tcp o canalización con nombre cuando el firewall de conexión a Internet está activo. De forma predeterminada, el Firewall de conexión a Internet deshabilita los puertos usados por estos protocolos. Cuando IcfEnable se usa con una conexión TCP, el depurador hace que Windows abra el puerto especificado por el parámetro Socket. Cuando IcfEnable se usa con una conexión de canalización con nombre, el depurador hace que Windows abra los puertos usados para canalizaciones con nombre (puertos 139 y 445). El depurador no cierra estos puertos una vez finalizada la conexión.