Habilitando o modo de depuração no servidor 1c. Depurando procedimentos do servidor (1Cv82)

8, há uma necessidade (conforme discutido abaixo) de uma reformulação significativa do procedimento de depuração. Isso foi refletido na versão 8.3.7.1759. Em primeiro lugar, foi criada uma interface universal para este procedimento e, em segundo lugar, esta alteração garante o desenvolvimento do próprio programa. Afinal, agora você pode trabalhar com depuração não só através do Configurador, mas também utilizando Ferramentas de Desenvolvimento. Vejamos como habilitar a depuração no servidor 1C a partir da nova versão.

Usando o novo protocolo

O depurador anterior, implementado em versões anteriores, gerenciava aplicativos cliente e servidor usando o protocolo TCP/IP.

Atualmente, o uso de tal protocolo começou a limitar o acesso do programa 1C:Enterprise à Internet e causou transtornos ao funcionamento de aplicativos móveis.

Portanto, para acesso gratuito a bases de informações que possam estar localizadas fora da rede local, passou a ser adotado o protocolo HTTP flexível.

Nova arquitetura

Anteriormente, ao realizar a depuração da configuração, um funcionário precisava se conectar à infobase. Para fazer isso, foi necessário conceder-lhe direitos de administrador.

Na nova versão, não há necessidade de conexão direta aos bancos de dados - basta simplesmente ter o mesmo banco de dados do cliente. E você pode carregá-lo de um arquivo.

Aplicações Móveis

Usando o protocolo HTTP, agora é possível depurar dados do servidor, dados do cliente e aplicativos.

Outras mudanças

Com a nova versão é possível alterar valores de variáveis ​​locais no procedimento de depuração; para isso foi implementada uma nova janela de visualização rápida.

O modo de cálculo foi alterado para assíncrono, permitindo continuar trabalhando sem esperar pelos resultados.

Depurador em ferramentas de desenvolvimento

A interação com o novo procedimento é realizada em uma interface de software universal especialmente desenvolvida. Por um lado, esta interface é utilizada pelo Configurador. Por outro lado, é implementado no novo ambiente 1C:Enterprise Development Tools.

Como é agora

Após a alteração do programa, o procedimento ocorre conforme o seguinte cenário:

Agora envolve não apenas o depurador e os itens, como acontecia anteriormente. Agora, um elemento adicional foi introduzido na cadeia - Servidor.

Não apenas é adicionado - serve como o principal elemento de troca de informações entre o depurador e os objetos. E a troca em si ocorre por meio de mensagens alinhadas em fila.

E como essa troca é realizada através do protocolo HTTP, agora não importa onde exatamente os dados possam estar localizados.

As chamadas para o servidor são formadas a partir do depurador e dos objetos na forma de solicitações de conexão adicionais. Quando eles aparecem, as respostas apropriadas são enviadas a eles.

Habilite a depuração em diferentes cenários

Para o desenvolvedor do aplicativo, não houve alterações. A diferença significativa é que o novo mecanismo deve estar habilitado. Afinal, agora ele está desabilitado por padrão.

Vejamos o que acontece quando o modo é iniciado se escolhermos um dos dois cenários.

Script de arquivo

No início da versão do arquivo, deve-se especificar nas definições de configuração a utilização de um novo mecanismo - “Depuração via protocolo HTTP”.

Então o Configurador irá sugerir automaticamente o uso de um servidor local. Esta condição deve ser aceita e o programa reiniciado em modo Configurador.

Depois disso, o Configurador recém-lançado salvará o novo método que escolhemos durante a próxima sessão. Mas para a mesma base de informações. Portanto, ao acessar outra infobase, ela também precisa estar habilitada.

O mecanismo habilitado agora iniciará automaticamente o Debugger Server, que é um aplicativo especial dbgs.exe. Isso se reflete na janela do Gerenciador de Tarefas.

O valor do parâmetro ownPID corresponderá ao ID da aplicação que está vinculada a ele.

Ao iniciar uma sessão de depuração através do Configurador, a conexão do servidor ocorrerá automaticamente. E os objetos conectados serão refletidos nele.

