Dois firewalls
Nesse cenário, você precisa executar a depuração de kernel em um computador no Edifício A. Seu técnico está localizado no Edifício C e tem acesso a símbolos lá. No entanto, ambos os edifícios têm firewalls que não permitirão conexões de entrada.
Você precisa configurar um repetidor em um local neutro. Em seguida, você pode conectar A para fora a B e conectar C para fora a B.
Haverá quatro computadores envolvidos neste cenário:
O computador de destino, localizado no Edifício A.
O computador host local, localizado no Edifício A. Este computador executará um servidor de conexão KD. Ele será conectado ao computador de destino por um cabo de depuração ou cabo 1394 e se conectará para fora ao repetidor. Que o endereço IP deste computador seja 127.0.10.10.
O computador no Edifício B. Isso executará o repetidor. Deixe seu endereço IP ser 127.0.20.20.
O computador no Edifício C onde o técnico está localizado. Este computador executará o WinDbg como um cliente inteligente. Deixe seu endereço IP ser 127.0.30.30.
Primeiro, verifique se o computador de destino está configurado para depuração e está anexado ao computador host local. Neste exemplo, um cabo 1394 é usado.
Em segundo lugar, inicie o repetidor em 127.0.20.20:
dbengprx -p -s tcp:port=9001 -c tcp:port=9000,clicon=127.0.10.10
Em terceiro lugar, inicie o servidor de conexão KD no 127.0.10.10 no Edifício A da seguinte maneira:
kdsrv -t tcp:port=9000,clicon=127.0.20.20,password=longjump
Por fim, inicie o cliente inteligente no 127.0.30.30 no Edifício C. (Isso pode realmente ser feito antes ou depois de iniciar o servidor no Edifício A.)
windbg -k kdsrv:server=@{tcp:server=127.0.20.20,port=9001,password=longjump},trans=@{1394:channel=9} -y SymbolPath
Esse cenário pode se tornar ainda mais complicado se você supor que os símbolos estão em um computador no Edifício C, mas o técnico está em um computador diferente.
Suponha que 127.0.30.30 tenha os símbolos, como antes, e que seu nome local seja \\BOXC. O cliente inteligente pode ser iniciado com o mesmo comando acima, mas com um parâmetro -server adicional. Como ninguém usará esse computador, levará menos tempo de processamento se você usar KD em vez de WinDbg:
kd -server npipe:pipe=randomname -k kdsrv:server=@{tcp:server=127.0.20.20,port=9001,password=longjump},trans=@{1394:channel=9} -y SymbolPath
Em seguida, o técnico, em outro lugar do prédio, pode iniciar um cliente de depuração da seguinte maneira:
windbg -remote npipe:server=\\BOXC,pipe=randomname
Observe que a senha deve ser fornecida pelo primeiro não repetidor na cadeia (o cliente inteligente em \\BOXC), não pelo depurador final na cadeia.