Skip to content

Commit 742d618

Browse files
docs: update README to add team contributions
1 parent 34e10f7 commit 742d618

File tree

1 file changed

+53
-18
lines changed

1 file changed

+53
-18
lines changed

README.md

Lines changed: 53 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,23 @@ O emulador pode ser usado de duas formas principais:
66

77
1. **Modo Script (Host):** Um script no seu computador que lança um contêiner descartável para cada erro.
88
2. **Modo Interativo (Contêiner):** Um contêiner que, ao ser iniciado, apresenta um menu para você escolher qual erro simular internamente.
9+
3. **Modo Automatizado (All-in-One):** O método mais simples e recomendado. Um único script (run.sh) constrói a imagem e executa o contêiner com todas as configurações necessárias.
910

1011
-----
1112

12-
## Requirements (Pré-requisitos)
13+
## Pré-requisitos
1314

1415
* [Docker](https://www.docker.com/products/docker-desktop/) instalado e em execução.
1516
* Um ambiente de terminal compatível com `bash`.
1617
* `git` para clonar o repositório.
1718

1819
-----
1920

20-
## Build (Construção das Imagens)
21+
## Construção das Imagens
2122

2223
Antes de executar, você precisa construir a imagem Docker. Escolha o modo de operação que deseja usar.
2324

24-
### Modo 1: Script no Host (Recomendado)
25+
### Modo 1: Script no Host
2526

2627
Esta imagem contém apenas os programas compilados. O script `error_emulator.sh` no seu computador irá gerenciá-la.
2728

@@ -36,34 +37,40 @@ docker build -t meus-programas-cpp .
3637
Esta imagem contém os programas compilados e também o script de menu, que é definido como o ponto de entrada principal.
3738

3839
```bash
39-
docker build -f Dockerfile.emulator -t emulador-interativo .
40+
# este comando usa o Dockerfile.emulator para criar a imagem completa
41+
docker build -f Dockerfile.emulator -t error_emulator .
4042
```
4143

4244
*(Note que usamos `-f Dockerfile.emulator` para especificar o arquivo de build)*
4345

4446
-----
4547

46-
## Run & Use (Execução e Uso)
48+
## Execução e Uso
4749

4850
### Modo 1: Usando o Script no Host
4951

50-
Este modo é ideal para executar erros específicos de forma rápida e isolada.
51-
52-
1. **Execute o script:**
52+
Este modo é ideal para executar erros específicos de forma rápida e isolada, sem o menu.
5353

54+
1. **Execute o erro desejado:**
5455
```bash
5556
docker run --rm -it error_emulator ./deadlock
5657
```
58+
*(Substitua `./deadlock` pelo executável do erro que deseja testar)*
5759

5860
### Modo 2: Usando o Menu Interativo no Contêiner
61+
Este modo é para quem deseja iniciar o contêiner manualmente. É útil para entender os passos que o script `run.sh` automatiza.
5962

60-
Este modo inicia um único contêiner que permanece ativo, permitindo que você execute vários testes dentro do mesmo ambiente.
61-
62-
1. **Inicie o contêiner interativo:**
63+
1. **Inicie o contêiner com as configurações necessárias:**
6364
```bash
64-
docker run --rm error_emulator
65+
docker run -it --rm --privileged error_emulator bash -c "echo 'core' > /proc/sys/kernel/core_pattern && ulimit -c unlimited && ./emulator.sh"
6566
```
66-
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.
67+
Este comando longo é necessário para:
68+
* `--privileged`: Dar permissão para alterar configurações do sistema.
69+
* `echo ...`: Configurar onde o `core dump` será salvo.
70+
* `ulimit ...`: Permitir a criação de `core dumps`.
71+
* `./emulator.sh`: Iniciar o menu.
72+
73+
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.
6774

6875
-----
6976

@@ -73,7 +80,7 @@ Este modo é a forma mais simples e profissional de executar a demonstração co
7380

7481
#### O Script "run.sh"
7582

76-
[cite\_start]O script `run.sh` automatiza todo o processo[cite: 1]:
83+
O script `run.sh` automatiza todo o processo:
7784

7885
```bash
7986
# este é o script que automatiza todo o processo.
@@ -104,14 +111,42 @@ echo "--> Emulador finalizado."
104111

105112
#### Como Usar este Modo
106113

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`
114+
1. Dê permissão de execução ao script `run.sh` e `emulator.sh`: `chmod +x run.sh && chmod +x emulator.sh`
115+
2. Execute o script para rodar o contêiner: `./run.sh`
109116

110117
#### Verificação do Core Dump
111118

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]:
119+
Para verificar a criação do arquivo `core` após a falha, siga estes passos em um segundo terminal:
113120

114121
* Liste os contêineres em execução: `docker ps`
115122
* Pegue o ID do seu contêiner.
116123
* 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`
124+
* Dentro do contêiner, verifique a existência do arquivo `core`: `ls core`
125+
126+
-----
127+
128+
## Contribuições da Equipe
129+
130+
Este projeto foi desenvolvido em equipe, com as seguintes responsabilidades:
131+
132+
* **Rauana Carvalho:**
133+
* Implementação do `buffer_overflow`
134+
* Implementação do `core_dumped`
135+
* Implementação do `deadlock`
136+
* Criação do script de automação (`run.sh`)
137+
* Elaboração da documentação (`README.md`)
138+
139+
* **Luís Eduardo Rocha:**
140+
* Implementação do `memory_leak`
141+
* Implementação do `race_condition`
142+
* Implementação do `stack_overflow`
143+
* Criação do repositório no GitHub
144+
145+
* **Rômulo Duarte:**
146+
* Implementação do `segmentation_fault`
147+
* Estruturação de pastas do projeto
148+
* Configuração do ambiente Docker (`Dockerfile`)
149+
* Criação do menu
150+
151+
* **Luís & Rômulo:**
152+
* Configuração do pipeline de CI/CD (GitHub Actions e AWS)

0 commit comments

Comments
 (0)