Se o programa 1C foi ativado sem o novo mecanismo, você precisará habilitar a depuração no servidor 1C manualmente. Só agora você precisará especificar o endereço do servidor:

Vá para Serviço - Opções

Ele está localizado nas configurações do item:

Vá para Conexão - Configurações

Ao usar um script de arquivo com vários bancos de dados ao mesmo tempo, você precisa levar em consideração uma nuance importante - cada um dos Configuradores (com o mecanismo HTTP habilitado) envia seu próprio Servidor:

Portanto, se vários Configuradores estiverem abertos, para conectar o Cliente é necessário especificar o correto.

Cenário cliente-servidor

A depuração em um servidor 1C usando um cenário cliente-servidor, como no caso anterior, começa com o lançamento do modo. Isto especifica o uso do novo mecanismo HTTP. Isso é feito desta maneira:

ragent.exe -debug -http

Quando é iniciado, o depurador inicia automaticamente atrás dele.

O valor do parâmetro proprietárioPID corresponderá ao número de identificação do gerenciador do cluster 1C.

O programa irá gerar uma proposta para utilizar o servidor de depuração de cluster agora (e não local como no cenário anterior). Nós concordamos e reiniciamos.

No futuro, tudo funcionará como um script de arquivo. Somente quando você iniciar o Server Database Configurator o servidor do depurador local não será mais iniciado.

Esperamos que nossa publicação tenha ajudado você a resolver o problema de como habilitar a depuração em um servidor 1C.

A tarefa de um desenvolvedor 1C não é apenas escrever código, mas também rastrear e corrigir erros, construir um algoritmo ideal de execução de comandos e otimizar a velocidade de trabalho, ou seja, depuração. É difícil fazer isso sem usar a funcionalidade do depurador de procedimentos de servidor integrado.

Inicialmente, o modo de depuração está desabilitado nos servidores 1C, portanto o desenvolvedor terá que fazer manipulações simples nas configurações para poder verificar minuciosamente o código.

Ativando o modo de depuração no servidor para a plataforma 1C versão 8.2 e superior

O algoritmo para habilitar a depuração é bastante simples. Não pressupõe conhecimento profundo da arquitetura do sistema operacional e administração 1C. Porém, você ainda deve ter muito cuidado, pois o trabalho de depuração é realizado diretamente no servidor e com direitos de administrador. Portanto, se você não possui um conhecimento profundo, siga rigorosamente o algoritmo de ações sem improvisações:

  • Pare o serviço 1C:Enterprise Server Agent por meio do Gerenciador do Servidor. Se a configuração ocorrer em um servidor de produção, deve-se tomar cuidado antecipadamente com a ausência de usuários 1C no banco de dados;
  • Inicie o editor de registro do sistema clicando em “Iniciar” - “Executar” ou no atalho de teclado “Win” + “R”. Na janela que se abre, digite a linha “regedit”;
  • No cadastro você precisa encontrar o item;

  • Entre os parâmetros, encontre “ImagePath” e altere-o adicionando “-debug” ao valor existente com um espaço no final;
  • Através do Server Manager, inicie o serviço que foi interrompido - “1C:Enterprise Server Agent”.

Ativando o modo de depuração no servidor para 1C versão 8.1

Se você precisar ativar o modo de depuração na plataforma 8.1, o algoritmo de ações permanecerá praticamente inalterado. A única alteração é a localização do parâmetro de caminho "ImagePath". Na versão 8.1 ele está localizado na seção.

Os desenvolvedores 1C aconselham habilitar o modo de depuração exclusivamente para servidores de teste, onde o código deve ser depurado. O motivo desta recomendação é o impacto no desempenho que ocorre quando a depuração está habilitada no servidor. Se você tem muitos usuários ou a potência do servidor deixa muito a desejar, siga este conselho com atenção para que a depuração não tenha consequências negativas.

18.10.2016

Depuração em um servidor 1C (8.2, 8.3...)

