Instalação e Uso de Debugger e Valgrind no macOS
Esse é um curto tutorial para instalar e usar um debugger e o Valgrind no macOS, principalmente para máquinas com processador arm64 (como o chip M1). A ideia é mais prover links de tutoriais das partes necessárias do que dar todos os detalhes.
Clang e LLDB
O caminho mais fácil para compilar e debuggar no macOS é através do clang e do lldb ao invés de usar o gcc e o gdb. Para instalá-los, basta instalar o Xcode Command Line Tools através do seguinte comando no terminal:
xcode-select --install
A partir deste ponto, se você escrever gcc no terminal, na verdade você estará utilizando o clang.
Agora já é possível debuggar um programa com o lldb no terminal de forma parecida como é feito com o gdb no terminal.
Um tutorial muito inicial de como usar o lldb está nesse link. Aqui você encontra um tutorial mais completo. Talvez ajude também ver o meu tutorial de gdb.
É totalmente possível debuggar diretamente no terminal. Eu mesmo já fiz muito isso, basta aprender os comandos e ele inclusive vai mostrando o trecho do código em que está.
Mas é mais fácil usar o debugger no Visual Studio Code. Para isso, instale o plugin CodeLLDB.
Para cada projeto que você for fazer (tarefa/laboratório da disciplina), você precisará também criar uma pasta chamada .vscode com dois arquivos dentro: launch.json e tasks.json.
Você precisa alterar o seguinte trecho do arquivo launch.json para trocar exemplo
pelo nome do seu executável:
"program": "exemplo"
Isso deve fazer que o lldb funcione no seu projeto.
Valgrind
Aparentemente, ainda não é possível usar o Valgrind de maneira fácil no macOS com processador arm64. Existe uma outra ferramenta chamada leaks que parece ser a forma mais fácil de detectar vazamentos de memória.
Outra forma possível é usar o valgrind utilizando Docker. Basta seguir esse tutorial. O bom dessa alternativa é que você pode também usar o gdb e o gcc se quiser. Mas não é algo integrado com o VSCode.
Vídeo
Este é um vídeo indicado por uma aluna da disciplina que foi útil para ela.