Visualizar e acessar tópicos no GDB

Visualizar e acessar tópicos no GDB
Outro nome para um depurador seria um utilitário de depuração. Ao identificar os problemas de código em diferentes fases de um sistema operacional ou criação de aplicativos, é considerado um programa de computador que pode aprimorar o processo de criação de um software. Uma execução de teste pode ser examinada por certos depuradores para determinar quais seções de código foram ignoradas. O GNU Debugger é uma das muitas ferramentas de depuração que estão disponíveis para programadores C e é a maior ferramenta de depuração. Ele oferece algumas ferramentas que deixam o usuário visualizar e avaliar um programa enquanto está sendo executado. Outra excelente funcionalidade de depuração é suportar muitas linguagens de programação, incluindo C, C ++, ADA, Fortron e Pascal. Os seguintes recursos estão disponíveis no GDB ao depurar os aplicativos com vários threads:
  • Ele pode enviar automaticamente notificações para tópicos recém -criados.
  • Ele fornece a capacidade de usar o comando Thread-no para alternar entre vários threads.
  • O comando "Info Threads" pode ser utilizado para descobrir se existem threads ativos.
  • Usando o comando “Aplicar o comando [Threadno] [All] args”, podemos enviar o mesmo comando para vários threads (ou uma inclinação de threads).
  • Para descobrir o que acontece quando o código do programa trava durante a execução, investiga dentro de seus aplicativos C C.
  • Somente os arquivos binários ou executáveis ​​criados durante o processo de compilação são compatíveis com o depurador do GDB.

Basta digitar o GDB na janela do terminal para acessar o GDB do seu sistema operacional no Ubuntu ou em qualquer outro sistema operacional baseado em Linux ou Unix. A captura de tela do comando gdb é mostrada na ilustração a seguir. Ele mostra os detalhes de direitos autorais do GDB. O prompt aberto do GDB indica as informações sobre quando está preparado para aceitar comandos. Em algumas configurações do GDB em que o sistema operacional permite os threads, esses recursos ainda não estão acessíveis. Essas instruções não têm impacto no GDB que não permite rosquear. Por exemplo, um sistema que não possui um suporte de thread ignora o resultado da consulta de "threads de informações" e ignora consistentemente a instrução de thread.

Você só precisa digitar o comando "Quit" no terminal GDB para sair e encerrar sua sessão atual do GDB. Você pode ver a instrução Quit no depurador do GDB, como mostrado no seguinte:

O depurador do GDB criou muitos comandos depuradores. Aqui estão alguns comandos de amostra listados que podemos tentar usar o depurador do GDB:

  1. Run ou R -> Conclui a execução do programa do início ao fim.
  2. quebra ou b -> é usado para colocar um ponto de interrupção em uma determinada linha ou frase.
  3. desativar -> desativa um ponto de interrupção que foi marcado anteriormente.
  4. Ativar -> Permite um ponto de interrupção desativado.
  5. Próximo ou n -> A próxima linha de código é executada, mas evite ir diretamente em funções.
  6. Etapa -> Você deve continuar para a próxima instrução e começar a concluir a função.
  7. Lista ou L -> Exibe o código completo do arquivo C.
  8. imprimir ou p -> é usado para imprimir o valor que foi salvo anteriormente.
  9. desistir ou q -> sai da tela do depurador do GDB.
  10. claro -> é usado para remover todos os pontos de interrupção marcados.
  11. Continue -> é usado para continuar a execução normal do programa.

Exemplo:
Aqui está um pequeno pedaço de código que usa vários threads, os cria com o método pthread_create e passa os métodos dos threads. O programa de amostra tem uma função principal () que cria dois tópicos na ilustração a seguir. Agora existem três tópicos em execução, incluindo o thread pai/original (original). A função Main () usa a função pthread_create () para criar os threads e chamá -los um após o outro.

O loop while é verificado no código a seguir para ver se o valor da variável Count1 é menor que 500. Se for, a declaração de impressão é executada para exibir uma string "Thread 1 está em execução" ao lado da variável de contagem. O tópico é unido imediatamente após o uso do comando pthread_ junção ().

Use os seguintes comandos listados para compilar o código usando o compilador GCC e visualize a atividade do Thread com o depurador do PIB. A imagem a seguir é uma captura de tela que mostra que o código anterior é compilado com sucesso:

GCC -G Multithreads.C -O Multithreads -lPtHread

Ao usar o Ubuntu 20.04 Sistema, digite o seguinte comando na tela do terminal para ver e examinar o tópico.

$ GDB ./Multithreads

Agora, estamos no modo de depuração do GDB, graças à janela do terminal. Para estabelecer os pontos de interrupção no principal, use o Thread Two e Thread três rotinas de cada thread recém -formado. Para inserir um ponto de interrupção, usamos o seguinte código listado. É um comando simples; Basta digitar o intervalo. Depois disso, escreva o nome dos métodos de thread para inserir os pontos de interrupção. Este método exibe o número da linha em que os pontos de interrupção foram adicionados após a entrada.

Para executar o programa, use a palavra -chave "run" ou simples "r" como um comando na tela do terminal. Uma visão geral dos tópicos do programa e algumas informações sobre sua condição atual são fornecidas pelos tópicos de informações de comando, pois você deve tomar nota de. Houve apenas um tópico iniciado neste caso até agora.

A execução deve continuar usando o seguinte comando:

Mais dois tópicos começam neste lugar. O tópico que está atualmente em foco é denotado por uma estrela. Além disso, o ponto de interrupção definido para os threads recém -formados em seus métodos de inicialização é alcançado - Thread dois () e Thread Three (), especificamente. Use o comando para mover o foco para outro tópico antes de iniciar uma depuração de thread real. Na linha 17 do seu thread de função dois, o thread 2 () é interrompido.

De acordo com a saída dos "threads de informações", thread dois imprime brevemente o balcão contagem2 e depois sai do Thread 2 na linha 17. Da mesma forma, podemos operar o thread "Thread_three" usando uma maneira bastante semelhante que utilizamos para o thread_two.

Conclusão

Para resumir, finalmente podemos usar o depurador do GDB em nosso Ubuntu 20.04 Sistema Linux. Para isso, explicamos seu uso no parágrafo introdutório e listamos alguns dos principais recursos que nos são fornecidos e o tornamos um depurador único.