BR112014018531B1 - Método executável por computador para software de depuração remota em um ambiente de nuvem e sistema de computação - Google Patents

Método executável por computador para software de depuração remota em um ambiente de nuvem e sistema de computação Download PDF

Info

Publication number
BR112014018531B1
BR112014018531B1 BR112014018531-0A BR112014018531A BR112014018531B1 BR 112014018531 B1 BR112014018531 B1 BR 112014018531B1 BR 112014018531 A BR112014018531 A BR 112014018531A BR 112014018531 B1 BR112014018531 B1 BR 112014018531B1
Authority
BR
Brazil
Prior art keywords
debug
software
controller
developer
cloud
Prior art date
Application number
BR112014018531-0A
Other languages
English (en)
Other versions
BR112014018531A8 (pt
BR112014018531A2 (pt
Inventor
Sung Hon Wu
Lubomir Birov
Anthony Crider
Jeffrey Young
Original Assignee
Microsoft Technology Licensing, Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BR112014018531A2 publication Critical patent/BR112014018531A2/pt
Publication of BR112014018531A8 publication Critical patent/BR112014018531A8/pt
Publication of BR112014018531B1 publication Critical patent/BR112014018531B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

método de depuração remota. capacidades de depuração para software funcionando em um ambiente de computação de nuvem são divulgadas. um controlador identifica quais máquinas na nuvem estão executando instâncias do software a ser depurado. um agente é implantado nas máquinas na nuvem para facilitar comunicação com a máquina do desenvolvedor. quando o desen-volvedor quer depurar software na máquina do agente, o agente baixa e instala um monitor na máquina. o agente configura a máquina para depuração remota através do monitor. um mecanismo de segurança assegura que somente desenvolvedores autenticados podem acessar o monitor e a máquina remota para depuração. um controlador determina auto-maticamente que máquinas podem ser depuradas, atualiza uma lista de processos disponíveis para depuração nas máquinas, e identifica como conectar um cliente de depuração de desenvolvedor às máquinas. o controlador permite a depuração remota somente quando solicita um desenvolvedor autenticado e somente para aqueles proces-sos que o desenvolvedor é permitido depurar.

Description

ANTECEDENTES
[001] Depuração é o processo de descobrir e fixar erros ou"bugs" em software. Geralmente, os desenvolvedores depuram um processo ou uma instância de um programa de computador. Uma ferramenta de software referida como um "depurador" é tipicamente usada para ajudar os desenvolvedores de software a depurar seus softwares. Depuração remota é um processo de depurar software que está funcionando em uma máquina diferente do que a máquina que o desenvolvedor está usando para escrever, analisar ou depurar o software. Uma ferramenta de "depurador remoto" é usada pelos desenvolvedores para fazer depuração remota. Os depuradores remotos tipicamente têm duas partes. O software de monitor funciona na máquina remota e capacita a máquina do desenvolvedor a se anexar à máquina remota e depurar software na máquina remota. O software do cliente funciona na máquina do desenvolvedor e conecta- se ao monitor, deste modo provendo uma interface para o desenvolvedor depurar software na máquina remota.
[002] Recentemente, torna-se comum para o desenvolvimento desoftware ser realizado em um ambiente de computação de nuvem. Neste contexto, o software que um desenvolvedor pode querer depurar está funcionando em servidores que o desenvolvedor não possui ou controla. Em vez disso, os servidores que executam o software estão frequentemente localizados em um centro de dados remoto que é possuído e/ou administrado por terceiros. Além disso, o desenvolvedor e terceiros usualmente não sabem que máquinas no ambiente de nuvem estão atualmente executando o software a ser depurado. Uma entidade de administração no ambiente de computação de nuvem avalia a demanda para o software e outros fatores, tais como requisitos de compartilhamento de carga e disponibilidade de máquina, e seleciona dinamicamente que máquinas (e quantas máquinas) devem executar o software. Como um resultado, é difícil para um desenvolvedor determinar que servidores na nuvem estejam executando o software. Em muitos casos, o proprietário ou administrador dos servidores no ambiente de nuvem limitam o acesso do desenvolvedor aos servidores e software de modo que somente certos processos podem ser depurados.
[003] Servidores e outras máquinas no ambiente de computaçãode nuvem podem ser acessados através de redes de computador públicas e/ou privadas distribuídas, tais como Internet ou intranets. Para conectar as máquinas no ambiente de computação de nuvem, o desenvolvedor tipicamente precisa usar a Internet pública para pelo menos parte da conexão. Mesmo se a nuvem do desenvolvedor identificar que máquinas estão executando o software, alguns servidores no ambiente de nuvem pode ser difícil de acessar a partir da Internet pública. Como um resultado, pode ser difícil obter uma conexão TCP/IP de rede direta entre a máquina do desenvolvedor e a máquina executando o software a ser depurado no ambiente de computação de nuvem.
[004] Erros, bugs e outras falhas no software não podem sernotados até o software ter funcionado durante longos períodos de tempo. Consequentemente, as máquinas que executam o software não precisam ser depuráveis todo o tempo, mas precisam somente ser configuradas para depuração quando o desenvolvedor quer ou precisa depurar o software.
SUMÁRIO
[005] Este sumário é proporcionado para introduzir uma seleção de conceitos em uma forma simplificada que é ainda descrita abaixo na Descrição Detalhada. Este sumário não pretende identificar aspectos chaves ou aspectos essenciais do assunto reivindicado, nem pretende ser usado para limitar o escopo do assunto reivindicado.
[006] As modalidades proporcionam capacidades de depuraçãopara software funcionando em um ambiente de computação de nuvem. Um controlador identifica que máquinas na nuvem estão executando instâncias do software a ser depurado. Um agente é implantado nas máquinas na nuvem. O agente facilita comunicação com a máquina do desenvolvedor. Quando o desenvolvedor quer depurar software na máquina do agente, o agente baixa e instala o monitor na máquina. O agente configura a máquina para depuração remota através do monitor. Um mecanismo de segurança assegura que somente desenvolvedores autenticados podem acessar o monitor e a máquina remota para depuração.
[007] Em uma modalidade, um aplicativo de software na nuvemautomaticamente determina que máquinas podem ser depuradas, atualiza uma lista de processos que podem ser depurados nas máquinas, tal como uma lista de identificadores de processo, e identifica como conectar um cliente de depuração do desenvolvedor às máquinas.
[008] Em outra modalidade, um aplicativo de softwarefuncionando na nuvem permite depuração remota somente em solicitação de um desenvolvedor autenticado. O aplicativo remove acesso ao processo remoto após o desenvolvedor concluir a depuração. O aplicativo lista somente os processos que o desenvolvedor é permitido depurar. Todos os outros processos são filtrados de modo que o desenvolvedor não vê os processos para os quais ele não tem permissão.
[009] Em uma modalidade adicional, o aplicativo de software capacita um depurador remoto ser baixado e configurado em uma máquina remota executando a nuvem.
DESENHOS
[0010] Para esclarecer mais as vantagens e aspectos acima eoutros de modalidades da presente invenção, uma descrição maisparticular de modalidades da presente invenção será feita porreferência aos desenhos anexos. É apreciado que estes desenhosdescrevem somente modalidades típicas da invenção e, portanto, não devem ser considerados limitantes de seu escopo. A invenção será descrita e explicada com especificidade e detalhe adicionais através do uso dos desenhos anexos em que:a FIGURA 1 é um diagrama de bloco de um sistema para depuração remota em um ambiente de nuvem de acordo com uma modalidade;a FIGURA 2 é um fluxograma ilustrando um processo ou método para depurar software em máquinas remotas em um ambiente de nuvem;a FIGURA 3 é um diagrama de bloco de um sistema para depuração remota em um ambiente de nuvem de acordo com outra modalidade; ea FIGURA 4 ilustra um exemplo de um ambiente de computação e de rede 400 apropriado, tal como uma máquina de desenvolvedor e/ou servidores baseados em nuvem remotos em uma modalidade.
DESCRIÇÃO DETALHADA
[0011] A FIGURA 1 é um diagrama de bloco de um sistema paradepurar remotamente software em um ambiente de nuvem de acordo com uma modalidade. O cliente de depuração 101 é usado por desenvolvedores para depurar aplicativos de software. O cliente de depuração 101 pode ser um aplicativo autônomo ou pode ser um componente de um ambiente de desenvolvimento integrado (IDE) que permite ao desenvolvedor projetar e depurar aplicativos de software. O controlador 102 é um aplicativo de software que identifica e monitora detalhes de configuração para o ambiente de nuvem. O controlador 102 tem a capacidade de consultar o ambiente de nuvem para detalhes sobre que máquinas estão executando instâncias 103 de software a ser depuradas pelo desenvolvedor. Qualquer número de instâncias do software 103 pode funcionar de uma vez. Instâncias do software 103 múltiplas podem estar funcionando na mesma máquina e/ou podem ser difundidas através de um número de máquinas diferentes.
[0012] O controlador 102 provê identidades de máquina,identidades de processo e qualquer outra informação necessária para cliente de depuração 101 de modo que o desenvolvedor pode depurar instâncias do software 103 funcionando nas várias máquinas remotas. O controlador 102 pode atualizar os detalhes do ambiente de nuvem, tais como identidades de máquina e identidades de processo para as instâncias do software 103 a serem depuradas na base de interesse constante, assim o cliente de depuração 101 e o desenvolvedor sempre têm a informação mais correta para depuração. Em uma modalidade, o controlador 102 somente retorna informação para processos funcionando nas máquinas para os quais o cliente de depuração 101 tem permissão para acessar. Se o proprietário da máquina não dá permissão ao desenvolvedor ou cliente de depuração, então o controlador 102 não identifica aquelas instâncias de software para impedir tentativas de depurar processos para os quais o desenvolvedor não tem permissão.
[0013] Os agentes 104 são implantados para cada instância desoftware 103 ou para cada máquina que está executando uma ou mais instância de software 103. Os agentes 104 comunicam-se com o cliente de depuração 101 através do controlador 102. Os agentes 104 ouvem comandos indicando que o desenvolvedor quer depurar o software 103 na máquina. Em uma modalidade, o controlador 132 pode ordenar aos agentes 103 para configurar ou instalar uma máquina para depuração. Os agentes 104 podem ser aplicativos de software que têm a capacidade de baixar e instalar um monitor 105. Os agentes 104 então configuram a máquina, tal como abrindo portas de firewall, ajustando permissões apropriadas, etc., de modo que o monitor 105 possa funcionar na máquina.
[0014] O conector 106 é um aplicativo de software que funciona noambiente de nuvem. O conector 106 atua como uma ponte para conexões de cliente de depuração 101 na Internet pública para monitores 105, que estão funcionando em máquinas que não são acessíveis publicamente. O conector 106 pode ser um roteador, por exemplo, que autentica as conexões e solicitações de encaminhamento do cliente de depuração 101 ao monitor apropriado 105.
[0015] O software do agente 104 pode ser implantado junto com ocódigo de software para ser depurado, ou pode ser implantado em um momento posterior.
[0016] A FIGURA 2 é um fluxograma ilustrando um processo oumétodo para depurar software em máquinas remotas em um ambiente de nuvem. Na etapa 201, o desenvolvedor abre um cliente de depuração e seleciona o código de software a ser depurado. Na etapa 202, o cliente de depuração comunica-se com o controlador para identificar instâncias do software a ser depurado que estão funcionando em um ambiente de nuvem. Na etapa 203, o controlador identifica as máquinas e processos associados com as instâncias do software a ser depurado solicitando aplicativos de agente nas máquinas remotas para informação de estado de software, por exemplo. Os aplicativos de agente proporcionam informação de estado de software ao controlador, que então envia uma lista de máquinas e processo para exibir ao desenvolvedor na etapa 204. Usando o cliente de depuração na etapa 205, o desenvolvedor seleciona uma ou mais instância do software a ser depurado. A instância de software pode ser identificada, por exemplo, como um processo particular funcionando em uma das máquinas.
[0017] Na etapa 206, o cliente de depuração identifica a instânciade software a ser depurada para o controlador. Na etapa 207, o controlador então instrui o agente na máquina associado com a instância de software para configurar a máquina para depuração remota. O agente baixa e instala o software de monitor na máquina n etapa 208, se o monitor ainda não estiver disponível. O agente configura a máquina na etapa 209, por exemplo, adicionando permissões apropriadas e contas de usuário, abrindo portas de firewall e iniciando o software de monitor.
[0018] O cliente de depuração fala com o conector na etapa 210,que encaminha a conexão ao monitor apropriado. Em algumas modalidades, o cliente de depuração pode não ser capaz de alcançar diretamente o software funcionando na máquina. No entanto, o conector proporciona e administra interfaces entre a Internet pública e conexões de rede privada no ambiente de nuvem. O conector autentica o cliente de depuração e então conecta o cliente e máquina na etapa 211. O desenvolvedor pode então começar a depurar a instância de software remota selecionada na etapa 212.
[0019] Será entendido que as etapas 201-212 do processoilustrado na FIGURA 2 podem ser executadas simultaneamente e/ou sequencialmente. Será entendido ainda que cada etapa pode ser realizada em qualquer ordem e podem ser realizadas uma vez ou repetidamente em outras modalidades.
[0020] A FIGURA 3 é um diagrama de bloco de um sistema paradepuração remota em um ambiente de nuvem de acordo com outra modalidade. Um desenvolvedor de software usa a máquina de desenvolvedor 301, que está executando um cliente de depuração 302, tal como um aplicativo IDE. O desenvolvedor pode querer depurar o software em máquinas ou servidores remotos. Como ilustrado na FIGURA 3, as máquinas remotas podem ser máquinas virtuais 303, 304 que estão em um ambiente de nuvem que é acessível somente através de uma rede pública ou privada 305, tal como a Internet ou uma intranet.
[0021] Múltiplas instâncias 306, 307 do software a ser depuradopodem ser implantadas nas máquinas virtuais 303, 304. Umcontrolador de depuração de nuvem 308 é usado para identificar as instâncias 306, 307 do software. Em uma modalidade, uma instância única do controlador de depuração de nuvem 308 é implantada a uma das máquinas virtuais 303, 304. Além disso, um conector dedepuração 309, 310 é implantado em cada máquina virtual 303, 304. Ao trabalhar com o controlador de depuração de nuvem 308, os conectores de depuração 309, 310 atuam como agentes paraconfigurar as máquinas 303, 304 a ser depuradas. O conector de depuração de nuvem 308 e os conectores de depuração 309, 310 podem ser implantados com as instâncias de software 306, 307 ou carregados em um momento posterior quando a depuração é iniciada na máquina de desenvolvedor 301.
[0022] O controlador de depuração de nuvem 308 descobre atopologia do ambiente de nuvem usando informação a partir do tempo de execução e estrutura de ambiente de nuvem. O controlador de depuração de nuvem 308 descobre os controladores de depuração 309, 310 e estabelece uma conexão para os mesmos. O controlador de depuração de nuvem 308 atua como um gateway e proporciona uma conexão visível dentro do ambiente de nuvem para a máquina de desenvolvedor 301. O Proxy de depuração de nuvem 311 proporciona uma ponte entre o transporte de depuração 312 na máquina de desenvolvedor 301 e o controlador de depuração de nuvem 308. Em uma modalidade, o transporte de depuração 312 cria uma vista compósita da topologia de nuvem para o cliente de depuração 302. Em um ambiente de computação de nuvem, os nomes das máquinas, endereços IP, números de portas e nomes de processos para as instâncias de software podem mudar uma vez que a carga de trabalho é dinamicamente equilibrada. O transporte de depuração 312 apresenta as instâncias de software como aplicativo único para depuração para o cliente de depuração 302. Desta forma, o cliente de depuração 302 e o desenvolvedor não têm que rastrear continuamente a informação para cada instância de software.
[0023] O controlador de depuração de nuvem 308 e os conectoresde depuração 309, 310 identificam instâncias do software a serdepurado. A lista de instâncias de software pode ser filtrada para incluir somente aqueles processos que podem ser depurados pela máquina de desenvolvedor 301. Por exemplo, se o desenvolvedor não tem permissão para acessar uma máquina virtual ou processo ou se o proprietário da máquina de outro modo restringiu as capacidades de depuração, as instâncias de software nessas máquinas não devem ser listadas para o cliente de depuração 302.
[0024] O software de monitor 313, 314 é carregado nas máquinasvirtuais 303, 304 para o software de depuração 306, 307. O software de monitor 313, 314 pode ser implantado com a instância de software ou conector de depuração 309, ou pode ser implantado posteriormente pelo controlador de depuração de nuvem 308.
[0025] Para depurar software, o cliente de depuração 302 enviauma solicitação ao controlador de depuração de nuvem 308 para descobrir a topologia de rede. O controlador de depuração de nuvem 308 comunica-se com os conectores 309, 310 e solicita informação sobre as instâncias do software a ser depurado. O controlador de depuração de nuvem 308 passa a informação para o cliente de depuração 302, que exibe quantas máquinas, processos e/ou instâncias de software foram descobertos. O desenvolvedor pode então selecionar uma ou todas as máquinas, processos e/ou instâncias para depurar. Em uma modalidade, uma interface ou visualização é provida que permite aos usuários escolher para depuração remota simultânea de todas as instâncias de um aplicativo de software que estão funcionando em máquinas diferentes. O usuário pode selecionar esta depuração simultânea através de todas as máquinas em uma ação, tal como em um clique ou seleção. Uma conexão é então estabelecida automaticamente pelo sistema entre o cliente de depuração 302 e o monitor 313, 314 para as instâncias de software selecionadas. O desenvolvedor pode então acessar as instâncias de software selecionadas através do monitor 313, 314.
[0026] A FIGURA 4 ilustra um exemplo de um ambiente decomputação e de rede 400, tal como uma máquina de desenvolvedor e/ou servidores baseados em nuvem remotos em uma modalidade, que suporta o cliente de depuração e/ou as instâncias de software remotas que são depuradas bem como facilita a conexão da máquina de desenvolvedor e servidores remotos usando controlador, conectores, agentes e monitores como descrito no presente documento. O ambiente de sistema de computação 400 é somente um exemplo de um ambiente de computação apropriado e não pretende sugerir qualquer limitação como para o escopo de uso ou funcionalidade da invenção. A invenção é operacional com numerosos outros fins gerais ou ambientes de sistema de computação ou configurações para fins especiais. Exemplos de sistemas de computação bem conhecidos, ambientes e/ou configurações que podem ser apropriados para uso com a invenção incluem, mas não são limitados a: computadores pessoais, computadores de servidores, dispositivos portáteis ou laptop, dispositivos de tablet, sistemas de multiprocessadores, sistemas baseados em microprocessadores, decodificadores de sinais, eletrônicos de consumidor programáveis. PCs de rede, minicomputadores, computadores de mainframe, ambientes de computação distribuídos que incluem qualquer um dos sistemas ou dispositivos acima, e semelhante.
[0027] O cliente de depuração, controlador, conector, agente,monitor e instâncias de software que são depurados podem ser descritos no contexto geral de instruções executáveis por computador, tais como módulos de programa, que são executadas por um computador. Geralmente, os módulos de programa incluem rotinas, programas, objetos, componentes, estruturas de dados, e assim em diante, que realizam tarefas particulares ou implementam tipos de dados abstratos particulares. A invenção também pode ser praticada em ambientes de computação distribuídos onde tarefas são realizadas por dispositivos de processamento remotos que são ligados através de uma rede de comunicações. Em um ambiente de computação distribuído, módulos de programa pode estar localizados em meios de armazenamento por computador locais e/ou remotos incluindo dispositivos de armazenamento de memória.
[0028] Com referência à FIGURA 4, um sistema exemplar paraimplementar vários aspectos da invenção pode incluir um dispositivo de computação para fins gerais na forma de um computador 400. Os componentes podem incluir, mas não estão limitados a, vários componentes de hardware, tais como unidade de processamento 401, armazenamento de dados 402, tal como uma memória de sistema, e barramento de sistema 403 que acopla vários componentes de sistema incluindo o armazenamento de dados 402 à unidade de processamento 401. O barramento de sistema 403 pode ser qualquer um de vários tipos de estruturas de barramento incluindo um barramento de memória ou controlador de memória, um barramento periférico, e um barramento local usando qualquer uma de uma variedade de arquiteturas de barramento. A título de exemplo, e não de limitação, tais estruturas incluem barramento de Arquitetura Padrão Industrial (ISA), barramento de Arquitetura de Micro Canal (MCA), barramento de ISA Melhorado (EISA), barramento loção da Associação de Padrões Eletrônicos de Vídeo (VESA), e barramento de Interconexão de Componentes Periféricos (PCI), mas, também, conhecido como barramento Mezanino.
[0029] O computador 400 inclui tipicamente uma variedade demeios legíveis por computador 404 podem ser quaisquer meios disponíveis que podem ser acessados pelo computador 401 e inclui tanto meios voláteis como não voláteis, e meios removíveis e não removíveis, mas exclui sinais propagados. A título de exemplo, e não de limitação, os meios legíveis por computador 404 podem compreender meios de armazenamento por computador e meios de comunicação. Os meios de armazenamento por computador incluem meios voláteis e não voláteis removíveis e não removíveis implementados em qualquer método ou tecnologia para armazenamento de informação tais como instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados. Os meios de armazenamento por computador incluem, nas não estão limitados, à memória RAM, ROM, EEPROM, flash ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento de disco ótico, cassetes magnéticos, fita magnética, armazenamento de disco magnético ou outros dispositivos de armazenamento magnéticos, ou qualquer outro meio que pode ser usado para armazenar a informação desejada e que pode ser acessado pelo computador 400. Os meios de comunicação incorporam tipicamente instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados em um sinal de dados modulado tal como uma onda de transporte ou outro mecanismo de transporte e inclui quaisquer meios de liberação de informação. O termo "sinal de dados modulado" significa um sinal que tem uma ou mais de suas características fixadas ou tocadas de tal modo como para codificar informação no sinal. A título de exemplo, e não de limitação, os meios de comunicação incluem meios com fio tal como uma rede com fio ou conexão com fio direta, e meios sem fio tais como meios acústicos, de RF, de infravermelho e outros meios sem fio. Combinações de qualquer um dos acima também podem ser incluídas dentro do escopo dos meios legíveis por computador. Os meios legíveis por computador podem ser incorporados como um produto de programa de computador, tal como um software armazenado nos meios de armazenamento por computador.
[0030] O armazenamento de dados ou memória de sistema 402inclui meios de armazenamento por computador na forma de memória volátil e/ou não volátil tais como memória somente de leitura (ROM) e memória de acesso aleatório (RAM). Um sistema de entrada/saída básico (BIOS), contendo as rotinas básicas que ajudam a transferir informação entre elementos dentro do computador 400, tal como durante inicialização, é tipicamente armazenado em ROM, RAM contém tipicamente dados e/ou módulos de programa que são imediatamente acessíveis a e/ou sendo presentemente operados pela unidade de processamento 401. A título de exemplo, e não de limitação, o armazenamento de dados 402 retém um sistema operacional, programas de aplicativos, e outros módulos de programa e dados de programa.
[0031] O armazenamento de dados 402 também pode incluiroutros meios de armazenamento por computador removíveis e/ou não removíveis, voláteis e/ou não voláteis. A título de exemplo somente, o armazenamento de dados 402 pode ser um drive de disco rígido que lê a partir de ou escreve aos meios magnéticos não removíveis, não voláteis, uma unidade de disco magnético que lê a partir de ou escreve para um disco magnético removível, não volátil, e uma unidade de disco ótico que lê a partir de ou escreve a um disco ótico removível, não volátil tal como um CD ROM ou outros meios óticos. Outros meios de armazenamento por computador removíveis/não removíveis, voláteis/não voláteis que podem ser usados no ambiente operacional exemplar incluem, mas não estão limitados a cassetes de fita magnética, cartões de memória flash, discos versáteis digitais, fita de vídeo digital, RAM no estado sólido, ROM no estado sólido, e semelhante. As unidades e seus meios de armazenamento por computador associados, descritos acima e ilustrados na FIGURA 4, proporcionam armazenamento de instruções legíveis por computador, estruturas de dados, módulos de programa e outros dados para o computador 400.
[0032] Um usuário pode introduzir comandos e informação atravésde uma interface de usuário 405 ou outros dispositivos de entrada tais como um tablet, digitalizador eletrônico, um microfone, teclado e/ou dispositivo de apontamento, comumente referidos como mouse, TrackBall ou teclado sensível ao toque. Outros dispositivos de entrada podem incluir um joystick, game pad, antena parabólica, escâner, ou semelhante. Além disso, entradas de voz, entradas de gesto usando mãos e dedos, ou outra interface de usuário natural (NUI) também podem ser usadas com os dispositivos de entrada apropriados, tais como um microfone, câmera, tablet, teclado sensível ao toque, luva, ou outro sensor. Estes e outros dispositivos de entrada são frequentemente conectados à unidade de processamento 401 através de uma interface de entrada de usuário 405 que é acoplada ao barramento de sistema 403, mas pode ser conectada por outras estruturas de interface e barramento, tais como uma porta paralela, porta de jogos ou um barramento serial universal (USB). Um monitor 406 ou outro tipo de dispositivo de exibição também é conectado ao barramento de sistema 403 através de uma interface, tal como interface de vídeo. O monitor 406 também pode ser integrado com um painel de tela de toque ou semelhante. Notar que o monitor e/ou painel de tela de toque pode ser acoplado fisicamente a um alojamento ao qual o dispositivo de computação 400 é incorporado, tal como em um computador pessoal do tipo tablet. Além disso, computadores tal como o dispositivo de computação 400 podem incluir também outros dispositivos de saída periféricos tais como alto-falantes e impressora, que podem ser conectados através de uma interface periférica de saída ou semelhante.
[0033] O computador 400 pode operar em um ambiente de redeou de computação de nuvem usando conexões lógicas 407 para um ou mais dispositivos remotos, tal como um computador remoto. O computador remoto pode ser um computador pessoal, um servidor, um roteador, um PC de rede, um dispositivo ponto a ponto, ou outro nó de rede comum, e tipicamente inclui muitos ou todos dos elementos descritos acima em relação ao computador 400. As conexões lógicas descritas na FIGURA 4 incluem uma ou mais redes de área local (LAN) e uma ou mais redes de longa distância (WAN), mas também podem incluir outras redes. Tais ambientes de rede são lugares comuns em escritórios, redes de computador grandes de empresa, intranets e a Internet.
[0034] Quando usado em um ambiente de rede ou de computaçãode nuvem, o computador 400 pode ser conectado a uma rede pública ou privada através de uma interface de rede ou adaptador 407. Em algumas modalidades, um modem ou outro meio para estabelecer comunicações ao longo da rede. O modem, que pode ser interno ou externo, pode ser conectado ao barramento de sistema 403 através de uma interface de rede 407 ou outro mecanismo apropriado. Um componente de rede sem fio tal como compreendendo uma interface e antena pode ser acoplado através de um dispositivo apropriado tal como um ponto de acesso ou computador ponto a ponto a uma rede. Em um ambiente de rede, módulos de programa descritos em relação ao computador 400, ou porções do mesmo, podem ser armazenados no dispositivo de armazenamento de memória remoto. Pode ser apreciado que as conexões de rede mostradas são exemplares e outro meio de estabelecer um link de comunicações entre os computadores pode ser usado.
[0035] Embora o assunto tenha sido descrito na linguagemespecífica para os aspectos estruturais ou atos metodológicos, deve ser entendido que o assunto definido nas reivindicações anexas não é necessariamente limitado aos aspectos ou atos específicos. Preferivelmente, os aspectos e atos específicos descritos acima são divulgados como formas exemplares de implementar as reivindicações.

Claims (2)

1. Método executável por computador para software de depuração remota em um ambiente de nuvem, o método executável por computador caracterizado pelo fato de que compreende as etapas de:comunicar-se, por um cliente de depuração (302) em uma máquina desenvolvedora (301), com um controlador (308) para identificar instâncias (306, 307) de um aplicativo de software a ser depurado, em que as instâncias do aplicativo de software estão em execução em máquinas virtuais (VMs), no ambiente de nuvem, em que o controlador é implantado em uma (303) das VMs (303, 304), em que um conector de depuração (309, 310) é implantado em cada uma das VMs,em que o cliente de depuração envia uma solicitação ao controlador para descobrir uma topologia do ambiente em nuvem, eem que o controlador descobre a topologia do ambiente em nuvem usando informações do tempo de execução e da estrutura do ambiente em nuvem, comunicando-se com os conectores de depuração e solicitando informações sobre as instâncias do aplicativo de software a serem depuradas, eem que uma visão composta da topologia em nuvem é criada para o cliente de depuração, apresentando as instâncias de software como aplicativo único para depuração no cliente de depuração (302);identificar (203), pelo controlador, as VMs no ambiente em nuvem que estão executando as instâncias do aplicativo de software e os processos associados às instâncias do aplicativo de software,em que o controlador retorna (204) informação para os processos em execução nas VMs para o cliente de depuração, para os quais o cliente de depuração tem permissões para acessar;selecionar (205) a instância do software a ser depurada usando o cliente de depuração;receber (206), no controlador, uma solicitação do cliente de depuração para depurar a instância selecionada do aplicativo de software;instruir (207), pelo controlador, um agente para configurar a VM associada à instância selecionada para depuração remota, em que o agente é executado na VM associada à instância selecionada, em que o conector de depuração implementado na VM associada à instância selecionada atua como o agente para configurar a VM e em que o agente configura (209) a VM adicionando permissões para um desenvolvedor à VM;estabelecer uma conexão entre o cliente de depuração e um aplicativo de monitoramento na VM associada à instância selecionada do aplicativo de software; edepurar (212) a instância selecionada do aplicativo de software usando o cliente de depuração.
2. Sistema de computação caracterizado pelo fato de que está adaptado para executar o método executável por computador conforme definido na reivindicação 1.
BR112014018531-0A 2012-02-17 2013-02-11 Método executável por computador para software de depuração remota em um ambiente de nuvem e sistema de computação BR112014018531B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/398,851 2012-02-17
US13/398,851 US9251039B2 (en) 2012-02-17 2012-02-17 Remote debugging as a service
PCT/US2013/025483 WO2013122844A1 (en) 2012-02-17 2013-02-11 Remote debugging as a service

Publications (3)

Publication Number Publication Date
BR112014018531A2 BR112014018531A2 (pt) 2017-06-20
BR112014018531A8 BR112014018531A8 (pt) 2017-12-12
BR112014018531B1 true BR112014018531B1 (pt) 2021-12-14

Family

ID=48983357

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014018531-0A BR112014018531B1 (pt) 2012-02-17 2013-02-11 Método executável por computador para software de depuração remota em um ambiente de nuvem e sistema de computação

Country Status (5)

Country Link
US (2) US9251039B2 (pt)
EP (1) EP2815320B1 (pt)
CN (1) CN104126176B (pt)
BR (1) BR112014018531B1 (pt)
WO (1) WO2013122844A1 (pt)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9720809B2 (en) 2012-02-17 2017-08-01 Microsoft Technology Licensing, Llc Dynamically enabling debugging over the internet
WO2013142948A1 (en) 2012-03-30 2013-10-03 Irdeto Canada Corporation Method and system for preventing and detecting security threats
US8819640B2 (en) * 2012-07-24 2014-08-26 International Business Machines Corporation Establishing cloud debug breakpoints assigned to users
US8954546B2 (en) * 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US20140025572A1 (en) * 2013-01-25 2014-01-23 Concurix Corporation Tracing as a Service
US9207969B2 (en) 2013-01-25 2015-12-08 Microsoft Technology Licensing, Llc Parallel tracing for performance and detail
US9021262B2 (en) 2013-01-25 2015-04-28 Concurix Corporation Obfuscating trace data
US8924941B2 (en) 2013-02-12 2014-12-30 Concurix Corporation Optimization analysis using similar frequencies
US8997063B2 (en) 2013-02-12 2015-03-31 Concurix Corporation Periodicity optimization in an automated tracing system
US20130283281A1 (en) 2013-02-12 2013-10-24 Concurix Corporation Deploying Trace Objectives using Cost Analyses
US20130219372A1 (en) 2013-03-15 2013-08-22 Concurix Corporation Runtime Settings Derived from Relationships Identified in Tracer Data
US9575874B2 (en) 2013-04-20 2017-02-21 Microsoft Technology Licensing, Llc Error list and bug report analysis for configuring an application tracer
CN103457765B (zh) * 2013-08-23 2017-03-01 中安消技术有限公司 一种网络协议调试方法、装置和系统
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
CN105765528B (zh) 2013-11-13 2019-09-24 微软技术许可有限责任公司 具有可配置原点定义的应用执行路径跟踪的方法、系统和介质
US9519513B2 (en) 2013-12-03 2016-12-13 Vmware, Inc. Methods and apparatus to automatically configure monitoring of a virtual machine
JP6244942B2 (ja) * 2014-01-28 2017-12-13 株式会社リコー 起動制御装置、通信システム、プログラム、及び起動制御方法
US9678731B2 (en) 2014-02-26 2017-06-13 Vmware, Inc. Methods and apparatus to generate a customized application blueprint
CN104967585B (zh) * 2014-04-15 2018-07-20 腾讯科技(深圳)有限公司 一种远程调试移动终端的方法和装置
US20150378763A1 (en) 2014-06-30 2015-12-31 Vmware, Inc. Methods and apparatus to manage monitoring agents
US9740593B2 (en) * 2015-01-08 2017-08-22 International Business Machines Corporation Comparative program execution through control of two or more debug sessions to automatically determine execution differences
US10353762B2 (en) * 2015-06-11 2019-07-16 Instana, Inc. Hierarchical fault determination in an application performance management system
US10671470B2 (en) * 2015-06-11 2020-06-02 Instana, Inc. Application performance management system with dynamic discovery and extension
US10235262B2 (en) 2015-06-11 2019-03-19 Instana, Inc. Recognition of operational elements by fingerprint in an application performance management system
US9971675B2 (en) 2016-04-04 2018-05-15 International Business Machines Corporation Triggering debug processing within a scalable cloud environment
US10547601B2 (en) * 2016-06-06 2020-01-28 Salesforce.Com, Inc. System and method to allow third-party developer to debug code in customer environment
US9983988B1 (en) * 2016-06-23 2018-05-29 Amazon Technologies, Inc. Resuming testing after a destructive event
CN106254436B (zh) * 2016-07-28 2020-02-11 腾讯科技(深圳)有限公司 一种远程调试的方法、相关设备及系统
CN107480484A (zh) * 2016-11-02 2017-12-15 深圳市波普安创技术有限公司 信息安全设备的合法应用调试系统及其方法
US10303580B2 (en) 2017-01-11 2019-05-28 International Business Machines Corporation Controlling debug processing
US20180248759A1 (en) * 2017-02-27 2018-08-30 Alcatel-Lucent Usa Inc. Troubleshooting in remote management services
US10505787B2 (en) 2017-02-27 2019-12-10 Nokia Of America Corporation Automatic recovery in remote management services
US10223241B2 (en) 2017-03-02 2019-03-05 International Business Machines Corporation Resuming a remote debugging session using a backup node
US10908981B2 (en) * 2017-03-31 2021-02-02 Cae Inc. Method and system for diagnosis of a simulator
CN107277107B (zh) * 2017-05-15 2020-11-13 深信服科技股份有限公司 应用调试方法、装置及系统
CN107819846B (zh) * 2017-11-07 2022-01-07 北京三快在线科技有限公司 一种远程连接方法及装置
US10783060B2 (en) * 2018-05-02 2020-09-22 Servicenow, Inc. Post-upgrade debugging in a remote network management platform
US10740217B1 (en) * 2018-05-22 2020-08-11 Parallels International Gmbh Non-native system-level debugging using symbolic information
US11468134B2 (en) 2018-09-26 2022-10-11 International Business Machines Corporation Provisioning a customized software stack for network-based question and answer services
US10938641B1 (en) * 2018-11-09 2021-03-02 Amazon Technologies, Inc. On-demand development environment
US11113385B2 (en) 2018-12-21 2021-09-07 Paypal, Inc. Communicating trace information between security zones
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11455398B2 (en) * 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11829277B2 (en) * 2019-03-21 2023-11-28 Dish Network Technologies India Private Limited Systems and methods for remote debugging
CN111176870B (zh) * 2019-08-01 2022-07-08 腾讯科技(深圳)有限公司 一种原因定位方法、装置、终端及存储介质
CN111367561B (zh) * 2020-03-31 2023-09-22 中国工商银行股份有限公司 软件程序远程开发方法及装置

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819093A (en) 1995-03-03 1998-10-06 Sun Microsystems, Inc. System and method for a distributed debugger for debugging distributed application programs
CA2205096C (en) * 1997-05-09 2001-10-09 Ibm Canada Limited-Ibm Canada Limitee A system for remote debugging of client/server applications
WO2001040940A2 (en) 1999-12-02 2001-06-07 Microsoft Corporation Method and apparatus for remotely debugging computer software over a serial bus
US20030005407A1 (en) * 2000-06-23 2003-01-02 Hines Kenneth J. System and method for coordination-centric design of software systems
US7873872B1 (en) 2001-07-10 2011-01-18 Versata Development Group, Inc. System and method for remotely debugging application programs
EP1408410A1 (en) 2002-09-30 2004-04-14 Sap Ag Remote debugging of computer programs
US7650592B2 (en) * 2003-03-01 2010-01-19 Bea Systems, Inc. Systems and methods for multi-view debugging environment
GB0315191D0 (en) * 2003-06-28 2003-08-06 Ibm Methods, apparatus and computer programs for visualization and management of data organisation within a data processing system
US7216257B2 (en) * 2004-01-21 2007-05-08 Sap Ag Remote debugging
US7512934B2 (en) * 2004-08-25 2009-03-31 Microsoft Corporation Parallel debugger
US7882492B2 (en) * 2004-09-17 2011-02-01 Oracle America, Inc. Intelligent computer program debugger, and system and method for implementing the same
US20060101418A1 (en) * 2004-10-21 2006-05-11 International Business Machines Corporation Apparatus and method for automatic generation of event profiles in an integrated development environment
US7748033B2 (en) * 2005-02-25 2010-06-29 Microsoft Corporation Windows remote debugger service
US7673180B1 (en) 2005-05-05 2010-03-02 Sun Microsystems, Inc. Method and apparatus for dispatching a remote debugging agent in a distributed computing environment
US7849445B2 (en) 2005-12-20 2010-12-07 Sap Ag Remote user interface for external connections
US20070168997A1 (en) * 2005-12-20 2007-07-19 Duong-Han Tran Debugging of remote application software on a local computer
US7802232B2 (en) * 2006-03-31 2010-09-21 Microsoft Corporation Software robustness through search for robust runtime implementations
US8060866B2 (en) * 2007-10-19 2011-11-15 GE Intelligent Platforms, Inc Systems and methods for debugging multiple workflow instances
US20100077385A1 (en) * 2008-09-23 2010-03-25 Microsoft Corporation Debugger exception filtering with target-based rules
US8392885B2 (en) * 2008-12-19 2013-03-05 Microsoft Corporation Low privilege debugging pipeline
US20100192121A1 (en) 2009-01-23 2010-07-29 Microsoft Corporation Debugging remote files using a virtual project
KR101060181B1 (ko) * 2009-08-03 2011-08-29 강원대학교산학협력단 원격 디버깅을 위한 웹 기반 소프트웨어 디버깅 장치 및 그 방법
US8819701B2 (en) * 2009-12-12 2014-08-26 Microsoft Corporation Cloud computing monitoring and management system
US20110225459A1 (en) 2010-03-09 2011-09-15 Microsoft Corporation Generating a debuggable dump file for a virtual machine
US8171346B2 (en) * 2010-03-10 2012-05-01 Microsoft Corporation Client session based debugging
US8972953B2 (en) * 2010-04-16 2015-03-03 Salesforce.Com, Inc. Methods and systems for internally debugging code in an on-demand service environment
US8752017B2 (en) * 2010-05-17 2014-06-10 Salesforce.Com, Inc. Method and system for remote debug protocol proxying for production debugging; selective session and user routing for debugging in multi-tenant cloud computing infrastructure
JP2012079130A (ja) * 2010-10-01 2012-04-19 Fujitsu Ltd デバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法

Also Published As

Publication number Publication date
WO2013122844A1 (en) 2013-08-22
CN104126176B (zh) 2017-08-11
EP2815320A4 (en) 2015-09-30
BR112014018531A8 (pt) 2017-12-12
US20160162322A1 (en) 2016-06-09
US9251039B2 (en) 2016-02-02
US20130219363A1 (en) 2013-08-22
EP2815320A1 (en) 2014-12-24
US9965312B2 (en) 2018-05-08
BR112014018531A2 (pt) 2017-06-20
EP2815320B1 (en) 2018-05-16
CN104126176A (zh) 2014-10-29

Similar Documents

Publication Publication Date Title
BR112014018531B1 (pt) Método executável por computador para software de depuração remota em um ambiente de nuvem e sistema de computação
US9720809B2 (en) Dynamically enabling debugging over the internet
US20190207925A1 (en) Domain joined virtual names on domainless servers
JP2020536318A (ja) デプロイされたコンテナプラットフォームにおけるインスタンスのリアルタイムデバッグ
Toraldo Opennebula 3 cloud computing
EP2499784B1 (en) Model-based virtual networking
Smith Docker Orchestration
US9483287B2 (en) Communication infrastructure for virtual machines
WO2015184179A1 (en) Customized configuration of cloud-based applications prior to deployment
US20230131898A1 (en) Techniques for building and validating database software in a shared management environment
US11966880B2 (en) Policies and controls for building and validating database software in a shared management environment
JP7042624B2 (ja) 評価プラットフォームのための監査を行うための方法およびシステム
Krochmalski Docker and Kubernetes for Java Developers
Smyth Centos 8 essentials
US20230125904A1 (en) Recommendation system for building and validating database software in a shared management environment
O'Leary et al. Remote Windows Management
Cohen et al. The Android OS
WO2023069500A1 (en) Techniques for building and validating database software in a shared management environment
Noertjahyana et al. Implementation of Private Cloud for Optimization of Computer Resources at University
Berton Ansible for K8s Tasks
Sanuy Lostes Profiling HPC applications in containerized environments
de Sousa Barros Remote Boot Manager: Operating System Installer
Frampton et al. Apache Brooklyn
Hausladen et al. A cloud-based approach to development of embedded systems software
Xu Security enhancement of secure USB debugging in Android system

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 11/02/2013, OBSERVADAS AS CONDICOES LEGAIS.