Se o banco de dados 1C estiver sendo executado em uma versão cliente-servidor, o modo de depuração de código no lado do servidor será desabilitado. Portanto, não será possível ver passo a passo o que acontece ao executar uma função ou procedimento. Para habilitar a depuração do lado do servidor, você precisa seguir algumas etapas simples.

Habilite a depuração no servidor 1C:Enterprise 8.2, 8.3

A primeira coisa que você precisa fazer é interromper o serviço do servidor 1C:Enterprise. Vá em "Iniciar - Executar" (ou o atalho de teclado "Windows + R"), escreva "services.msc" (é claro que você precisa abrir o gerenciamento de serviços do Windows no Administrador)

Após parar, abra o editor de registro do Windows ("Iniciar - Executar" (ou o atalho de teclado "Windows + R") e escreva "regedit") e encontre o branch com o nome "" ou "" dependendo da versão da plataforma


Estamos interessados ​​na chave de registro chamada "ImagePath". Adicione "-debug" ao final do valor da chave. Isso significa que o modo de depuração no lado do servidor 1C está ativado.
Era: "C:\Arquivos de Programas\1cv8\8.3.6.2530\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Arquivos de Programas\1cv8\srvinfo"
Tornou-se: "C:\Arquivos de Programas\1cv8\8.3.6.2530\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Arquivos de Programas\1cv8\srvinfo" -debug


Salve e inicie o serviço 1C. Tudo está pronto! Boa depuração!

Para poder depurar procedimentos do servidor, você precisa definir os flags no formulário “Serviço->Parâmetros” do configurador:

Depuração no servidor de aplicativos

Isso está descrito na documentação:

Livro “1C:Enterprise 8.1. Configuração e administração"

Capítulo 18. Ferramentas de configuração

Medições de depurador e desempenho

"Depurando código no servidor

Para instalar o modo de depuração, você deve iniciar o servidor 1C:Enterprise com a opção de linha de comando /Debug (ragent.exe /debug)."

As chaves de inicialização do agente servidor são descritas no livro:

"1C:Empresa 8.1. Servidor cliente. Recursos de instalação e uso"

"Executando o agente do servidor como um serviço

Se, ao instalar um cluster de servidores, você selecionou a opção de iniciar o agente do servidor central como um serviço, esse serviço será iniciado automaticamente durante o processo de instalação e também será iniciado quando o sistema operacional for iniciado.

Se o agente do servidor central foi instalado como um aplicativo, é possível registrar o serviço manualmente e depois iniciá-lo.

O registro do serviço é realizado com o seguinte comando:

Ragent.exe -instsrvc -usr<пользователь>-pwd<пароль>-porta<порт>-faixa<диапазоны>-seclev<уровень>-depurar | -rmsrvc | -iniciar | -parar

Instsrvc – registrando o agente de cluster como um serviço do Windows. Se ragent.exe for iniciado com esta chave, ele será registrado na lista de serviços do Windows e sairá. Não é compatível com as opções -srvc, -rmsrvc;

Usuário<имя пользователя>

Senha<пароль пользователя>– o nome e a senha do usuário do Windows sob cujo nome ragent.exe deve ser iniciado como um serviço do Windows. Só pode ser usado em conjunto com a opção -instsrvc ao registrar ragent.exe como um serviço do Windows;

Porta<порт>– número da porta principal do agente de cluster. Esta porta é usada pelo console do cluster para acessar o servidor central. A porta do agente de cluster também é especificada como a porta IP do servidor em funcionamento;

Faixa<диапазоны>– Intervalos de portas IP para seleção dinâmica. Destes, as portas de serviço dos processos de cluster são selecionadas se for impossível selecioná-las nas configurações do servidor de trabalho correspondente. Padrão: 1560-1591. Valores de exemplo<диапазоны>: "45:49", "45:67,70:72,77:90";

Seclev<уровень>– nível de segurança do processo do agente de cluster. Determina o nível de segurança das conexões estabelecidas com o processo ragent.exe.<уровень>pode assumir os seguintes valores: 0 (padrão) conexões não são seguras, 1 – conexões seguras apenas durante a autenticação do usuário, 2 – conexões permanentemente seguras.;

