Clause
← Toda la documentación

El original en inglés ha cambiado desde que se hizo esta traducción, por lo que partes de ella pueden estar desactualizadas. Leer en inglés

Traducido del original en inglés · 1e3a39c8-dirty · 2026-10-26

Depuración de ejecutables

-g emite tablas de líneas del código fuente Erlang. Funcionan en todos los niveles de optimización y con --emit, con el enlazado posicional mediante -o y con los destinos de proyecto.

Tablas de líneas

Enlazado

-g pasa -g al driver de Clang. Los destinos MSVC también escriben un PDB que el ejecutable nombra solo por el nombre de archivo (/PDBALTPATH:%_PDB%); se publica junto al ejecutable como <name>.pdb, después del ejecutable, en la misma publicación diferida. Los ejecutables ELF conservan DWARF en su interior. Los ejecutables Mach-O necesitarían dsymutil sobre los objetos preparados antes de eliminar la preparación; no se ejecuta, así que los ejecutables de macOS pierden las tablas de líneas al enlazar.

Pila de llamadas de Erlang

El código generado pasa de una función a otra mediante transferencias de cola a través de la pila del proceso (modelo de ejecución), así que una traza nativa muestra la función Erlang actual y después el planificador (ProcessStack::run, Executor::work). Los marcos Erlang del proceso detenido los imprime la función auxiliar del runtime clause::runtime::debug_erlang_stack(), del más interno al más externo, como module:function/arity; lee el proceso en ejecución del hilo y los nombres compilados de los marcos, nunca las tablas de átomos del runtime:

(lldb) breakpoint set --file debug.erl --line 8
(lldb) run
* thread #1, stop reason = breakpoint 1.1
    frame #0: debug.exe`leaf at debug.erl:8
(lldb) expr -- clause::runtime::debug_erlang_stack()
  debug:leaf/1
  debug:middle/1
  debug:main/1

En GDB la llamada se escribe call clause::runtime::debug_erlang_stack() tras set language c++ (los marcos de código Erlang no tienen un lenguaje en el que GDB analice nombres de C++). Nombra los marcos twice () at /path/debug.hrl:5. Los ejecutables -Os pueden descartar la función auxiliar junto con otro código no referenciado.

Pruebas