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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 344
- 230000008569 process Effects 0.000 title claims abstract description 317
- 238000011156 evaluation Methods 0.000 claims abstract description 78
- 230000000694 effects Effects 0.000 claims abstract description 21
- 230000006870 function Effects 0.000 claims description 49
- 230000000903 blocking effect Effects 0.000 claims 3
- 238000007689 inspection Methods 0.000 abstract description 17
- 230000001066 destructive effect Effects 0.000 abstract description 3
- 238000004891 communication Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000002955 isolation Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3096—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software 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
[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.
[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.
[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.
[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.
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)
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)
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 |
-
2012
- 2012-08-04 US US13/567,036 patent/US9710357B2/en active Active
-
2013
- 2013-08-01 EP EP13748216.2A patent/EP2880537B1/en active Active
- 2013-08-01 BR BR112015002451-3A patent/BR112015002451B1/pt active IP Right Grant
- 2013-08-01 WO PCT/US2013/053111 patent/WO2014025595A1/en active Application Filing
- 2013-08-01 CN CN201380041514.5A patent/CN104520820B/zh active Active
- 2013-08-01 EP EP19184392.9A patent/EP3591533A1/en active Pending
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. |