Rmsrvc – cancela o registro do agente de cluster como um serviço do Windows. Se ragent.exe for iniciado com esta chave, ele cancela seu registro na lista de serviços do Windows e sai. Não é compatível com as opções -srvc, -daemon, -instsrvc.

Iniciar - inicie ragent.exe, registrado como um serviço do Windows. Inicia ragent.exe, previamente cadastrado como serviço do Windows, e sai;

Parar - pare ragent.exe registrado e em execução como um serviço do Windows. Interrompe o ragent.exe, previamente registrado e em execução como um serviço do Windows, e sai;

Depuração - iniciando um cluster de servidores no modo de depuração de configuração. "

Assim, se o servidor 1C:Enterprise foi iniciado como um serviço e por algum motivo também deve ser iniciado como um serviço em modo de depuração, você deve primeiro cancelar o registro do serviço (chave -rmsrvc) e, em seguida, registrar novamente o serviço com a chave -debug.

Obviamente, um efeito semelhante pode ser alcançado de outras maneiras, por exemplo, editando diretamente o registro do Windows. Para fazer isso, você provavelmente deve consultar a documentação do Windows.

Funciona apenas quando a chave "-debug" está definida no registro. Em todos os outros casos, não funciona por algum motivo.

"ImagePath"=

era "F:\Arquivos de Programas\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "F:\Arquivos de Programas\1cv81\server"

set "F:\Arquivos de Programas\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -d "F:\Arquivos de Programas\1cv81\server"

Implementado na versão 8.3.7.1759.

Redesenhamos significativamente o mecanismo de depuração. Houve vários motivos para isso. Primeiro, queríamos oferecer a você a capacidade de depurar todos os aplicativos disponíveis atualmente. Em segundo lugar, a arquitetura anterior do depurador exigia mudanças para acompanhar as tendências atuais e acomodar o desenvolvimento futuro. Em terceiro lugar, era necessária uma interface de depuração universal, com a qual não apenas o configurador 1C:Enterprise, mas também o .

Vantagens principais

Para que você possa imaginar o alcance das mudanças que fizemos, listaremos resumidamente as principais vantagens do novo mecanismo.

Depuração HTTP

O mecanismo de depuração anterior baseava-se no fato de que o depurador, implementado no configurador 1C:Enterprise, interagia diretamente com itens de depuração (aplicações cliente e servidor). Essa interação foi realizada utilizando o protocolo TCP/IP.

No entanto, com o lançamento de aplicações 1C:Enterprise na Internet, e especialmente com o advento das aplicações móveis, esta abordagem tornou-se uma fonte de limitações e inconveniências. O protocolo TCP/IP nem sempre permite que o depurador “alcance” os itens que estão sendo depurados. Afinal, eles podem estar localizados fora da rede local em que o depurador está sendo executado.

Portanto, no novo mecanismo, escolhemos o protocolo HTTP mais “onipresente” como protocolo de transporte, que, aliás, também é utilizado por aplicações clientes para conexão com bancos de dados de informações.

Arquitetura de depuração moderna

Uma característica do mecanismo de depuração anterior era a necessidade de se conectar à infobase usando o configurador. Como resultado, o desenvolvedor de depuração teve acesso total a todas as funções administrativas.

O novo mecanismo de depuração não requer mais uma conexão com a infobase que está sendo depurada. A principal coisa que o depurador precisa agora é a mesma configuração que funciona para os clientes. Para obtê-lo, não há necessidade de conectar-se à infobase que está sendo depurada. Você pode carregá-lo, por exemplo, de um arquivo.

Depurando aplicativos móveis

Graças ao uso do protocolo HTTP, tornou-se possível depurar aplicações executadas pela plataforma móvel. Além disso, você pode depurar qualquer contexto: cliente, servidor, bem como trabalhos em segundo plano.

Agora, durante a depuração, você pode alterar os valores de qualquer variável gravável. Para visualizar e alterar rapidamente as variáveis ​​locais, implementamos uma janela separada. E o cálculo das expressões exibidas pelo depurador agora é realizado em modo assíncrono.

