Skip to content

Commit f6feb05

Browse files
Update panicking.md (#8)
* Update panicking.md traducción de panicking * Apply suggestion from @Phosphorus-M --------- Co-authored-by: Phosphorus Moscu <[email protected]>
1 parent 0c7cbbb commit f6feb05

File tree

1 file changed

+37
-48
lines changed

1 file changed

+37
-48
lines changed

src/start/panicking.md

Lines changed: 37 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,70 @@
1-
# Panicking
1+
# Produciendo un pánico (Panicking)
22

3-
Panicking is a core part of the Rust language. Built-in operations like indexing
4-
are runtime checked for memory safety. When out of bounds indexing is attempted
5-
this results in a panic.
3+
El pánico es una parte fundamental del lenguaje Rust. Las operaciones integradas, como la indexación,
4+
se someten a comprobaciones de seguridad de memoria en tiempo de ejecución. Cuando se intenta indexar fuera de los límites,
5+
esto provoca un pánico.
66

7-
In the standard library panicking has a defined behavior: it unwinds the stack
8-
of the panicking thread, unless the user opted for aborting the program on
9-
panics.
7+
En la biblioteca estándar, el pánico tiene un comportamiento definido: desenrolla la pila (stack) del hilo que entró en pánico, a menos que el usuario haya optado por abortar el programa cuando ocurre un pánico.
8+
9+
En programas sin biblioteca estándar, el comportamiento ante un pánico queda
10+
indefinido. Se puede definir un comportamiento declarando una función `#[panic_handler]`.
11+
Esta función debe aparecer exactamente *una vez* en el grafo de dependencias del programa,
12+
y debe tener la siguiente firma: `fn(&PanicInfo) -> !`, donde [`PanicInfo`]
13+
es una estructura que contiene información sobre la ubicación del pánico.
1014

11-
In programs without standard library, however, the panicking behavior is left
12-
undefined. A behavior can be chosen by declaring a `#[panic_handler]` function.
13-
This function must appear exactly *once* in the dependency graph of a program,
14-
and must have the following signature: `fn(&PanicInfo) -> !`, where [`PanicInfo`]
15-
is a struct containing information about the location of the panic.
1615

1716
[`PanicInfo`]: https://doc.rust-lang.org/core/panic/struct.PanicInfo.html
1817

19-
Given that embedded systems range from user facing to safety critical (cannot
20-
crash) there's no one size fits all panicking behavior but there are plenty of
21-
commonly used behaviors. These common behaviors have been packaged into crates
22-
that define the `#[panic_handler]` function. Some examples include:
18+
Dado que los sistemas embebidos abarcan desde sistemas de cara al usuario hasta sistemas críticos para la seguridad (que no pueden fallar), no existe un comportamiento de pánico universal, pero sí muchos comportamientos de uso común. Estos comportamientos comunes se han empaquetado en crates que definen la función `#[panic_handler]`. Algunos ejemplos son:
2319

24-
- [`panic-abort`]. A panic causes the abort instruction to be executed.
25-
- [`panic-halt`]. A panic causes the program, or the current thread, to halt by
26-
entering an infinite loop.
27-
- [`panic-itm`]. The panicking message is logged using the ITM, an ARM Cortex-M
28-
specific peripheral.
29-
- [`panic-semihosting`]. The panicking message is logged to the host using the
30-
semihosting technique.
20+
- [`panic-abort`]. El pánico provoca la ejecución de la instrucción de aborto.
21+
- [`panic-halt`]. Un pánico provoca que el programa, o el hilo actual, se detenga al entrar en un bucle infinito.
22+
- [`panic-itm`]. El mensaje de pánico se registra utilizando el ITM, un periférico específico para ARM Cortex-M.
23+
- [`panic-semihosting`]. El mensaje de pánico se registra en el host utilizando la técnica de semihosting.
3124

3225
[`panic-abort`]: https://crates.io/crates/panic-abort
3326
[`panic-halt`]: https://crates.io/crates/panic-halt
3427
[`panic-itm`]: https://crates.io/crates/panic-itm
3528
[`panic-semihosting`]: https://crates.io/crates/panic-semihosting
3629

37-
You may be able to find even more crates searching for the [`panic-handler`]
38-
keyword on crates.io.
30+
Es posible que encuentres aún más crates buscando la palabra clave [`panic-handler`] en crates.io.
3931

4032
[`panic-handler`]: https://crates.io/keywords/panic-handler
4133

42-
A program can pick one of these behaviors simply by linking to the corresponding
43-
crate. The fact that the panicking behavior is expressed in the source of
44-
an application as a single line of code is not only useful as documentation but
45-
can also be used to change the panicking behavior according to the compilation
46-
profile. For example:
34+
Un programa puede seleccionar uno de estos comportamientos simplemente vinculándolo al crate correspondiente.
35+
El hecho de que el comportamiento de pánico se exprese en el código fuente de
36+
una aplicación como una sola línea de código no solo es útil como documentación, sino que
37+
también se puede usar para cambiar el comportamiento de pánico según el perfil de compilación.
38+
Por ejemplo:
4739

4840
``` rust,ignore
4941
#![no_main]
5042
#![no_std]
5143
52-
// dev profile: easier to debug panics; can put a breakpoint on `rust_begin_unwind`
44+
// perfil de desarrollo: Es más fácil depurar los errores críticos; se puede establecer un punto de interrupción en `rust_begin_unwind`.
5345
#[cfg(debug_assertions)]
5446
use panic_halt as _;
5547
56-
// release profile: minimize the binary size of the application
48+
// Perfil de lanzamiento: minimizar el tamaño binario de la aplicación.
5749
#[cfg(not(debug_assertions))]
5850
use panic_abort as _;
5951
6052
// ..
6153
```
6254

63-
In this example the crate links to the `panic-halt` crate when built with the
64-
dev profile (`cargo build`), but links to the `panic-abort` crate when built
65-
with the release profile (`cargo build --release`).
55+
En este ejemplo, la crate enlaza con la crate `panic-halt` cuando se compila con el
56+
perfil de desarrollo (`cargo build`), pero enlaza con la crate `panic-abort` cuando se compila
57+
con el perfil de lanzamiento (`cargo build --release`).
6658

67-
> The `use panic_abort as _;` form of the `use` statement is used to ensure the `panic_abort` panic handler is
68-
> included in our final executable while making it clear to the compiler that we won't explicitly use anything from
69-
> the crate. Without the `as _` rename, the compiler would warn that we have an unused import.
70-
> Sometimes you might see `extern crate panic_abort` instead, which is an older style used before the
71-
> 2018 edition of Rust, and should now only be used for "sysroot" crates (those distributed with Rust itself) such
72-
> as `proc_macro`, `alloc`, `std`, and `test`.
59+
> La forma `use panic_abort as _;` de la instrucción `use` se
60+
> utiliza para asegurar que el manejador de pánico `panic_abort` se incluya en nuestro ejecutable final, dejando claro al compilador que no utilizaremos explícitamente nada de la crate.
61+
> Sin el cambio de nombre `as _`, el compilador advertiría de una importación no utilizada.
62+
> En ocasiones, se puede encontrar `extern crate panic_abort`, un estilo antiguo utilizado antes de la edición de Rust de 2018,
63+
> y que ahora solo debe usarse para crates "sysroot" (los que se distribuyen con Rust), como `proc_macro`, `alloc`, `std` y `test`.
7364
74-
## An example
65+
## Un ejemplo
7566

76-
Here's an example that tries to index an array beyond its length. The operation
77-
results in a panic.
67+
Aquí tienes un ejemplo que intenta acceder a un índice de un array más allá de su longitud. La operación resulta en un error grave.
7868

7969
```rust,ignore
8070
#![no_main]
@@ -94,14 +84,13 @@ fn main() -> ! {
9484
}
9585
```
9686

97-
This example chose the `panic-semihosting` behavior which prints the panic
98-
message to the host console using semihosting.
87+
Este ejemplo eligió el comportamiento `panic-semihosting` que imprime el mensaje de pánico
88+
en la consola del host utilizando semihosting.
9989

10090
``` text
10191
$ cargo run
10292
Running `qemu-system-arm -cpu cortex-m3 -machine lm3s6965evb (..)
10393
panicked at 'index out of bounds: the len is 3 but the index is 4', src/main.rs:12:13
10494
```
10595

106-
You can try changing the behavior to `panic-halt` and confirm that no message is
107-
printed in that case.
96+
Puedes intentar cambiar el comportamiento a `panic-halt` y confirmar que no se imprime ningún mensaje en ese caso.

0 commit comments

Comments
 (0)