.
Você pode compilar seu projeto no NetBeans de duas formas diferentes: modo
Debug e modo
Release. A diferença entre eles é que no modo Debug seu projeto é compilado de uma forma que disponibiliza informações extras para permitir uma melhor avaliação do seu funcionamento e principalmente a caça de bugs (definição de pontos de parada na execução, verificação "on the fly" dos valores das variáveis, etc).
Vamos verificar na prática. Crie um novo projeto:
file | new project
categories: c/c++
projects: c/c++ application
[next]

project name: teste
[finish]

O NetBeans cria, por default, um diretório com o nome do seu projeto debaixo do diretório NetBeansProjects. Utilize seu navegador de arquivos e confira que dentro deste diretório "teste" só tem um único subdiretório, denominado "nbproject".
Vamos adicionar um arquivo com código-fonte em C:
file | new file
categories: c files
file types: main C file
[next]

Na próxima tela, apenas [finish]

Digite o seguinte programa:
#include stdio.h
#include stdlib.h
[nota: alguém sabe pq o blogger não deixa usar maior e menor??]
int main(int argc, char** argv)
{
int A, B, C;
A = 1;
B = 2;
C = 3;
printf(" %d - %d - %d ", A, B, C);
return (EXIT_SUCCESS);
}

A definição da forma de compilação é feita através do menu "build" :
build | set main project configuration | Debug ou Release

Escolha "release", e depois compile o projeto:
build | build main project
Utilize novamente o gerenciador de arquivos e olhe o interior do diretório "teste". Surgiram dois novos subdiretórios: "build" e "dist". No interior deste último, foi criado o diretório "release", contendo mais um subdiretório (gnu-linux-x86) e dentro dele o arquivo executável gerado por nossa compilação. O nome "release" não apareceu a toa, indica que compilamos nosso projeto no modo "release". Para finalizar esta etapa, anote o tamanho do arquivo executável que foi gerado (no meu caso, 6.3 KB).
Volte ao NetBeans, e escolha o modo de compilação "debug":
build | set main project configuration | Debug
E novamente compile o projeto:
build | build main project
Vamos olhar novamente o interior do diretório "dist". Foi criado agora o diretório "Debug", contendo o executável gerado pela compilação no modo "Debug" (novamente dentro de gnu-linux-x86). Vejamos o tamanho do arquivo executável: 7.3 KB.
Porque maior? Por que, como falei no início, no modo debug o executável é gerado com recursos extras que permitirão executar atividades de debug, tais como definição de pontos de parada, verificação do conteúdo das variáveis ENQUANTO O PROGRAMA ESTIVER RODANDO, etc.
Vamos ver isso funcionando ao vivo e a cores: Vamos definir um ponto de parada. Isso é feito clicando no número da linha onde se deseja que a execução pare. Vamos clicar na linha 8, onde atribuímos o valor 1 à variável A. Vai aparecer uma caixinha vermelha onde antes era o número da linha, e toda a linha ficará destacada em vermelho. Isso indica que a execução vai parar ANTES da execução desta linha.

Para executar o programa utilizando as informações extras de debug, utilize:
run | debug main project
A execução vai iniciar... e nada vai aparecer no terminal, porque o programa parou na linha que indicamos. Volte para a janela principal do NetBeans, e note o indicador estilo "supermáquina" ou "visor cylon" (depende da sua idade...) no canto inferior direito da janela. Isto indica que o programa está em execução, apenas está parado temporariamente. No código fonte, a linha onde o programa está parado fica verde.
Ainda olhando para o canto inferior direito da janela, note uma caixa com as variáveis A, B, C e seus valores, que devem ser os mais loucos possíveis. Isso acontece porque paramos o programa em um momento em que as variáveis foram criadas, mas nenhum valor foi (ainda) atribuído a elas, ou seja, elas estão com os valores aleatórios que toda variável em C recebe assim que é criada (na verdade, a variável não "recebe" nada; ela é associada a uma posição de memória que está com um valor qualquer, ou aleatório gerado quando o computador foi ligado, ou deixado por algum programa anterior).

Um dos recursos disponíveis para nós é a execução passo-a-passo do programa. Podemos mandar o NetBeans executar a próxima linha, e verificar as mudanças nos valores das variáveis (e desta forma, avaliar se o programa está fazendo as coisas corretamente!). Para isso, clique no botão com uma caixa azul e uma seta amarela apontando para baixo (o tooltip indica "step into"), ou vá no menu run | step into, ou simplesmente tecle F7.

A linha verde avançou para a próxima linha, isto é, ele executou o "A = 1". Isto também pode ser notado pela alteração do valor da variável A no box de variáveis.
Pode-se prosseguir assim passo a passo, ou pode-se mandar continuar a execução normalmente (teclando F5, clicando no botão com a seta "play" verde, ou menu run | continue). Note que podemos definir vários pontos de parada no programa.
Mais um teste para finalizar: mude o modo de compilação para "release":
build | set main project configurarion | release
Não precisamos recompilar, pois não mudamos o programa desde que geramos a versão release no início deste post. Vamos então tentar rodar esta versão release no modo debug:
run | debug main project
Necas! Ele ignorou nosso ponto de parada, pois o executável do tipo
Release não está preparado para realizar debug.
Um último comentário, a janela de variáveis é bem interessante, pois mostra o conteúdo de membros de estruturas, valores de ponteiros, até mesmo valores de áreas alocadas dinamicamente (simulando um vetor a partir do ponteiro com o endereço inicial). Enfim, um recurso bem interessante pra quem não aguenta mais ficar colocando 'printf' no meio do programa.... (e geralmente esquecendo de tirar alguns deles no final!!)
Abraços a todas e a todos!
Carlão