Depuração em ferramentas de desenvolvimento

Ao criar um novo mecanismo de depuração, implementamos uma nova interface de software universal para interagir com ele. Esta interface é utilizada pelo configurador 1C:Enterprise, e a mesma interface agora é utilizada pelo novo ambiente de desenvolvimento. Assim, todos os recursos de depuração agora estão disponíveis ao trabalhar no .

Arquitetura do processo de depuração

A nova arquitetura de depuração é assim:

A depuração envolve um depurador, itens de depuração e um novo elemento - servidor de depuração.

Não há transferência direta de informações entre o depurador e os itens de depuração. Toda a interação é organizada através do servidor de depuração. Este é o elemento principal do mecanismo. O servidor de depuração possui uma fila de mensagens por meio da qual o depurador e os itens de depuração passam informações entre si.

Tanto o próprio depurador quanto os itens de depuração se comunicam com o servidor de depuração via HTTP. Então agora não importa onde esses itens de depuração estão localizados.

A interação com o servidor de depuração é iniciada pelo depurador e pelos itens de depuração. Para este propósito, são organizadas conexões adicionais. Seu principal objetivo é descobrir se informações apareceram para eles no servidor de depuração. E se aparecer, obtenha essa informação.

Assim, a interação é unilateral. As informações são constantemente transferidas do servidor de depuração para o depurador e para objetos de depuração.

Identificação de bases de informação

No mecanismo anterior, uma string de conexão foi usada para identificar infobases. Esta solução em alguns casos causou dificuldades na correspondência dos itens de depuração e do configurador. Porque, em primeiro lugar, fazia distinção entre maiúsculas e minúsculas e, em segundo lugar, ao depurar alguns contextos, a plataforma gerava a string de conexão automaticamente. E nem sempre coincidia com o que você especificou ao conectar a infobase no configurador. Encontrar e corrigir tais situações complicou o processo de depuração.

No novo mecanismo, nos livramos da cadeia de conexão. Agora usamos identificador da infobase. Na infobase de arquivos, esse identificador é gerado na primeira vez que uma conexão de cliente é estabelecida. Na infobase do servidor, o identificador de registro da infobase no cluster é usado como tal identificador.

Um ponto adicional interessante aqui é que mantivemos o antigo mecanismo de depuração na plataforma por enquanto (ele pode ser excluído no futuro). E você pode usá-lo se desejar ou se necessário. Portanto, modificamos o mecanismo antigo e agora ele também usa o identificador da infobase, e não a string de conexão.

Cenários típicos de depuração

Do ponto de vista do desenvolvedor de aplicativos, os cenários típicos de depuração não mudaram. A única diferença significativa é que o novo mecanismo de depuração deve estar habilitado. Porque por padrão está desabilitado.

Independentemente disso, faz sentido familiarizar-se com o que acontece agora quando você executa a depuração. Porque pode ser útil para você em alguns cenários de trabalho fora do padrão.

Opção de arquivo

Antes de iniciar a depuração na versão do arquivo, você precisa indicar nas configurações do configurador que deseja utilizar o novo mecanismo de depuração - “ Depuração HTTP».

Neste caso, o configurador solicitará automaticamente que você use um servidor de depuração local. Você precisa concordar com isso e reiniciar o configurador.

O método de depuração definido é salvo entre as sessões do configurador, mas é armazenado no contexto das infobases. Portanto, para outra infobase você precisará habilitá-la novamente.

Agora, ao iniciar o configurador, ou ao reiniciá-lo, a plataforma iniciará automaticamente o servidor de depuração. Este é um aplicativo dbgs.exe separado. Você pode ver isso no gerenciador de tarefas.

O parâmetro ownPID especifica o identificador do aplicativo que possui esse servidor de depuração. Neste caso, este é o configurador 1C:Enterprise.

Agora, se você iniciar uma sessão de depuração 1C:Enterprise a partir do configurador, ele se conectará automaticamente ao servidor de depuração e no configurador você verá os itens de depuração conectados.

