Skip to content

Commit 34e10f7

Browse files
docs: update README for automated workflow
1 parent 98f42c1 commit 34e10f7

File tree

1 file changed

+51
-2
lines changed

1 file changed

+51
-2
lines changed

README.md

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ Este modo é ideal para executar erros específicos de forma rápida e isolada.
5252
1. **Execute o script:**
5353

5454
```bash
55-
docker run --rm error_emulator ./deadlock
55+
docker run --rm -it error_emulator ./deadlock
5656
```
5757

5858
### Modo 2: Usando o Menu Interativo no Contêiner
@@ -65,4 +65,53 @@ Este modo inicia um único contêiner que permanece ativo, permitindo que você
6565
```
6666
O menu aparecerá imediatamente, sendo executado de dentro do próprio contêiner. Para parar a simulação e o contêiner, escolha a opção `q` no menu.
6767

68-
-----
68+
-----
69+
70+
### Modo 3: Fluxo de Trabalho Automatizado (All-in-One)
71+
72+
Este modo é a forma mais simples e profissional de executar a demonstração completa de erros que exigem permissões especiais, como o `core_dumped`. Ele automatiza a construção e a execução do contêiner, além da configuração interna necessária, em um único comando.
73+
74+
#### O Script "run.sh"
75+
76+
[cite\_start]O script `run.sh` automatiza todo o processo[cite: 1]:
77+
78+
```bash
79+
# este é o script que automatiza todo o processo.
80+
81+
# --- etapa 1: Construir a Imagem Docker ---
82+
# o script primeiro garante que a imagem 'emulator' está construída e atualizada.
83+
echo "--> Etapa 1/2: Construindo/Verificando a imagem Docker 'emulator'..."
84+
docker build -f Dockerfile.emulator -t error_emulator . > /dev/null
85+
86+
# verifica se a construção da imagem falhou
87+
if [ $? -ne 0 ]; then
88+
echo "ERRO: A construção da imagem Docker falhou. Abortando."
89+
exit 1
90+
fi
91+
92+
# --- etapa 2: executar o contêiner com todos os comandos necessários ---
93+
# agora, ele inicia o contêiner e passa uma única "super-string" de comandos
94+
# para serem executados lá dentro, em ordem.
95+
echo "--> Etapa 2/2: Iniciando o contêiner e o emulador..."
96+
docker run -it --rm --privileged error_emulator bash -c " \
97+
echo 'core' > /proc/sys/kernel/core_pattern && \
98+
ulimit -c unlimited && \
99+
./emulator.sh \
100+
"
101+
102+
echo "--> Emulador finalizado."
103+
```
104+
105+
#### Como Usar este Modo
106+
107+
1. [cite\_start]Dê permissão de execução ao script `run.sh`[cite: 1]: `chmod +x run.sh`
108+
2. [cite\_start]Execute o script para rodar o contêiner[cite: 1]: `./run.sh`
109+
110+
#### Verificação do Core Dump
111+
112+
[cite\_start]Para verificar a criação do arquivo `core` após a falha, siga estes passos em um segundo terminal (PowerShell, por exemplo)[cite: 1]:
113+
114+
* Liste os contêineres em execução: `docker ps`
115+
* Pegue o ID do seu contêiner.
116+
* Entre no contêiner usando o ID obtido: `docker exec -it <ID_DO_CONTAINER> bash`
117+
* Dentro do contêiner, verifique a existência do arquivo `core`: `ls core`

0 commit comments

Comments
 (0)