GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo funciona un depurador en Linux?

Hay una llamada al sistema llamada ptrace. Toma 4 parámetros:la operación, el PID del proceso de destino, una dirección en la memoria del proceso de destino y un puntero de datos. La forma en que se usan los últimos 2 parámetros depende de la operación.

Por ejemplo, puede adjuntar/separar su depurador a un proceso:

ptrace(PTRACE_ATTACH, pid, 0, 0);
...
ptrace(PTRACE_DETACH, pid, 0, 0);

Ejecución de un solo paso:

ptrace(PTRACE_ATTACH, pid, 0, 0);
int status;
waitpid(pid, &status, WSTOPPED);
while (...) {
    ptrace(PTRACE_SINGLESTEP, pid, 0, 0);
    // give the user a chance to do something
}
ptrace(PTRACE_DETACH, pid, 0, 0);

También puede leer/escribir la memoria del proceso de destino con PTRACE_PEEKDATA y PTRACE_POKEDATA. Si desea ver un ejemplo real, consulte gdb.


Linux
  1. Linux:¿cómo funciona el promedio de carga con las CPU modernas?

  2. Ssh:¿cómo funciona TCP-keepalive en Ssh?

  3. ¿Cómo funciona internamente copy_from_user del kernel de Linux?

  4. ¿Cómo funciona Rm? ¿Qué hace Rm?

  5. ¿Cómo funciona realmente sig_atomic_t?

Linux:¿cómo funciona la pantalla de Linux?

¿Qué es el comando fuente en Linux y cómo funciona?

¿Cómo funciona el intercambio de memoria en Linux?

¿Cómo funciona el comando ps?

¿Cómo funciona una GUI de Linux en el nivel más bajo?

¿Cómo funciona la pantalla de Linux?