Recomendado
Durante os últimos dias, alguns usuários terão encontrado um erro ao trabalhar com cada despejo de depuração do cygwin. Vários fatores podem causar essa crise. Agora vamos falar sobre alguns deles.
Recomendado
O seu PC está lento? Você tem problemas ao iniciar o Windows? Não se desespere! Fortect é a solução para você. Esta ferramenta poderosa e fácil de usar diagnosticará e reparará seu PC, aumentando o desempenho do sistema, otimizando a memória e melhorando a segurança no processo. Então não espere - baixe o Fortect hoje mesmo!
Primeiro: você deve compilar seu programa transmitindo o sinalizador gcc -ggdb
, caso contrário, as informações de despejo de pilha complementares são desnecessárias. Também sugira cortar a busca por -O0
para torná-lo mais fácil de depurar com gdb, pois este código promocional não será otimizado.
Segundo: todos os despejos de pilha retornam endereços que são dessa pilha,no exemplo do modelo de 32 bits, cada um tem dois endereços:
$ puma t-invmod.exe.stackdumpRastreamento de lote:A função de esqueleto args0028C878 61032BCB (000000F4, 0000EA60, 000000A4, 0028C8D8)0028C998 610E7A7A (00000001, 0028CA3F, 00000001, 611A2C80)
O endereço pode ser obtido em seus tutoriais ou bibliotecas carregadas em uso.
addr2line.exe -a 610E7A7A -a 61032BCB -e /usr/bin/cygwin1.dll0x610e7a7a/usr/src/debug/cygwin-2.5.1-1/winsup/cygwin/cygerrno.h:360x61032bcb/usr/src/debug/cygwin-2.5.1-1/winsup/cygwin/cygerrno.h:35
Nesse caso, todo o endereço principal me explicou que a falha ocorreu na biblioteca exibida e não no programa. Você pode usar ldd
para determinar qual pertence a:
$ ldd t-invmod.exe ntdll.dll => /cygdrive/c/Windows/SysWOW64/ntdll.dll (0x776d0000) kernel32.dll => /cygdrive/c/Windows/syswow64/kernel32.dll (0x75500000) KERNELBASE.dll => /cygdrive/c/Windows/syswow64/KERNELBASE.dll (0x75a10000) SYSFER.DLL => /cygdrive/c/Windows/SysWOW64/SYSFER.DLL (0x73480000) cygflint.dll => /usr/bin/cygflint.dll (0x5f390000) cygwin1.dll => /usr/bin/cygwin1.dll (0x61000000) cyggmp-10.dll => /usr/bin/cyggmp-10.dll (0x589e0000) cygmpfr-4.dll => /usr/bin/cygmpfr-4.dll (0x51080000) cyggcc_s-1.dll => /usr/bin/cyggcc_s-1.dll (0x5ece0000) cygntl-9.dll => /usr/bin/cygntl-9.dll (0x50270000) cygstdc ++ 1) 6.dll => /usr/bin/cygstdc++-6.dll (0x4b340000)
Se o endereço for considerado menor que dll, ele pertence ao seu programa recente; Se for parte de um estudo, você precisará instalar o pacote * in comparation debuginfo para restaurar todas as informações de localização.
Quando um processo humano não funciona como esperado, esta ferramenta geralmente contém um “bug”.há uma apresentação, normalmente algo está errado com a preparação em si, ou seja,levar a resultados inesperados ou mesmo ao fracasso. Diagnosticar esses erros, pessoas eO anexo é chamado por ferramentas exclusivasDebugger. Operador Cygwin, depuradoré GDB, que significa GNU DeBugger. Uma ferramenta com a qual você pode formular seuPrograme em um ambiente controlado onde você também pode usarO estado do seu programa, mesmo se ele estiver em execução ou após uma falha.Programas defeituosos de vez em quando criam arquivos “kernel”. No Cygwin éarquivos de mensagem de texto regulares ii com os quais o GDB não pode ir diretamente
Antes de depurar seu programa pessoal, o público deve terPrograma de depuração. O que você precisa é adicionar -g
para outros sinalizadores que a maioria de vocês usará ao compilar os fontes.Você está diretamente para os objetos.
Isso definitivamente adiciona estratégias adicionais para objetos específicos (eles obtêmdemais) mais, que tipo de costuma informar o depurador de avaliações de linha, variável específicaNomes e outras coisas úteis. Depurar esses símbolos de desistênciaInformação e criação de seu programa são muitas informações sobre seu programa originalFontes, então o depurador normalmente torna mais fácil depurar paratu.
Para criar um GDB, basta digitar gdb myapp.exe emLinha de comando. Muito texto é exibido para ajudá-lo a informá-lo sobre tudo ao seu redorentão (gdb)
aparece, pedindo uma escritaPedidos Sempre que você gosta deste prompt, significa que o GDB está esperando porpara que você possa inserir seu comando encontrado atual, por exemplo, executar ouAjudar. Ops, :-)
imprimirAjude a obter serviço de entrega para o qual você pode usar versões, ouLeia um novo [Guia do Usuário GDB] paraDescrição do GBB durante seu uso.
Quando sua preparação entra em colapso e você tenta imaginar sobre issocaiu porque é a melhor corrida criada e então deixe irSeu programa está em execução. Depois que essa situação travar, você pode digitaronde se você quiser pensar sobre onde ele caiu, ouInformações sobre residências localizadas para ver os valores de quase residentesVariáveis. Há também uma impressão confiável que pode ser obtida para você verpara variáveis individuais ou da maioria da posição dos ponteiros.
Se o seu programa estava fazendo algo perigoso, você podebreak Use uma direção para dizer ao GDB para parar o seu item de software quandoatinge um trabalho específico ou porcentagem de linha:
Se você executar agora naturalmente, seu programa provavelmente pararáonde os especialistas afirmam um “ponto de interrupção” e você vai usar outros comandos gdb para auo estado vinculado ao seu programa no qual você está modificando componentes, eSiga as instruções do programa passo a passoTempo.
Preste atenção, pois você pode fornecer muitos problemas adicionais paraExecute o comando apologize na linha de comando paraSeu programa. Esses dois bolsos são iguais simplesmente porque um programaafetado:
bash $
gcc -g -O2 -c myapp.c bash $
gcc -g myapp.c -a myapp (gdb)
my_function (gdb)
parada temporária 47 bash $
myprog -t foo –queue 47 bash $
gdb myprog (gdb)
put -t foo –queue 47
Cygwin Debug Stackdump
Zrzut Stosu Debugowania Cygwin
Stackdump De Depuracion Cygwin
Cygwin Debug Stackdump
Cygwin Debug Stackdump
Cygwin Debogage Stackdump
Damp Steka Otladki Cygwin
Cygwin Debug Stackdump
Cygwin Debuggen Stackdump
Cygwin 디버그 스택 덤프