BR112015002451B1 - Método implementado por computador em um ambiente de computação para depurar um processo alvo e ambiente de computação - Google Patents

Método implementado por computador em um ambiente de computação para depurar um processo alvo e ambiente de computação Download PDF

Info

Publication number
BR112015002451B1
BR112015002451B1 BR112015002451-3A BR112015002451A BR112015002451B1 BR 112015002451 B1 BR112015002451 B1 BR 112015002451B1 BR 112015002451 A BR112015002451 A BR 112015002451A BR 112015002451 B1 BR112015002451 B1 BR 112015002451B1
Authority
BR
Brazil
Prior art keywords
snapshot
lightweight
debugged
debugger
computer
Prior art date
Application number
BR112015002451-3A
Other languages
English (en)
Other versions
BR112015002451A2 (pt
Inventor
Jackson Davis
Tae Hyung Kim
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 BR112015002451A2 publication Critical patent/BR112015002451A2/pt
Publication of BR112015002451B1 publication Critical patent/BR112015002451B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3096Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents wherein the means or processing minimize the use of computing system or of computing system component resources, e.g. non-intrusive monitoring which minimizes the probe effect: sniffing, intercepting, indirectly deriving the monitored data from other directly available data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

Landscapes

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

Abstract

método implementado por computador em um ambiente de computação para depurar um processo alvo e ambiente de computação. a invenção refere-se a um depurador que cria um instantâneo de processo leve de um processo alvo depurado e executa inspeção durante o processo ou avaliação de função (func-eval) em relação à cópia. isto permite que a maior parte do estado do processo depurado permaneça intacta devido às alterações feitas pela avaliação de função serem locais ao instantâneo do processo. as operações do depurador que são muito destrutivas para o processo original depurado podem ser executadas no instantâneo do processo sem ameaçar o processo real. instantâneos do processo permitem ao depurador executar uma avaliação de função enquanto isolando o processo depurado e não perdendo o estado real do processo real depurado. um novo instantâneo do processo do processo depurado é criado quando o instantâneo corrente está corrompido devido a um efeito colateral da avaliação de função. o depurador também pode utilizar um instantâneo de máquina leve da máquina hospedeira depurada e executar avaliações de função em relação ao instantâneo da máquina para adicionalmente isolar o kernel e outros efeitos colaterais.

Description

ANTECEDENTES
[001] A inspeção de estado de processo em um depuradortradicionalmente tem utilizado uma dentre duas abordagens: inspeção fora do processo e inspeção durante o processo. Na inspeção fora do processo, o depurador obtém os valores de variáveis por ler a memória do processo depurado ou por consumir contexto do processo depurado. Para a inspeção durante o processo, o depurador avaliar propriedades por realmente executar funções de propriedade dentro do processo depurado. Esta inspeção do processo é chamada avaliação de função ou "func-eval" no linguajar do depurador. Ambas as abordagens possuem vantagens e desvantagens.
[002] Em um modelo de inspeção fora do processo, o depuradornão pode corromper o estado do processo depurado. O desenvolvedor vê uma vista bruta do estado do processo depurado, a qual tende a ser em um nível mais baixo do que a abstração pretendida do criador da API. Isto é devido ao depurador somente poder obter os valores de suporte de uma propriedade se eles forem acessíveis na memória do processo depurado. Por exemplo, se o valor de uma propriedade for calculado, o depurador somente pode apresentar as variáveis brutas utilizadas no cálculo.
[003] Propriedades com valores que dependem do estado fora damemória do processo depurado, tal como estado compartilhado com outros processos (na memória ou em um meio de armazenamento), estado a partir de algum outro dispositivo conectado, armazenamento removível, etc., não podem ser lidas desta maneira. Outros valores dependentes do estado que não podem ser lidos deste modo são estados no kernel do sistema operacional ou os estados implementados através da máquina. O modelo fora do processo requer que o desenvolvedor faça engenharia reversa da implementação da abstração da API a partir dos valores disponíveis como variáveis brutas, o que pode ser difícil, confuso, ou impossível de fazer.
[004] Para o modelo durante o processo ou func-eval, odesenvolvedor vê a vista exata da abstração pretendida do criador da API. Nenhum mapeamento a partir da implementação para a vista pública é necessária. Entretanto, em um modelo func-eval, quaisquer efeitos colaterais para a implementação da propriedade irão afetar o estado do processo depurado, o que pode levar a confusão e comportamento incorreto do processo depurado. O processo depurado não pode estar em um estado onde código possa ser executado, tal como processos altamente carregados que estão próximos de situação fora da memória ou encadeamentos dentro do processo que entraram no kernel. Neste estado, a inspeção do depurador é impossível. Executar uma avaliação de função pode levar à incompatibilidade ou corrupção do processo depurado. Especificamente, se a implementação de uma propriedade depender de outros encadeamentos em execução, por exemplo, se uma propriedade tenta obter um bloqueio mantido por outro encadeamento, esta propriedade não pode executar a não ser que o encadeamento que mantém o bloqueio libere o mesmo, levando à paralisação.
[005] Adicionalmente, no modelo de intermediário / canhotoutilizado por alguns ambientes distribuídos, a chamada pode requerer que vários encadeamentos executem de modo a permitir outro encadeamento "bombear" ou manusear uma chamada recebida a partir de outro encadeamento que está executando uma avaliação de função. Permitir que outros encadeamentos no processo executem (isto é, "fluir os encadeamentos") é alguma coisa que o depurador geralmente não pode permitir devido ao fato de que o ponto de execução real para cada encadeamento irá alterar em cada avaliação de função. Tais chamadas transpondo o contexto podem levar a uma corrupção não recuperável do processo depurado se elas não completarem corretamente.
SUMÁRIO
[006] Este Sumário é proporcionado para introduzir uma seleçãode conceitos de uma forma simplificada, os quais são adicionalmente descritos abaixo na Descrição Detalhada. Este Sumário não é pretendido para identificar aspectos chave ou aspectos essenciais do assunto reivindicado, nem é pretendido para ser utilizado para limitar o escopo do assunto reivindicado.
[007] Utilizando um suporte de instantâneo de processo leve nosistema operacional, o depurador cria uma cópia do processo alvo depurado e executa inspeção de avaliação de função em relação à cópia. Isto deixa a maior parte do estado do processo depurado no processo alvo intacta desde que quaisquer alterações feitas pela avaliação de função são locais à cópia instantânea. Quaisquer falhas catastróficas durante a avaliação de função, tal como criar incompatibilidades do processo depurado, possuem impacto mínimo devido ao processo original permanecer intocado e o instantâneo ser simplesmente jogado fora e recriado. As operações do depurador que seriam destrutivas para o processo depurado podem ser executadas no instantâneo do processo sem ameaçar o processo real. Por exemplo, deixar fluir todos os encadeamentos durante uma avaliação de função é tal cenário.
[008] Deixar fluir todos os encadeamentos é requerido, porexemplo, nos ambientes distribuídos onde as chamadas entre objetos podem transpor os limites do encadeamento, tal como Single Threaded Apartments na COM. Executar uma avaliação de função normal em tal objeto irá criar incompatibilidade - e possivelmente corromper - o processo depurado devido ao fato de que o encadeamento alvo não estará executando. Entretanto, permitir que todos os encadeamentos executem ("deixar fluir") significa que o estado do processo pode ser drasticamente alterado após a avaliação de função estar completa. Adicionalmente, eventos importantes do depurador tais como pontos de parada ou exceções, os quais ocorrem nos encadeamentos que estão fluindo, são prováveis de serem ignorados desde que o depurador não irá desejar entrar no estado de interrupção neste ponto. Os instantâneos de processo permitem ao depurador executar uma avaliação de função enquanto deixando fluir todos os encadeamentos e não perde o estado real do processo original depurado.
[009] O depurador utiliza instantâneos de processo leve paraisolar efeitos colaterais das avaliações de função. O depurador pode criar novos instantâneos de processo leve do processo alvo depurado quando um efeito colateral da avaliação de função não mais refletir sobre o processo alvo ou um instantâneo se tornar tão corrupto que ele não pode ser mais utilizado.
[0010] Em uma concretização, um depurador utiliza uminstantâneo de processo leve de um processo alvo depurado e executa avaliações de função em relação ao instantâneo. O depurador utiliza instantâneos de processo leve do processo alvo depurado para a avaliação de função. O depurador não é provável de deixar fluir os encadeamentos a não ser que necessário, tal como se a avaliação de função não completar rápido o suficiente e tenha sido abortada, caso em que o deixar fluir pode ser tentado. O depurador pode permitir que todos os encadeamentos no instantâneo do processo executem (fluam) durante uma avaliação de função de modo a evitar incompatibilidade do processo depurado quando as dependências entre os encadeamentos forem encontradas.
[0011] O depurador também pode utilizar um instantâneo demáquina leve da máquina real depurada e executar avaliações de função em relação a este instantâneo da máquina para adicionalmente isolar efeitos colaterais do kernel e outros efeitos colaterais mais globais, tais como gravações de arquivo. O depurador pode utilizar instantâneos leves da máquina de uma máquina depurada e permitir que todos os encadeamentos em um processo alvo executem (fluam) durante uma avaliação de função de modo a evitar incompatibilidade da máquina depurada quando dependências entre os encadeamentos são encontradas. O depurador pode utilizar instantâneos leves da máquina para isolar efeitos colaterais de avaliações de função. O depurador cria novos instantâneos leves da máquina quando um efeito colateral da avaliação de função não mais se reflete no processo original ou um instantâneo se torna tão corrupto que ele não pode ser mais utilizado.
BREVE DESCRIÇÃO DOS DESENHOS
[0012] Para adicionalmente esclarecer o dito acima e outrasvantagens e aspectos das concretizações da presente invenção, uma descrição mais particular de concretizações da presente invenção será produzida por referência aos desenhos anexos. É apreciado que estes desenhos representam somente concretizações típicas da invenção e, portanto, não são para ser considerados limitando seu escopo. A invenção será descrita e explicada com especificidade e detalhe adicional através do uso dos desenhos acompanhantes, nos quais:
[0013] A FIGURA 1 ilustra depuração histórica com instantâneosde processo leve.
[0014] A FIGURA 2 ilustra um instantâneo de processo leve deacordo com uma concretização.
[0015] A FIGURA 3 é um fluxograma ilustrando um método paraexecutar avaliações de função em relação aos instantâneos de processo leve de acordo com uma concretização.
[0016] A FIGURA 4 ilustra um depurador executando umaavaliação de função em relação a um instantâneo de processo leve enquanto permitindo ao processo real depurado continuar a execução de acordo com uma concretização.
[0017] A FIGURA 5 ilustra um depurador executando umaavaliação de função em relação a um instantâneo de máquina leve enquanto permitindo ao processo real depurado continuar executando na máquina hospedeira de acordo com uma concretização.
[0018] A FIGURA 6 ilustra uma sessão de depuração durante oprocesso utilizando instantâneos de processo leve.
[0019] A FIGURA 7 ilustra um exemplo de um ambiente decomputação e de interoperabilidade adequado para depuração durante o processo utilizando instantâneos de processo leve.
DESCRIÇÃO DETALHADA
[0020] A avaliação de função (func-eval) é o mecanismo preferidopelos depurados modernos para inspecionar estado do processo depurado. Ela permite que a abstração original pretendida pelo autor da API exatamente combine com o estado que o desenvolvedor vê no depurador. Entretanto, como descrito acima, a avaliação de função possui várias deficiências incluindo efeitos colaterais, incompatibilidades, e corrupção do processo depurado.
[0021] Um sistema de depuração e diagnóstico permite aosusuários obterem instantâneos de processo leve de processos ativos depurados de modo que os usuários podem analisar estes instantâneos em um momento posterior. Os sistemas de depuração e de diagnóstico de memória podem ser utilizados em cenários de produção devido ao fato que eles minimizam a interrupção do sistema em produção enquanto ainda permitindo ao usuário capturar instantâneos de estados do processo. Os instantâneos de processo leve permitem a inspeção de pilhas de chamadas, valores de variáveis, memória, lista de módulos, lista de encadeamentos e assim por diante de um processo enquanto permitindo ao processo original continuar a executar.
[0022] O mecanismo de instantâneo permite que as ferramentasde diagnóstico comparem um processo original com um ou mais instantâneos de processo ou comparem qualquer um dentre vários instantâneos de processo uns com os outros. O mecanismo de instantâneo adicionalmente permite aos usuários inspecionarem um instantâneo da memória do processo enquanto permitindo ao processo original continuar a executar com impacto mínimo.
[0023] O termo instantâneo de processo leve ou "instantâneo"como utilizado neste documento refere-se a uma cópia de um processo que pode ser criada de forma eficiente sem precisar criar todo o rasto da execução ou memória do processo. Em uma concretização típica, um sistema operacional implementar o mecanismo de instantâneo na parte de cima de um modelo de memória virtual e utiliza páginas compartilhadas de memória e técnicas de compartilhamento de memória para evitar a necessidade de criar uma cópia completa do processo. O compartilhamento de memória permite ao sistema operacional mapear as páginas reais de todo o espaço de endereços do processo original para um segundo instantâneo do processo rapidamente. Para proporcionar um alto nível de isolamento, o instantâneo do processo pode ser criado utilizando uma máquina virtual tal como o picoprocesso Drawbridge da Microsoft Corporation, o qual é um container de isolamento seguro de peso leve que pode executar o instantâneo de processo leve.
[0024] Utilizando os instantâneos de processo leve ou os instantâneos leves da máquina, como descrito neste documento, um depurador pode evitar estes problemas por executar avaliações de função completas em relação ao instantâneo do processo do processo real depurado ou em relação ao instantâneo baseado na máquina virtual de toda a máquina na qual o processo depurado está executando. Estes instantâneos podem ser descartados e/ou recriados sempre que necessário.
[0025] Concretizações criam instantâneos leves de processo oucriam instantâneos leves de máquina para permitir a avaliação de função em uma inspeção do depurador sem risco de corromper ou incompatibilizar o processo depurado e enquanto minimizando os efeitos colaterais de fazer a inspeção. Um instantâneo de processo leve, também referido neste documento como instantâneo do processo, é uma cópia do processo que é criada de forma eficiente sem necessitar criar um rasto completo da execução ou da memória do processo. Tipicamente, um sistema operacional implementa um mecanismo de instantâneo na parte de cima de seu modelo de memória virtual e utiliza páginas de memória compartilhadas e técnicas de compartilhamento de memória para evitar criar uma cópia completa do processo. Ao invés disso, o compartilhamento de memória permite ao sistema operacional mapear as páginas reais de todo o espaço de endereços do processo original para um segundo instantâneo do processo rapidamente. Após o instantâneo ser criado, quaisquer gravações na memória para qualquer processo causa que uma cópia desta página de memória correspondente seja criada para o processo fazendo a gravação. Assim, o isolamento do efeito colateral é obtido para gravações na memória.
[0026] Um depurador utilizando o modelo de inspeção baseado naavaliação de função em relação aos instantâneos de processo leve aplica o seguinte algoritmo:
[0027] Primeiro, quando um depurador entra no modo deinterrupção, o depurador solicita ao sistema operacional para criar um novo instantâneo de processo leve do processo original. Este instantâneo deve precisamente refletir o processo original, incluindo mapear a memória do processo depurado via compartilhamento de memória, duplicação de encadeamentos dentro do processo, duplicação de quaisquer identificadores dentro do processo, e carregamento dos mesmos módulos no processo. O depurador deve estar apto a executar código dentro do instantâneo do processo de modo a executar uma avaliação de função.
[0028] Em segundo lugar, quando o depurador precisa executaruma avaliação de processo, ele executa a mesma dentro do processo do instantâneo de processo leve, não dentro do processo original. Isto proporciona os mesmos resultados como se a avaliação de função fosse executada em relação ao processo original devido ao instantâneo ser um clone do processo original e, portanto, executar uma avaliação de função dentro do instantâneo do processo será idêntico a executar uma avaliação de processo dentro do processo original depurado.
[0029] É observado que alguns efeitos colaterais podem não serisolados utilizando este modelo dependendo do nível de duplicação que o sistema operacional suporta. Por exemplo, efeitos colaterais para entidades externas, tais como gravações de arquivo durante uma avaliação de função, virtualmente irão ocorrer. Adicionalmente, se o sistema operacional não for capaz de duplicar todo o processo, efeitos colaterais para qualquer coisa que não é duplicada, tais como objetos do kernel compartilhados, realmente poderiam afetar o processo original.
[0030] Em terceiro lugar, quando executando uma avaliação defunção dentro do processo do instantâneo, o depurador pode escolher deixar fluir todos os encadeamentos no processo real depurado. Isto permite que todos os encadeamentos no processo real depurado executem. Isto reduz a probabilidade de incompatibilidade no processo depurado se ele era para fazer chamadas através de ambientes distribuídos tais como limites de apartamentos COM ou para permitir bloqueios serem liberados, os quais podem ser mantidos por outros encadeamentos. Se o depurador faz uma avaliação que permite que encadeamentos fluam, o depurador irá precisar criar um novo instantâneo do processo original após a avaliação estar completa. Isto é necessário devido ao fato de que o estado do instantâneo do processo terá alterado de forma significativa após a avaliação e pode não mais ser uma representação precisa do processo real depurado atual.
[0031] Em quarto lugar, quando uma avaliação de função noinstantâneo do processo dá errado - por exemplo, ela expira devido a uma avaliação de função com incompatibilidade, ou existem efeitos colaterais óbvios a partir das avaliações anteriores que o desenvolvedor deseja desfazer - um depurador pode simplesmente apagar o instantâneo antigo e criar um novo instantâneo. O novo instantâneo do processo novamente é uma duplicata do processo original.
[0032] Em alguns casos, o depurador irá saber criar um novoinstantâneo do processo automaticamente. Por exemplo, o depurador irá sempre precisar criar um novo instantâneo do processo quando ele entra no modo de interrupção após estar em um modo de execução. Isto é necessário ao fato de que o estado do processo depurado provavelmente irá ter alterado drasticamente entre os estados de interrupção. Entretanto, existem momentos quando o usuário pode precisar forçar a criação de um novo instantâneo. Isto pode ser permitido através da interface com o usuário do depurador.
[0033] A FIGURA 1 ilustra depuração histórica com instantâneosleves de processo. Um processo depurador 101 é utilizado para depurar o processo depurado 102. O processo depurador 101 possui uma interface com o usuário que permite ao usuário analisar componentes do processo depurado. Por exemplo, a interface com o usuário pode proporcionar janelas apresentando a pilha de chamadas 103, os módulos 104, os encadeamentos 105 e a inspeção de variável 106. O processo depurado 102 compreende, por exemplo, os encadeamentos 107, os módulos 108, e uma tabela de páginas de memória virtual 109. A memória virtual 109 aponta para páginas de memória física 110 que são gerenciadas pelo gerenciador de memória virtual do sistema operacional 111.
[0034] Durante a sessão de depuração, instantâneos de processoleve 112 e 113 são criados. Estes são instantâneos do processo depurado 102 obtidos em um momento específico. Os instantâneos 112, 113 podem ser manualmente iniciados pelo usuário, ou odepurador 101 pode automaticamente gerar os instantâneos 112, 13 quando um evento ou gatilho particular é observado ou em alguns intervalos.
[0035] O instantâneo 112 compreende uma tabela deencadeamentos 114 e a tabela de módulos 115, as quais são cópias das tabelas internas do depurador 101 no momento (T1) em que o instantâneo 112 foi criado. A tabela de páginas de memória virtual 116 aponta para as páginas de memória física 110 que estavam em uso no tempo T1 quando o instantâneo 112 foi criado. Inicialmente, a memória virtual 109 e a memória virtual 116 irão ser idênticas; entretanto, à medida que o processo depurado continua a executar, a memória virtual 109 irá alterar à medida que sua tabela de páginas aponta para localizações de memória atualizadas 110.
[0036] De forma similar, em outro tempo (T2), o instantâneo do processo 113 é criado em resposta à seleção de um usuário ou à ocorrência de um evento ou gatilho observado pelo processo depurador 101. O instantâneo 113 inclui cópias da tabela de encadeamentos 117 e da tabela de módulos 118 no tempo T2 quando o instantâneo foi criado junto com uma cópia da tabela de páginas de memória virtual então atual 119.
[0037] Os instantâneos 112, 113 permitem ao processo depurador101 ou ao usuário rememorar como o processo depurado 102 parecia no tempo (T1, T2) quando os instantâneos 112, 113 foram criados mesmo que, no entanto, o processo depurado 102 tenha alterado neste meio tempo. Além disso, o processo depurador pode comparar estados entre e no meio do processo depurado 102 e/ou processar os instantâneos 112, 113 para gerar diferenciais entre os diferentesestados do processo nos diferentes tempos de modo que o usuário pode ver qual parte do processo foi alterada e como.
[0038] Em outras concretizações, um instantâneo 112 pode sercriado e o pode ser permitido que processo original depurado 102 execute sem interferência. Então, testes podem ser executados em relação ao instantâneo do processo 112 para observar como o processo é afetado. Se o instantâneo do processo 112 falhar ou tiver outros problemas devido aos testes, então, estes problemas não irão afetar o processo real em execução 102.
[0039] A FIGURA 2 ilustra um instantâneo de processo leve deacordo com uma concretização. O processo original 201 inclui uma tabela de páginas 202 que aponta para dados armazenados na memória física 203. Por exemplo, o processo 201 pode armazenar uma variável X na entrada da tabela de páginas 204, a qual aponta para uma localização da memória física 205 onde o valor para a variável X está realmente armazenado.
[0040] Quando o instantâneo do processo 206 é criado a partir do processo original 201, a tabela de páginas original 202 é copiada como a tabela de páginas instantânea 207. O conteúdo da tabela de páginas instantânea 207 é o mesmo que o conteúdo da tabela de páginas original 202 como ela existia no momento em que o instantâneo foi criado. Por exemplo, no instantâneo do processo 206, a variável X aponta para uma entrada 208 na tabela de páginas instantânea 207, a qual - como a tabela de páginas original 202 - aponta para a localização de memória física 205 onde o valor para a variável X está armazenado.
[0041] O processo original 201 pode continuar a executar após oinstantâneo ser criado. O processo original pode gerar um novo valor para a variável X, o qual é novamente armazenado na entrada 204 da tabela de páginas original 202. Entretanto, o novo valor para a variável X é armazenado na memória física 203 em uma nova localização 209. Por consequência, a tabela de páginas original 202 é atualizada para apontar para a localização da memória física 209, mas a tabela de páginas instantânea 207 mantém seu estado do instantâneo e aponta para a localização de memória 205 onde o valor original da variável X ainda reside.
[0042] O mecanismo de instantâneo permite uma inspeção dedepuração menos destrutiva. Tipicamente, quando um modo de interrupção quando depurando um processo, o processo depurado é parado pelo sistema operacional. Isto significa que o código dentro do processo depurado não executa. Isto é ideal para inspecionar o estado depurado devido ao fato de que o estado não pode alterar enquanto o processo está paralisado. Entretanto, em alguns cenários, parar o processo pode levar a impasses ou a outra instabilidade do sistema. Por exemplo, quando o processo depurado é compartilhado por outros processos, os outros processos podem tentar se comunicar com o processo depurado compartilhado enquanto no modo interrompido. Isto pode levar a atrasos nos outros processos no melhor caso e a inconsistências, corrupção do processo e instabilidade nos piores casos. O modelo de instantâneo de processo leve permite a depuração em tais cenários por permitir ao depurador inspecionar um instantâneo de processo leve do processo compartilhado ao invés do processo real. É permitido que o processo real continue a execução durante esta inspeção.
[0043] A FIGURA 3 é um fluxograma ilustrando um método paraexecutar avaliação de função em relação aos instantâneos de processo leve de acordo com uma concretização. Na etapa 301, o depurador entra no modo de interrupção enquanto depurando um processo depurado. O depurador solicitar que o sistema operacional crie um instantâneo do processo do processo depurado. Na etapa 302, o depurador executa uma avaliação de função em relação ao instantâneo do processo. O depurador pode executar várias avaliações de função em relação ao processo por fazer o ciclo de volta para a etapa 302. Se o depurador identificar problemas na avaliação de função ele vai para a etapa 303 e descarta o instantâneo do processo.
[0044] Na etapa 304, o depurador solicitar ao sistema operacionalpara criar um novo instantâneo do processo do processo depurado. O processo retorna para a etapa 302 para executar avaliações de função adicionais em relação ao novo instantâneo do processo. Então, o depurador pode novamente executar uma avaliação funcional do novo instantâneo do processo por retornar para a etapa 302. Alternativamente, na etapa 305, o depurador pode deixar fluir os encadeamentos no processo depurado enquanto executando a avaliação funcional do Nov instantâneo do processo. Se a avaliação de função falhar ou problemas tais como impasses forem encontrados, então o processo retorna para a etapa 303 para descartar o instantâneo do processo que teve impasse e para a etapa 304 para criar outro novo instantâneo do processo.
[0045] Será entendido que estas etapas 301 até 305 do processoilustrado na FIGURA 3 podem ser executadas simultaneamente e/ou sequencialmente. Será adicionalmente entendido que cada etapa pode ser executada em qualquer ordem e pode ser executada uma vez ou repetidamente.
[0046] A FIGURA 4 ilustra um depurador executando umaavaliação de função em relação a um instantâneo de processo leve enquanto permitindo ao processo real depurado continuar a executar de acordo com uma concretização. Um processo depurador 401 é utilizado para depurar o processo depurado 402. O processo depurador 401 possui uma interface com o usuário 403 e o mecanismo depurador 404 que permite ao usuário interagir com e analisar os componentes do processo depurado. Por exemplo, a interface com o usuário pode proporcionar janelas apresentando listas de chamada, módulos, encadeamentos e valores de variável. O processo depurado 502 compreende, por exemplo, encadeamentos 405, módulos 406 e uma tabela de páginas de memória virtual 407. A memória virtual 407 aponta para páginas de memória física 408 que são gerenciadas pelo gerenciador de memória virtual 409 do sistema operacional.
[0047] O processo depurador 401 controla a execução doprocesso depurado 402 e pode suspender o processo ou permitir ao processo executar. Quando o usuário deseja executar uma avaliação de função em relação ao processo depurado, o processo depurador 401 solicita ao sistema operacional para criar um instantâneo de processo leve 410 do processo depurado 402. O instantâneo 410 compreende uma tabela de encadeamentos 411 e a tabela de módulos 412, as quais são cópias das listas de encadeamentos e de módulos no processo depurado 402 quando o instantâneo 410 foi criado. A tabela de páginas de memória virtual 413 aponta para as páginas de memória física 408 em uso quando o instantâneo 410 é criado. Inicialmente, a memória virtual 413 e a memória virtual 407 serão idênticas.
[0048] O processo depurador 401 então executa a avaliação defunção em relação ao instantâneo do processo 410 enquanto deixando fluir os encadeamentos no processo depurado 402. Se o instantâneo do processo 410 falhar ou tiver outros problemas devido à avaliação de função, então estes problemas não irão afetar o processo real depurado 402. Se ocorrerem problemas, o processo depurador 401 pode descartar o instantâneo do processo 410 e solicitar ao sistema operacional para criar um novo instantâneo do processo.
[0049] No caso onde o sistema operacional suporta criar, inicializare restaurar máquinas virtuais, o depurador pode gerar uma nova máquina virtual que contém uma cópia completa da máquina que está executando o processo depurado. O depurador pode então executar a avaliação de função em relação a um instantâneo do processo que está executando na máquina virtual. Isto irá permitir um estado externo totalmente isolado, tal como identificadores do kernel, gravações de arquivo. A máquina virtual pode ser criada, por exemplo, utilizando o picoprocesso Drawbridge da Microsoft Corporation para criar uma máquina virtual leve na qual a implementação do sistema operacional reside dentro do processo depurado, o que permite que o estado do kernel seja isolado.
[0050] Um depurador pode utilizar a tecnologia de máquina virtualpara executar a avaliação de função em relação a toda uma cópia da máquina que está executando o processo depurado ao invés de apenas em relação a um instantâneo do processo. Isto permite isolar os feitos colaterais do modo kernel bem como efeitos colaterais externos, tais como gravações de arquivo, que seriam impossível de isolar utilizando somente um instantâneo do processo. Este modelo é referido neste documento como um "instantâneo de máquina". Este modelo requer uma tecnologia de máquina virtual extremamente rápida que suporte criar, inicializar e restabelecer uma máquina virtual muito rapidamente. Uma tecnologia emergente é o modelo de máquina virtual Drawbridge da Microsoft Corporation.
[0051] Como utilizado neste documento, o instantâneo de máquinaleve abrange uma ampla faixa de cópias da máquina hospedeira e do processo depurado requerendo quantidades variadas de isolamento e de dados da máquina hospedeira. Em uma concretização, o instantâneo de máquina leve é um instantâneo ou cópia completa da máquina hospedeira depurada. Em outras implementações, o instantâneo da máquina pode ser uma cópia do processo depurado e da maior parte do kernel, mas nada mais no sistema. Outras implementações podem utilizar: apenas um instantâneo de um único processo depurado, um instantâneo do processo com o estado do kernel, tudo na máquina depurada, ou várias máquinas hospedeiras.
[0052] A FIGURA 5 ilustra um depurador executando umaavaliação de função em relação a um instantâneo de máquina leve enquanto permitindo ao processo real depurado continuar a executar na máquina hospedeira de acordo com uma concretização. A máquina hospedeira 501 está executando o processo depurador 502, o qual é utilizado para depurar o processo depurado 503 também executando na máquina hospedeira 501. Uma interface com o usuário e o mecanismo depurador no processo depurador 501 permite ao usuário interagir com e analisar os componentes do processo depurado 503. A memória virtual no processo depurado 503 aponta para as páginas de memória física 504 que são gerenciadas pelo gerenciador de memória virtual 505 do sistema operacional.
[0053] O processo depurador 502 controla a execução do processo depurado 503 e pode suspender o processo ou permitir ao processo executar. Quando o usuário deseja executar uma avaliação de função no processo depurado, o processo depurador 502 solicitar ao sistema operacional para criar um instantâneo da máquina virtual 506.
[0054] O instantâneo da máquina virtual 506 é cópia completa damáquina hospedeira 501 que está executando o processo depurado 503. O instantâneo da máquina virtual 506 inclui um instantâneo do processo 507, o qual é uma cópia completa do processo depurado 503 no momento em que o instantâneo da máquina virtual foi criado. O instantâneo do processo 506 compreende a tabela de encadeamentos e a tabela de módulos que são cópias das listas de encadeamentos e de módulos no processo depurado 503 quando o instantâneo da máquina 506 foi criado. A tabela de páginas da memória virtual 507 não aponta para as páginas de memória física 504 na memória da máquina hospedeira, mas ao invés disso aponta para as páginas de memória 508 na máquina virtual. O instantâneo da máquina virtual também inclui um estado do kernel 509 e os arquivos 510 copiados a partir da máquina hospedeira 501.
[0055] O processo depurador 502 executa a avaliação de funçãoem relação ao instantâneo da máquina virtual 506 enquanto deixando fluir os encadeamentos no processo depurado 503. Se o instantâneo da máquina virtual falhar ou tiver outros problemas devido à avaliação de função, então estes problemas não irão afetar o processo real depurado 503 ou qualquer outro processo executando na máquina hospedeira 501. Quaisquer efeitos colaterais do modo kernel ou efeitos colaterais externos, tais como gravações de arquivo, são isolados para o instantâneo da máquina virtual 506. De ocorrerem problemas, o processo depurador 502 pode descartar o instantâneo da máquina 506 e solicitar ao sistema operacional para criar um novo instantâneo da máquina.
[0056] A FIGURA 6 ilustra uma sessão de depuração durante oprocesso utilizando os instantâneos leves de processo. O processo depurador 601 inicia uma sessão de depuração (602) com o processo depurado 603. O depurador 601 solicita (604) ao sistema operacional 605 para criar um primeiro instantâneo do processo 606 do processo depurado 603.
[0057] O depurador 601 executa avaliação de função (607) noinstantâneo do processo 606, o qual executa a função (608) e retorna resultados (609).
[0058] Então, o depurador 601 executa uma avaliação de funçãocorruptora (610) em relação ao instantâneo do processo 606, o qual executa a função (611) e retorna resultados (612). O instantâneo do processo 606 é corrompido após a execução da função (611). Assim, o depurador 601 descarta o instantâneo do processo 606 e solicita (613) ao sistema operacional 605 para criar um segundo instantâneo do processo 614.
[0059] Após executar as avaliações de função 608 e 611 semdeixar fluir, o depurador 601 cria um segundo instantâneo do processo 614 após o primeiro instantâneo do processo 606 passar por impasse. Então o depurador 601 executa avaliação de função do encadeamento fluindo (615) em relação ao instantâneo do processo 614, o qual executa a função (616) enquanto todos os encadeamentos estão fluindo no processo depurado 602. O processo do instantâneo 614 retorna resultados (617). Devido a todos os encadeamentos no processo depurado 603 estarem fluindo enquanto o processo do instantâneo 614 executou a função, o processo do instantâneo 614 não é mais uma cópia precisa do processo depurado 603. Por consequência, o depurador 601 descarta o instantâneo do processo 614 e solicita (618) ao sistema operacional 605 para criar um terceiro instantâneo do processo 619.
[0060] Então, o depurador 601 executa avaliação de função (620)em relação ao instantâneo do processo 619, o qual executa a função (621) e retorna resultados (622). O usuário pode direcionar (623) o depurador 601 para descartar o instantâneo do processo 619 e criar um novo instantâneo. O depurador 601 então descarta o instantâneo do processo 619 e solicita (624) ao sistema operacional 605 para criar um quarto instantâneo do processo 625.
[0061] O depurador 601 executa avaliação de função doencadeamento fluindo (626) em relação ao instantâneo do processo 625, o qual executa a função (627) enquanto todos os encadeamentos estão fluindo no processo depurado 602. O processo do instantâneo (625) retorna resultados (628).
[0062] O depurador 601 termina a depuração (629) quando aavaliação de função está completa.
[0063] Se o sistema operacional 605 suportar a criação deinstantâneos de máquina virtual, então os instantâneos de processo 606, 614, 609 e 625 podem ser substituídos pelos instantâneos leves de máquina para adicionalmente proteger e isolar o processo depurado 603.
[0064] A FIGURA 7 ilustra um exemplo de um ambiente decomputação e de interoperabilidade adequado 700 no qual os exemplos das FIGURAS 1 até 6 podem ser implementados para depuração durante o processo utilizando instantâneos de processo leve. O ambiente de sistema de computação 700 é somente um exemplo de um ambiente de computação adequado e não é pretendido para sugerir qualquer limitação quando ao escopo de uso ou da funcionalidade da invenção. A invenção é operacional com vários outros ambientes ou configurações de sistema de computação de propósito geral ou de propósito especial. Exemplos de sistemas, ambientes e/ou de configurações de computação bem conhecidos que podem ser adequados para uso com a invenção incluem, mas não estão limitados a: computadores pessoais, computadores servidores, dispositivos portáteis ou laptop, dispositivos tablet, sistemas multiprocessador, sistemas baseados em microprocessador, decodificadores de sinal, eletroeletrônicos programáveis, PCs de rede, minicomputadores, computadores de grande porte, ambientes de computação distribuída que incluem qualquer um dos sistemas ou dispositivos acima, dentre outros.
[0065] A invenção pode ser descrita no contexto geral deinstruções executáveis por computador, tais como módulos de programa, sendo executados por um computador. Geralmente, os módulos de programa incluem rotinas, programas, objetos, componentes, estruturas de dados, e assim por diante, que executam tarefas particulares ou implementam tipos particulares de dados abstratos. A invenção também pode ser praticada em ambientes de computação distribuída, onde as tarefas são executadas por dispositivos de processamento remotos que são ligados através de uma rede de comunicações. Em um ambiente de computação distribuída, os módulos de programa podem estar localizados em meios de armazenamento do computador locais e/ou remotos, incluindo dispositivos de armazenamento em memória.
[0066] Com referência à FIGURA 7, um sistema ilustrativo paraimplementar vários aspectos da invenção pode incluir um dispositivo de computação de propósito geral na forma de um computador 700. Os componentes podem incluir, mas não estão limitados a vários componentes de hardware, tais como a unidade de processamento 701, o armazenamento de dados 702, tal como uma memória do sistema e o barramento do sistema 703 que acopla vários componentes do sistema, incluindo o armazenamento de dados 702 com a unidade de processamento 701. O barramento do sistema 703 pode ser qualquer uma dentre várias estruturas de barramento, incluindo um barramento de memória ou controlador de memória, um barramento periférico, e um barramento local utilizando qualquer uma dentre várias arquiteturas de barramento. A título de exemplo e não de limitação, tais arquiteturas incluem o barramento da Arquitetura Padrão da Indústria (ISA), o barramento de Arquitetura de Micro Canal (MCA), o barramento ISA Avançado (EISA), o barramento local da Associação de Padrões de Eletrônica e Vídeo (VESA), e o barramento de Interconexão de Componente Periférico (PCI), mas também conhecido como barramento Mezanino.
[0067] O computador 700 tipicamente inclui vários meios legíveispor computador 704. Os meios legíveis por computador 704 podem ser qualquer meio disponível que possa ser acessado pelo computador 700 e que inclui tanto meio volátil como não volátil, e meio removível e não removível, mas exclui sinais propagados. A título de exemplo e não de limitação, os meios legíveis por computador 704 podem compreender meio de armazenamento do computador e meio de comunicação. O meio de armazenamento do computador inclui meio volátil e não volátil, removível e não removível implementado 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. O meio de armazenamento do computador inclui, mas não está limitado a RAM, ROM, EEPROM, memória flash ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento em disco ótico, cassetes magnéticos, fita magnética, armazenamento em disco magnético ou outros dispositivos de armazenamento magnéticos, ou qualquer outro meio que possa ser utilizado para armazenar a informação desejada e que possa ser acessado pelo computador 700. O meio de comunicação tipicamente incorpora 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 portadora ou outro mecanismo de transporte e inclui qualquer meio de distribuição de informação. O termo "sinal de dados modulado " significa um sinal que tem uma ou mais de suas características estabelecidas ou alteradas de maneira tal a codificar informação no sinal. A título de exemplo e não de limitação, o meio de comunicação inclui meio com uso de fios tal como uma rede com uso de fios ou conexão direta com uso de fios, e meio sem uso de fios tal como meio acústico, RF, infravermelho e outros meios sem uso de fios. Combinações de qualquer um dos ditos acima também podem estar incluídas dentro do escopo de meio legível por computador. Os meios legíveis por computador podem ser incorporados como um produto de programa de computador, tal como software armazenado no meio de armazenamento do computador.
[0068] O armazenamento de dados ou memória do sistema 702inclui meio de armazenamento do computador na forma de memória volátil e/ou não volátil tal como a memória somente para leitura (ROM) e memória de acesso aleatório (RAM). Um sistema básico de entrada / saída (BIOS), contendo as rotinas básicas que ajudam a transferir informações entre os elementos dentro do computador 700, tal como durante a inicialização, tipicamente é armazenado na ROM. A RAM tipicamente contém dados e/ou módulos de programa que são imediatamente acessíveis e/ou estão atualmente sendo operados pela unidade de processamento 701. A título de exemplo e não de limitação, o armazenamento de dados 702 mantém um sistema operacional, programas aplicativos, e outros módulos de programa e dados de programa.
[0069] O armazenamento de dados 702 também pode incluir outros meios de armazenamento do computador removíveis / não removíveis, voláteis / não voláteis. Somente a título de exemplo, o armazenamento de dados 702 pode ser uma unidade de disco rígido que lê a partir ou grava junto ao meio magnético não removível, não volátil, uma unidade de disco magnético que lê a partir ou gravar junto a um disco magnético removível, não volátil, e uma unidade de disco ótico que lê a partir ou grava junto a um disco ótico removível, não volátil, tal como um CD ROM ou outro meio ótico. Outros meios de armazenamento do computador removíveis / não removíveis, voláteis / não voláteis que podem ser utilizados no ambiente operacional ilustrativo incluem, mas não estão limitados aos cassetes de fita magnética, cartões de memória flash, discos versáteis digitais, fita de vídeo digital, RAM de estado sólido, ROM de estado sólido, dentre outros. As unidades e seu meio de armazenamento associado, descritos acima e ilustrados na FIGURA 7, proporcionam armazenamento de instruções legíveis por computador, estruturas de dados, módulos de programa e de outros dados para o computador 700.
[0070] Um usuário pode entrar com comandos e informaçãoatravés de uma interface com o usuário 705 ou de outros dispositivos de entrada tal como um tablet, digitalizador eletrônico, um microfone, teclado, e/ou dispositivo de apontamento, normalmente referido como mouse, TrackBall ou superfície sensível ao toque. Outros dispositivos de entrada podem incluir um joystick, um console de jogo, antena de satélite, scanner, dentre outros. Adicionalmente, entradas de voz, entradas de gesto utilizando as mãos ou os dedos, ou outra interface com o usuário natural (NUI) também podem ser utilizadas com os dispositivos de entrada apropriados, tal como um microfone, câmera, tablet, superfície sensível ao toque, luva, ou outro sensor. Estes e outros dispositivos de entrada são frequentemente conectados com a unidade de processamento 701 através de uma interface de entrada do usuário 705 que é acoplada com o barramento do sistema 703, mas podem ser conectados por outras interfaces e estruturas de barramento, tais como porta paralela, porta de jogo ou um barramento serial universal (USB). Um monitor 706 ou outro tipo de dispositivo de vídeo também é conectado com o barramento do sistema 703 via uma interface, tal como uma interface de vídeo. O monitor 706 também pode ser integrado com um painel de tela sensível ao toque ou coisa parecida. Observe que o monitor e/ou o painel de tela sensível ao toque pode ser fisicamente acoplado com um invólucro no qual o dispositivo de computação 700 está incorporado, tal como em um computador pessoal do tipo tablet. Em adição, computadores tal como o dispositivo de computação 700 também podem incluir outros dispositivos periféricos de saída, tais como alto-falantes e impressora, os quais podem ser conectados através de uma interface de periférico de saída ou coisa parecida.
[0071] O computador 700 pode operar em um ambiente decomputação em rede ou em nuvem utilizando conexões lógicas 707 com 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 par ou outro nó comum de rede, e tipicamente inclui vários ou todos os elementos descritos acima com relação ao computador 700. As conexões lógicas representadas na FIGURA 7 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 em rede são comuns em escritórios, em redes de computadores de grandes empresas, em intranets e na Internet.
[0072] Quando utilizado em um ambiente de computação em redeou em nuvem, o computador 700 pode ser conectado com uma rede pública ou privada através de uma interface de rede ou do adaptador 707. Em algumas concretizações, um modem ou outro dispositivo para estabelecer comunicações através da rede. O modem, o qual pode ser interno ou externo, pode ser conectado com o barramento do sistema 703 via a interface de rede 707 ou via outro mecanismo apropriado. Um componente de interoperabilidade sem uso de fios tal como um compreendendo uma interface e uma antena, pode ser acoplado através de um dispositivo adequado tal como um ponto de acesso ou computador par com uma rede. Em um ambiente em rede, os módulos de programa representados em relação ao computador 700, ou partes dos mesmos, podem ser armazenados no dispositivo de armazenamento em memória remoto. Pode ser apreciado que as conexões de rede apresentadas são ilustrativas e outros dispositivos para estabelecer uma ligação de comunicações entre os computadores podem ser utilizados.
[0073] Apesar de o assunto ter sido descrito em linguagemespecífica para os aspectos estruturais e/ou atos metodológicos, é para ser entendido que o assunto definido nas reivindicações anexas não é necessariamente limitado aos aspectos ou atos específicos descritos acima. Ao invés disso, os aspectos e atos específicos descritos acima são revelados como formas ilustrativas para implementar as reivindicações.

Claims (7)

1. Método implementado por computador, em um ambiente de computação, para depurar um processo alvo, o método caracterizado pelo fato de que compreende as etapas:gerar um instantâneo de processo leve (112) de um processo alvo (102), o instantâneo de processo leve sendo uma cópia do processo alvo criado sem criar um rastreamento completo da execução ou memória do processo alvo, em que o instantâneo de processo leve compreende uma memória virtual que é inicialmente idêntico a uma memória virtual do processo alvo e que aponta para páginas de memória física em uso pelo processo alvo quando o instantâneo é criado; eexecutar (302) avaliações de função no instantâneo de processo leve.
2. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende:identificar quando o instantâneo do processo leve não representa mais o processo alvo porque o instantâneo do processo leve foi corrompido; ecriando um novo instantâneo de processo leve (113) do processo alvo.
3. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende:detectar um impasse ao executar a avaliação da função; gerar um segundo instantâneo de processo leve do processo alvo; eexecutar avaliações de função (305) contra o segundo instantâneo de processo leve, enquanto permite que todos os encadeamentos sejam executados durante a avaliação da função, em que os encadeamentos (107) no processo alvo podem executar para evitar o bloqueio do processo alvo quando são encontradas dependências entre encadeamentos.
4. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende:permitir que todos os encadeamentos no processo de captura instantânea leve sejam executados durante a avaliação da função para evitar o bloqueio do processo de captura instantânea.
5. Método implementado por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende:criar um instantâneo de máquina leve (506) de uma máquina (501) que hospeda o processo alvo;executar o instantâneo de processo leve (507) no instantâneo de máquina leve;executar a avaliação da função com relação ao instantâneo de processo leve que está sendo executado no instantâneo de máquina leve; epermitir que todos os encadeamentos no processo alvo sejam executados durante a avaliação da função para evitar o bloqueio do processo alvo quando forem encontradas dependências entre encadeamentos.
6. Método implementado por computador, de acordo com a reivindicação 5, caracterizado pelo fato de que os efeitos colaterais da avaliação da função no instantâneo da máquina leve são isolados do processo alvo e do kernel do processo alvo.
7. Ambiente de computação (700) incluindo funcionalidade para depurar um processo alvo, caracterizado pelo fato de que compreende:um ou mais processadores (701);uma ou mais mídias legíveis por computador (704);um ou mais módulos de computador implementados como instruções executáveis por computador armazenadas na mídia legível por computador, que quando executadas por um ou mais processadores, fazem com que os processadores executem todas as etapas do método conforme definido em qualquer uma das reivindicações 1 a 6.
BR112015002451-3A 2012-08-04 2013-08-01 Método implementado por computador em um ambiente de computação para depurar um processo alvo e ambiente de computação BR112015002451B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/567,036 US9710357B2 (en) 2012-08-04 2012-08-04 Function evaluation using lightweight process snapshots
US13/567,036 2012-08-04
PCT/US2013/053111 WO2014025595A1 (en) 2012-08-04 2013-08-01 Function evaluation using lightweight process snapshots

Publications (2)

Publication Number Publication Date
BR112015002451A2 BR112015002451A2 (pt) 2017-08-01
BR112015002451B1 true BR112015002451B1 (pt) 2021-11-23

Family

ID=48980341

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112015002451-3A BR112015002451B1 (pt) 2012-08-04 2013-08-01 Método implementado por computador em um ambiente de computação para depurar um processo alvo e ambiente de computação

Country Status (5)

Country Link
US (1) US9710357B2 (pt)
EP (2) EP2880537B1 (pt)
CN (1) CN104520820B (pt)
BR (1) BR112015002451B1 (pt)
WO (1) WO2014025595A1 (pt)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8909990B2 (en) 2012-08-04 2014-12-09 Microsoft Corporation Historical software diagnostics using lightweight process snapshots
US9720758B2 (en) 2013-09-11 2017-08-01 Dell Products, Lp Diagnostic analysis tool for disk storage engineering and technical support
US9396200B2 (en) * 2013-09-11 2016-07-19 Dell Products, Lp Auto-snapshot manager analysis tool
US10223230B2 (en) 2013-09-11 2019-03-05 Dell Products, Lp Method and system for predicting storage device failures
US9454423B2 (en) 2013-09-11 2016-09-27 Dell Products, Lp SAN performance analysis tool
US9317349B2 (en) 2013-09-11 2016-04-19 Dell Products, Lp SAN vulnerability assessment tool
US10289411B2 (en) * 2013-11-18 2019-05-14 Microsoft Technology Licensing, Llc Diagnosing production applications
US9436411B2 (en) 2014-03-28 2016-09-06 Dell Products, Lp SAN IP validation tool
US9612939B2 (en) 2014-10-29 2017-04-04 Microsoft Technology Licensing, Llc. Diagnostic workflow for production debugging
WO2016082191A1 (zh) * 2014-11-28 2016-06-02 华为技术有限公司 访问文件的方法和装置
US9600682B2 (en) * 2015-06-08 2017-03-21 Accenture Global Services Limited Mapping process changes
US9959197B2 (en) * 2015-08-31 2018-05-01 Vmware, Inc. Automated bug detection with virtual machine forking
WO2017202272A1 (en) * 2016-05-26 2017-11-30 Huawei Technologies Co., Ltd. System and method of software defined switches between light weight virtual machines using host kernel resources
CN110019629B (zh) * 2017-12-28 2024-03-26 上海擎感智能科技有限公司 地图快照方法及智能终端
US10541042B2 (en) 2018-04-23 2020-01-21 Microsoft Technology Licensing, Llc Level-crossing memory trace inspection queries
US10740219B2 (en) 2018-04-27 2020-08-11 Workman Nydegger Selectively tracing portions of computer process execution
US10747645B2 (en) 2018-04-27 2020-08-18 Microsoft Technology Licensing, Llc Selectively tracing portions of computer process execution
US10698792B2 (en) 2018-05-02 2020-06-30 Microsoft Technology Licensing, Llc Execution control with cross-level trace mapping
US10693753B2 (en) 2018-05-31 2020-06-23 Hewlett Packard Enterprise Development Lp Network device snapshots
US11983094B2 (en) 2019-12-05 2024-05-14 Microsoft Technology Licensing, Llc Software diagnostic context selection and use
US11106522B1 (en) * 2020-11-20 2021-08-31 Oracle International Corporation Process memory resurrection: running code in-process after death
CN113885967B (zh) * 2021-10-22 2024-02-13 北京字跳网络技术有限公司 一种小程序的启动方法、装置、设备及介质
CN113886774B (zh) * 2021-12-07 2022-02-11 北京微步在线科技有限公司 一种反调试方法及装置

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5630047A (en) * 1995-09-12 1997-05-13 Lucent Technologies Inc. Method for software error recovery using consistent global checkpoints
US6094530A (en) * 1998-04-29 2000-07-25 Intel Corporation Remotely monitoring execution of a program
US6988271B2 (en) * 1998-10-02 2006-01-17 Microsoft Corporation Heavyweight and lightweight instrumentation
US6839894B1 (en) * 1999-11-19 2005-01-04 Oracle International Corporation Method and apparatus for debugging a software program using dynamic debug patches and copy on write views
US6671825B1 (en) * 1999-11-19 2003-12-30 Oracle International Corporation Method and apparatus for debugging a software program
US20030005407A1 (en) * 2000-06-23 2003-01-02 Hines Kenneth J. System and method for coordination-centric design of software systems
US6766472B2 (en) * 2000-09-22 2004-07-20 Microsoft Corporation Systems and methods for replicating virtual memory on a host computer and debugging using the replicated memory
CA2321019A1 (en) * 2000-09-27 2002-03-27 Ibm Canada Limited-Ibm Canada Limitee Capturing snapshots of a debuggee's state during a debug session
US6769077B2 (en) * 2000-12-20 2004-07-27 Microsoft Corporation System and method for remotely creating a physical memory snapshot over a serial bus
US7917895B2 (en) * 2001-07-27 2011-03-29 Smartesoft, Inc. Automated software testing and validation system
GB2381886B (en) * 2001-11-07 2004-06-23 Sun Microsystems Inc Computer system with virtual memory and paging mechanism
US6988264B2 (en) * 2002-03-18 2006-01-17 International Business Machines Corporation Debugging multiple threads or processes
CA2383832A1 (en) * 2002-04-24 2003-10-24 Ibm Canada Limited-Ibm Canada Limitee System and method for intelligent trap analysis
US7434229B2 (en) * 2002-07-31 2008-10-07 Genesys Telecommunications Laboratories, Inc. Method for improving temporal consistency and snapshot recency in a monitored real-time software-reporting-application architecture
US7197745B2 (en) * 2003-05-02 2007-03-27 Microsoft Corporation User debugger for use on processes running in a high assurance kernel in an operating system
US20050071824A1 (en) * 2003-08-22 2005-03-31 K. N. Keerthi Bhushan Method and system for executing software on non-native platforms
US7149929B2 (en) * 2003-08-25 2006-12-12 Hewlett-Packard Development Company, L.P. Method of and apparatus for cross-platform core dumping during dynamic binary translation
US7150006B2 (en) * 2003-11-03 2006-12-12 Microsoft Corporation Techniques for managed code debugging
US7222264B2 (en) * 2004-03-19 2007-05-22 Intel Corporation Debug system and method having simultaneous breakpoint setting
US7650593B2 (en) 2004-03-25 2010-01-19 Microsoft Corporation Proxy objects for display
US7587635B2 (en) * 2004-10-04 2009-09-08 Cisco Technology, Inc. Method of debugging “active” unit using “non-intrusive source-level debugger” on “standby” unit of high availability system
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
GB0521465D0 (en) * 2005-10-21 2005-11-30 Law Gregory E W System and method for debugging of computer programs
US9268666B2 (en) * 2005-10-21 2016-02-23 Undo Ltd. System and method for debugging of computer programs
US7669186B2 (en) * 2005-11-16 2010-02-23 Sun Microsystems, Inc. Debugging applications at resource constrained virtual machines using dynamically installable lightweight agents
US7913057B2 (en) 2006-01-27 2011-03-22 Graphics Properties Holdings, Inc. Translation lookaside buffer checkpoint system
US7849446B2 (en) * 2006-06-09 2010-12-07 Oracle America, Inc. Replay debugging
US8429613B2 (en) * 2006-10-31 2013-04-23 Microsoft Corporation Stepping and application state viewing between points
US20080209422A1 (en) * 2007-02-28 2008-08-28 Coha Joseph A Deadlock avoidance mechanism in multi-threaded applications
US8166477B1 (en) * 2007-03-23 2012-04-24 Parallels IP Holdings GmbH System and method for restoration of an execution environment from hibernation into a virtual or physical machine
US8069371B2 (en) * 2007-04-26 2011-11-29 Hewlett-Packard Development Company, L.P. Method and system for remotely debugging a hung or crashed computing system
US8239832B2 (en) * 2007-05-25 2012-08-07 Microsoft Corporation In-process debugging using external debugging infrastructure
US7970872B2 (en) * 2007-10-01 2011-06-28 Accenture Global Services Limited Infrastructure for parallel programming of clusters of machines
US8336029B1 (en) * 2007-11-08 2012-12-18 Google Inc. Debugger connection
US8769502B2 (en) * 2007-12-21 2014-07-01 Sap Ag Template based asynchrony debugging configuration
US8196140B2 (en) 2008-01-11 2012-06-05 Microsoft Corporation Service function redirection for avoiding function evaluation blockages
US7886021B2 (en) * 2008-04-28 2011-02-08 Oracle America, Inc. System and method for programmatic management of distributed computing resources
US8423961B2 (en) * 2008-06-06 2013-04-16 Microsoft Corporation Simulating operations through out-of-process execution
US9703678B2 (en) * 2008-12-23 2017-07-11 Microsoft Technology Licensing, Llc Debugging pipeline for debugging code
US8402318B2 (en) * 2009-03-24 2013-03-19 The Trustees Of Columbia University In The City Of New York Systems and methods for recording and replaying application execution
US8776028B1 (en) * 2009-04-04 2014-07-08 Parallels IP Holdings GmbH Virtual execution environment for software delivery and feedback
US8793666B2 (en) * 2009-12-22 2014-07-29 Sap Ag Multidimensional debugger
US8972953B2 (en) * 2010-04-16 2015-03-03 Salesforce.Com, Inc. Methods and systems for internally debugging code in an on-demand service environment
US8572579B2 (en) * 2010-08-19 2013-10-29 Oracle International Corporation Break on next called function or method in java debugger agent
US8776026B2 (en) * 2010-10-01 2014-07-08 Ecole Polytechnique Federale De Lausanne System and method for in-vivo multi-path analysis of binary software
US9720808B2 (en) * 2011-11-29 2017-08-01 Red Hat, Inc. Offline debugging using a replicated operating environment
US8990780B2 (en) * 2012-03-29 2015-03-24 International Business Machines Corporation Setting breakpoints in optimized instructions
US8856600B2 (en) * 2012-06-21 2014-10-07 Breakingpoint Systems, Inc. JTAG-based programming and debug
US9009679B2 (en) * 2012-06-28 2015-04-14 International Business Machines Corporation Determining snapshot placement
US8909990B2 (en) * 2012-08-04 2014-12-09 Microsoft Corporation Historical software diagnostics using lightweight process snapshots

Also Published As

Publication number Publication date
EP2880537A1 (en) 2015-06-10
CN104520820A (zh) 2015-04-15
US20140040897A1 (en) 2014-02-06
BR112015002451A2 (pt) 2017-08-01
EP3591533A1 (en) 2020-01-08
EP2880537B1 (en) 2019-09-25
CN104520820B (zh) 2018-02-06
US9710357B2 (en) 2017-07-18
WO2014025595A1 (en) 2014-02-13

Similar Documents

Publication Publication Date Title
BR112015002451B1 (pt) Método implementado por computador em um ambiente de computação para depurar um processo alvo e ambiente de computação
US10795673B2 (en) Diagnosing production applications
BR112015002267B1 (pt) Método para analisar um processo em execução e sistema de computador
Viennot et al. Transparent mutable replay for multicore debugging and patch validation
Lantz et al. Yat: A validation framework for persistent memory software
Lin et al. Check-then-act misuse of java concurrent collections
US11243899B2 (en) Forced detaching of applications from DMA-capable PCI mapped devices
Muşlu et al. Making offline analyses continuous
US11500854B2 (en) Selective data synchronization to troubleshoot production environment failures
US9183122B2 (en) Automated program testing to facilitate recreation of test failure
US20080235668A1 (en) Operating system support for thread-level breakpoints
Cotroneo et al. Run-time detection of protocol bugs in storage i/o device drivers
US20200151085A1 (en) Efficient register breakpoints
Dovgalyuk et al. Don't panic: reverse debugging of kernel drivers
Shi et al. A command-level study of Linux kernel bugs
Van Der Kouwe et al. On the soundness of silence: Investigating silent failures using fault injection experiments
Altekar et al. Dcr: Replay debugging for the datacenter
Ottmann et al. An experimental assessment of inconsistencies in memory forensics
Serbanuta et al. Maximal causal models for multithreaded systems
Gatla et al. Understanding Persistent-memory-related Issues in the Linux Kernel
Moore et al. Charting a course through uncertain environments: SEA uses past problems to avoid future failures
Pillai Application Crash Consistency
US11531531B1 (en) Non-disruptive introduction of live update functionality into long-running applications
Botinčan et al. Safe asynchronous multicore memory operations
Ramos et al. When Amnesia Strikes: Understanding and Reproducing Data Loss Bugs with Fault Injection

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 01/08/2013, OBSERVADAS AS CONDICOES LEGAIS.