GNU/Linux >> Znalost Linux >  >> Linux

Jak funguje debugger v Linuxu?

Existuje systémové volání s názvem ptrace. Vyžaduje 4 parametry:operaci, PID cílového procesu, adresu v paměti cílového procesu a datový ukazatel. Způsob použití posledních 2 parametrů závisí na operaci.

Například můžete připojit/odpojit svůj debugger k procesu:

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

Provedení v jednom kroku:

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);

Můžete také číst/zapisovat paměť cílového procesu pomocí PTRACE_PEEKDATA a PTRACE_POKEDATA. Pokud chcete vidět skutečný příklad, podívejte se na gdb.


Linux
  1. Jak Awk ‚!a[$0]++‘ funguje?

  2. Jak Sticky Bit funguje?

  3. Linux – Jak funguje průměrná zátěž u moderních procesorů?

  1. Jak funguje příkaz 'ls' v Linuxu/Unixu?

  2. Jak vlastně sig_atomic_t funguje?

  3. ZFS pod Linuxem, funguje to?

  1. Ssh – Jak funguje Tcp-keepalive v Ssh?

  2. Jak funguje alokace zásobníku v Linuxu?

  3. Jak funguje rozhraní zpětné smyčky