Usuário:Luizdl/Testes: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
texto trocado por '{{citar conferência|título=teste|conferencia=conferência|conferencia-url=http://www.teste.com}}'
Etiqueta: Substituição
Linha 1:
{{citar conferência|título=teste|conferencia=conferência|conferencia-url=http://www.teste.com}}
[[Imagem:Magnetic core.jpg|right|thumb|250|O despejo de memória tem esse nome devido as antigas tecnologias de memória usando pequenos núcleos magnéticos mostrados aqui ampliados 50 vezes.]]
Em [[computação]], um '''despejo de núcleo''', '''despejo de travamento''', '''despejo de memória''' ou '''despejo de sistema'''<ref>{{cite web|title=AIX 7.1 information|url=http://pic.dhe.ibm.com/infocenter/aix/v7r1/index.jsp}}</ref> consiste do estado gravado da [[memória]] de trabalho de um [[programa de computador]] em um momento específico, geralmente quando o programa [[Travamento|trava]] ou quando foi encerrado de maneira anormal.<ref>{{man|4|core|Solaris|Process core file}}</ref> Na prática, outras partes importantes do [[Troca de contexto|estado do programa]] são geralmente despejadas no mesmo momento, incluindo os [[Registrador (informática)|registros do processador]], que podem incluir o contador de programa e o ponteiro da pilha, informações de gerenciamento de memória e outros sinalizadores e informações do processador e do sistema operacional. Um '''despejo instantâneo''' ('''snapshot dump''' ou '''snap dump''') é um despejo de memória solicitado pelo [[Operador de computador|operador do computador]] ou pelo programa em execução, após o qual o programa pode continuar. Os despejos de núcleo são usados ​​frequentemente para auxiliar no diagnóstico e na [[depuração]] de erros em programas de computador.
 
O nome vem da [[memória de núcleo magnético]],<ref>[[Oxford English Dictionary]], ''s.v.'' 'core'</ref> a principal forma de [[memória de acesso aleatório]] das décadas de 1950 a 1970. O nome permaneceu por muito tempo depois que a tecnologia do núcleo magnético se tornou obsoleta.
 
Em muitos sistemas operacionais, um [[erro fatal]] em um programa aciona automaticamente um despejo de núcleo. Por extensão, a frase "despejar o núcleo" passou a significar, em muitos casos, qualquer erro fatal, independentemente de um registro dos resultados da memória do programa. O termo "despejo de núcleo", "despejo de memória", ou apenas "despejo", também se tornou um jargão para indicar qualquer armazenamento de uma grande quantidade de dados brutos para um exame mais aprofundado ou outros propósitos.<ref>{{cite web|url=http://www.techopedia.com/definition/23340/database-dump|title=What is a Database Dump? - Definition from Techopedia|author=Cory Janssen|work=Techopedia.com|accessdate=29 de junho de 2015}}</ref><ref>{{cite web|url=https://www.sophos.com/en-us/support/knowledgebase/111474.aspx|title=How to configure a computer to capture a complete memory dump|date=12 de julho de 2010|work=sophos.com|accessdate=29 de junho de 2015}}</ref>
 
== Contexto ==
Os primeiros despejos de núcleo foram impressões de papel<ref>{{cite web|title=storage dump definition|url=http://encyclopedia2.thefreedictionary.com/storage+dump}}</ref> do conteúdo da memória, normalmente organizadas em colunas de números [[Sistema octal|octais]] ou [[Hexadecimal|hexadecimais]] (um "[[hex dump]]"), às vezes acompanhadas de suas interpretações como instruções em linguagem de máquina, cadeias de texto ou decimais ou números de pontos flutuantes (''cf''. [[desmontador]]).
 
À medida que os tamanhos de memória aumentavam e os utilitários de análise [[post mortem]] eram desenvolvidos, os despejos eram gravados em mídias magnéticas como fita ou disco.
 
Em vez de exibir apenas o conteúdo da memória aplicável, os sistemas operacionais modernos geralmente geram um arquivo contendo uma imagem da memória pertencente ao processo travado, ou as imagens de memória de partes do [[Espaço de endereçamento|espaço de endereço]] relacionadas a esse processo, juntamente com outras informações como os valores de registros do processador, contador de programas, sinalizadores do sistema e outras informações úteis para determinar a causa raiz do travamento. Esses arquivos podem ser visualizados como texto, impressos ou analisados ​​com ferramentas especializadas como o [[elfdump]] em sistemas [[Unix]] e [[tipo Unix]], [[objdump]] e [[kdump]] no [[Linux]], [[WinDbg]] no [[Microsoft Windows]], [[Valgrind]] ou outros depuradores.
 
Arquivos modernos de despejo de núcleo e mensagens de erro normalmente usam codificação hexadecimal, já que as representações decimal e octal são menos convenientes para o programador.
 
== Usos do despejo de memoria ==
Despejos de memória podem servir como úteis assistentes de depuração em muitas situações. No início dos sistemas batch, despejos de memória eram forçados pelo usuário para depurar um programa sem monopolizar os (muito caros) programas de depuração. Uma impressão poderia ser mais conveniente que depurar usando interruptores e lâmpadas. Em computadores compartilhados, seja de tempo compartilhado, processamento batch ou servidores, despejos de memória permitem uma depuração offline do [[sistema operacional]], então esse sistema pode voltar à operação imediatamente. Despejos de memória permite a um usuário salvar um erro para posterior análise ou comparação com outros erros. Para computadores embarcados é impraticável a [[depuração]] no computador em si, então a análise de um despejo precisa ser feito em um computador diferente. Alguns sistemas operacionais como as primeiras versões do [[Unix]] não davam suporte para depuradores acoplados na execução de processos, então os despejos de memória são necessário para rodar um depurador no conteúdo de memória do processo. Despejos de memória podem ser usadas para capturar dados liberados durante uma [[alocação dinâmica de memória]] e podem também ser usados para recuperar informações de um programa que não está mais rodando. Na ausência de um depurador interativo, o despejo de memória pode ser usado por programadores experientes para determinar o erro para examinação direta.
 
Um despejo de memória representa o conteúdo completo da região despejada do espaço de memória do processo. Dependendo do sistema operacional, o despejo pode conter algumas ou nenhuma estrutura de dados para ajudar a interpretação das regiões da memória. Nesses sistemas, uma interpretação bem-sucedida exige que o programa ou usuário entenda a estrutura de uso da memória do programa.
 
Um depurador pode usar um [[tabela de símbolos]], se existir uma, para ajudar o programador a interpretar os despejos, identificando variáveis simbólicas e exibindo o código fonte. Se a tabela de símbolos não estiver disponível, menos interpretação do despejo é possível, mas isso pode ser o suficiente para determinar a causa do problema. Também existem ferramentas para especializada chamada [[Analisadores de Despejo]] para analisar o erro.
 
Nos sistemas operacionais modernos baseados em Unix, administradores e programadores podem ler o despejo de memória usando a biblioteca GNU [[Binutils Binary File]] Descriptor (BFD) e o [[GNU Debugger]] (gdb) e objdump que usa essa mesma biblioteca. Essas bibliotecas irão fornecer os dados cru para um dado endereço na região do despejo de memória. Isso não mostra nada sobre variáveis ou estrutura de dados naquela região da memória, então a aplicação usará a biblioteca para ler o despejo de memória e terá que determinar o espaço de endereçamento das variáveis e o layout das estrutura de dados, por exemplo, utilizando a tabela de símbolos para o programa sofrendo a depuração.
 
Analistas de despejo de memória nos sistemas Linux podem usar o kdump ou o Linux Kernel Crash Dump (LKCD).<ref>{{citar livro
|último = Venkateswaran
|primeiro = Sreekrishnan
|título= Essential Linux device drivers
|url= http://books.google.com/books?id=Boo57V0IOq0C
|acessodata= 2010-07-15
|series= Prentice Hall open source software development series
|ano= 2008
|publicado= Prentice Hall
|isbn= 9780132396554
|páginas= 623,714
|citação= Until the advent of kdump, ''Linux Kernel Crash Dump'' (LKCD) was the popular mechanism to obtain and analyze dumps.
}}</ref>
 
Despejos de memória podem salvar o contexto (estado) de um processo e retornar esse estado depois. Sistemas podem ser feito altamente disponíveis para transferir o núcleo entre processadores, algumas vezes arquivos despejo de memória via eles mesmo.
 
Núcleos também podem ser despejados e um host remoto via rede.<ref>{{citar livro
|autor = Fedora Documentation Project
|título= Fedora 13 Security Guide
|url= http://books.google.com/books?id=bh6LSvafC28C
|acessodata= 2010-09-29
|ano= 2010
|publicado= Fultus Corporation
|isbn= 9781596822146
|páginas= 63,112
|citação= Remote memory dump services, like <code>netdump</code>, transmit the contents of memory over the network unencrypted.
}}</ref>
 
== Arquivos de Despejo de Memória ==
=== Formato ===
Nos antigos e simples sistemas operacionais, cada processa tinha um espeça de endereçamento adjacente, então um arquivo despejo de memória era simplesmente um arquivo binário com a sequência desses bytes ou palavras. Nos sistemas operacionais modernos, um espaço de endereçamento pode ter espaços e compartilhar páginas com outros processos ou arquivos, então as mais elaboradas representações são usadas. Elas podem incluir outras informações sobre o estado do programa no momento do despejo.
 
Nos sistemas baseados em [[Unix]], despejos de memória geralmente usam o padrão [[executável]] de [[formato de arquivos]]:
 
* [[a.out]] nas antigas versões do Unix,
* [[ELF]] nos Linux modernos, System V, Solares e sistemas BSD,
* Mach-O no Mac OS.
 
=== Nomeando ===
* Despejos de memória de processos do usuário geralmente são criados como "<code>core</code>".
* Despejos de sistemas amplos em baseados em Unix mais modernos frequentemente aparece como "<code>vmcore</code>" ou como "<code>vmcore.incomplete</code>".
* Sistemas como Micrsoft Windows que usam extensões de arquivo pode usar a extensão ".dmp" (ex: "<code>memoria.dmp</code>" ou <code>"Minidump\Mini051509.dmp</code>")
 
== Referências ==
{{Reflist|group=NB}}
{{Reflist}}
 
== Ligações externas ==
Descrição para formato de arquivos:
* {{Link||2=http://msdn2.microsoft.com/en-us/library/ms680378(VS.85).aspx |3=Minidump Files}}
* {{Link||2=http://www.rt-embedded.com/blog/archives/enabling-core-dumps-in-embedded-systems/ |3=Enabling core dumps in embedded systems |4=- An article from the Real-Time embedded blog.}}
 
== Ver também ==
* [[Falha de segmentação]]
* [[Debug]]
 
{{DEFAULTSORT:Core Dump}}
[[Categoria:Depuração]]