Se a sessão 1C:Enterprise foi iniciada sem depuração, então, como antes, você pode conectá-la ao depurador. Só agora você precisa especificar o endereço do servidor de depuração:

Você pode encontrar este endereço nas configurações dos itens de depuração:

Há um ponto incomum associado ao trabalho com vários bancos de dados de arquivos ao mesmo tempo. Na versão arquivo, cada configurador com depuração http habilitada lança sua própria cópia do servidor de depuração em portas diferentes:

Portanto, se você tiver vários configuradores abertos ao mesmo tempo, para conectar o aplicativo cliente ao depurador você precisa selecionar o correto.

Opção cliente-servidor

Antes de iniciar a depuração na versão cliente-servidor, você precisa, como antes, iniciar o servidor 1C:Enterprise no modo de depuração, mas especificar que o novo mecanismo HTTP será usado para depuração. Por exemplo, assim:

ragent.exe -debug -http

Quando o servidor for iniciado desta forma, o servidor de depuração também será iniciado.

O parâmetro proprietárioPID indicará o identificador do gerenciador de cluster 1C:Enterprise.

Agora nas configurações do configurador, como no caso do banco de dados de arquivos, você precisa indicar que deseja utilizar o novo mecanismo de depuração - “ Depuração HTTP».

Nesse caso, o configurador solicitará automaticamente que você use o servidor de depuração de cluster e não o servidor local. Você precisa concordar com isso e reiniciar o configurador.

Conectando itens de depuração

Ao iniciar sessões de depuração a partir do configurador, os aplicativos conectam automaticamente itens de depuração (cliente e servidor) ao servidor de depuração.

Ao mesmo tempo, como antes, você tem a oportunidade de configurar o configurador para conectar automaticamente os itens de depuração, independentemente de como foram iniciados. Agora essas possibilidades tornaram-se muito mais ricas.

Em primeiro lugar, a plataforma agora oferece todos os itens de depuração possíveis para você escolher.

E em segundo lugar, apareceu outra forma mais sutil de configuração. Este é o uso de seleções pré-criadas.

Você pode usar essas seleções ao conectar itens de depuração e para visualizar itens de depuração disponíveis.

Na seleção, além dos próprios itens de depuração, você pode especificar usuários específicos cujas sessões são de seu interesse e também, caso seja utilizada separação de dados, indicar a área da infobase que será depurada.

Alterando variáveis, propriedades de objetos e avaliando expressões de forma assíncrona

O novo mecanismo de depuração permite alterar os valores das variáveis ​​​​durante a depuração. No mecanismo anterior não existia essa possibilidade.

Para visualização e alteração convenientes de variáveis ​​locais, que parece ser a tarefa mais comum, implementamos o “ Variáveis ​​locais».

Externamente, é muito semelhante ao “Placar” com o qual você está acostumado. Mas, em primeiro lugar, esta janela já é preenchida automaticamente com todas as variáveis ​​locais e, em segundo lugar, agora você pode alterar os valores das variáveis.

Você pode alterar os valores dos tipos primitivos diretamente na célula " Significado»:

E para alterar outros valores, você pode usar a janela de entrada da expressão:

Um bom bônus é que a dica contextual é totalmente funcional nesta janela.

Exatamente da mesma maneira, você pode alterar os valores de qualquer variável (não apenas local) e propriedades graváveis. Na janela de cálculo de expressão (que é chamada pelo comando Shift+F9), você pode alterar os valores das variáveis ​​​​tanto na célula “Valor” quanto em uma caixa de diálogo separada.

A propósito, o cálculo da expressão em si agora é executado de forma assíncrona. Isso significa que o configurador ordena o cálculo do item de depuração. E já faz algum tempo que esse cálculo é esperado no servidor. Se o cálculo for concluído, os resultados são enviados imediatamente para o configurador. Se o cálculo for realizado por um longo período, os resultados desses cálculos chegarão posteriormente ao configurador de forma assíncrona. Esta abordagem permite que você não espere longos cálculos no configurador e continue seu trabalho.