Localize acesso à memória ruim no Solaris
-
18-09-2019 - |
Pergunta
No Linux, FreeBSD e outros sistemas que eu valgrind para verificar se há erros de memória como inválido lê e similar. Eu realmente amo valgrind. Agora tenho de código de teste no Solaris / OpenSolaris e não pode encontrar uma maneira de obter informações sobre inválido lê / escreve em um de maneira agradável (ou melhor ;-)) como valgrind lá.
Ao procurar por isso nos Acho referências líquidas para libumem , mas eu obter apenas relatórios sobre vazamentos de memória lá, não acesso inválido. O que eu estou ausente?
Solução
O dbx incluído com os compiladores do Sun Studio inclui acesso a verificação de memória de apoio em sua "Run Time Verificação" característica (o subcomando check
). Veja:
- Solaris Studio 12.4 dbx manual: Capítulo 9: Usando Runtime Verificação
- Depuração de Aplicações com dbx Sun Studio, dbxtool, ea linha Analyzer
- Weblog de Leonard Li: Verificação Runtime Memória
O relacionados "Sun memória de erros Discovery Tool" também está disponível Erro http://cooltools.sunsource.net/ Descubra /
Outras dicas
watchmalloc é um biblioteca bastante útil que pode ser carregado dinamicamente para o seu programa (geralmente sem necessidade de recompilação) e em seguida, define watchpoints em todos os locais de memória geralmente problemáticas, como espaços libertos ou após um bloco de memória alocada. Se o seu programa acessa uma dessas áreas inválidos que recebe um sinal e você pode inspecioná-lo no depurador.
Dependendo da configuração áreas problemáticas podem ser vistos para gravações somente, ou também para lê.
Desde a versão 3.11.0, Valgrind é executado em Solaris. Consulte Release Notes e Plataformas suportadas .
Mais precisamente, x86 / Solaris e amd64 / Solaris é agora suportado. Suporte para SPARC / Solaris ainda está em obras.